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 AMursus
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 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)
Gifsgildor
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)?.textgildor
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