gildor
09/23/2019, 9:09 AMursus
09/23/2019, 9:11 AMursus
09/23/2019, 9:12 AMgildor
09/23/2019, 9:13 AMgildor
09/23/2019, 9:14 AMgildor
09/23/2019, 9:14 AMursus
09/23/2019, 9:14 AMursus
09/23/2019, 9:18 AMRuckus
09/23/2019, 1:42 PMursus
09/23/2019, 9:07 PMState {
Disabled
Enabled {
Idle
MenuShowing
Staging {
Idle
Gallery {
NoPermission
Ready {
Pending {
FromPicker
FromCamera
}
}
}
Gifs
}
}
}
ursus
09/23/2019, 9:08 PMRuckus
09/23/2019, 11:45 PMEnabled
state. It makes State
into a binary, where one option is singular (Disabled
) and the other is just a wrapper for other states. What does the Enabled
state give you that you can't get from != Disabled
?
(For that matter, you could even consider getting rid of Disabled
and using a null
value to represent it, assuming null state isn't already meaningful.)Ruckus
09/23/2019, 11:59 PMursus
09/24/2019, 12:07 AMursus
09/24/2019, 12:08 AMursus
09/24/2019, 12:09 AMgildor
09/24/2019, 1:17 AMursus
09/24/2019, 1:55 AMgildor
09/24/2019, 2:03 AMDisabled
state. Why not just move it to the same level as Enabled.Idle and get rid of Enabled and Disabled level, also if you get rid of Ready you will get:
Disabled
Idle
MenuShowing
Staging {
Idle
Gallery {
NoPermission
Ready(some, data)
}
Gifs
}
And probly next step would be just get rid of “Staging” And probably gallery (but it depends, do you have or not addfitional nexted cases), and get completely flat states:
Disabled
Idle
MenuShowing
StagingIdle
NoPermission
Ready(some, data)
Gifs
gildor
09/24/2019, 2:07 AMursus
09/24/2019, 2:53 AMursus
09/24/2019, 2:55 AMursus
09/24/2019, 2:57 AMDisabled
Enabled {
abstract val text
Idle
MenuShowing
Staging {
abstract val stagedItems
JustItems
GalleryPicker {
NoPermission
Ready(some, data)
}
GifsPicker {
NoInternet
Ready(some, data)
}
}
}
ursus
09/24/2019, 2:58 AMgildor
09/24/2019, 3:08 AMgildor
09/24/2019, 3:08 AMursus
09/24/2019, 3:11 AMgildor
09/24/2019, 3:12 AMursus
09/24/2019, 3:12 AMursus
09/24/2019, 3:13 AMgildor
09/24/2019, 3:13 AMgildor
09/24/2019, 3:13 AMursus
09/24/2019, 3:14 AMgildor
09/24/2019, 3:14 AMursus
09/24/2019, 3:14 AMgildor
09/24/2019, 3:15 AMursus
09/24/2019, 3:16 AMgildor
09/24/2019, 3:16 AMgildor
09/24/2019, 3:17 AMgildor
09/24/2019, 3:17 AMenabled
stategildor
09/24/2019, 3:17 AMgildor
09/24/2019, 3:18 AMursus
09/24/2019, 3:18 AMwhen state is Enabled then editText.text = state.text
, but rather case for each branch, duplicating codegildor
09/24/2019, 3:19 AMursus
09/24/2019, 3:19 AMgildor
09/24/2019, 3:20 AMinterface StateProvider {
val text: String
}
editText.text = (state as? StateProvider)?.text
gildor
09/24/2019, 3:20 AMursus
09/24/2019, 3:21 AMgildor
09/24/2019, 3:31 AMursus
09/24/2019, 3:36 AMursus
09/24/2019, 3:37 AMgildor
09/24/2019, 3:47 AM