mirror of
https://codeberg.org/timelimit/timelimit-android.git
synced 2025-10-03 01:39:22 +02:00
Refactor State hierarchy for child users
This commit is contained in:
parent
4e85a656c5
commit
7f60072b69
2 changed files with 29 additions and 28 deletions
|
@ -84,7 +84,12 @@ sealed class State (val previous: State?): Serializable {
|
||||||
previousOverview: Overview,
|
previousOverview: Overview,
|
||||||
childId: String,
|
childId: String,
|
||||||
fromRedirect: Boolean
|
fromRedirect: Boolean
|
||||||
): ManageChild(previous = previousOverview, ManageChildFragment::class.java, childId = childId, previousOverview = previousOverview) {
|
): ManageChild(
|
||||||
|
previous = previousOverview,
|
||||||
|
fragmentClass = ManageChildFragment::class.java,
|
||||||
|
childId = childId,
|
||||||
|
previousOverview = previousOverview
|
||||||
|
) {
|
||||||
@Transient
|
@Transient
|
||||||
override val arguments = ManageChildFragmentArgs(childId = childId, fromRedirect = fromRedirect).toBundle()
|
override val arguments = ManageChildFragmentArgs(childId = childId, fromRedirect = fromRedirect).toBundle()
|
||||||
|
|
||||||
|
@ -110,29 +115,35 @@ sealed class State (val previous: State?): Serializable {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
class Apps(val previousChild: Main): ManageChild(previousChild, ChildAppsFragmentWrapper::class.java, previousChild.childId, previousChild.previousOverview) {
|
sealed class Sub(
|
||||||
|
previous: State,
|
||||||
|
previousMain: Main,
|
||||||
|
fragmentClass: Class<out Fragment>
|
||||||
|
): ManageChild(previous, fragmentClass, previousMain.childId, previousMain.previousOverview)
|
||||||
|
|
||||||
|
class Apps(val previousChild: Main): Sub(previousChild, previousChild, ChildAppsFragmentWrapper::class.java) {
|
||||||
@Transient
|
@Transient
|
||||||
override val arguments: Bundle = ChildAppsFragmentWrapperArgs(previousChild.childId).toBundle()
|
override val arguments: Bundle = ChildAppsFragmentWrapperArgs(previousChild.childId).toBundle()
|
||||||
}
|
}
|
||||||
class Advanced(val previousChild: Main): ManageChild(previousChild, ChildAdvancedFragmentWrapper::class.java, previousChild.childId, previousChild.previousOverview) {
|
class Advanced(val previousChild: Main): Sub(previousChild, previousChild, ChildAdvancedFragmentWrapper::class.java) {
|
||||||
@Transient
|
@Transient
|
||||||
override val arguments: Bundle = ChildAdvancedFragmentWrapperArgs(previousChild.childId).toBundle()
|
override val arguments: Bundle = ChildAdvancedFragmentWrapperArgs(previousChild.childId).toBundle()
|
||||||
}
|
}
|
||||||
class Contacts(val previousChild: Main): ManageChild(previousChild, ContactsFragment::class.java, previousChild.childId, previousChild.previousOverview)
|
class Contacts(val previousChild: Main): Sub(previousChild, previousChild, ContactsFragment::class.java)
|
||||||
class UsageHistory(val previousChild: Main): ManageChild(previousChild, ChildUsageHistoryFragmentWrapper::class.java, previousChild.childId, previousChild.previousOverview) {
|
class UsageHistory(val previousChild: Main): Sub(previousChild, previousChild, ChildUsageHistoryFragmentWrapper::class.java) {
|
||||||
@Transient
|
@Transient
|
||||||
override val arguments: Bundle = ChildUsageHistoryFragmentWrapperArgs(previousChild.childId).toBundle()
|
override val arguments: Bundle = ChildUsageHistoryFragmentWrapperArgs(previousChild.childId).toBundle()
|
||||||
}
|
}
|
||||||
class Tasks(val previousChild: Main): ManageChild(previousChild, ChildTasksFragmentWrapper::class.java, previousChild.childId, previousChild.previousOverview) {
|
class Tasks(val previousChild: Main): Sub(previousChild, previousChild, ChildTasksFragmentWrapper::class.java) {
|
||||||
@Transient
|
@Transient
|
||||||
override val arguments: Bundle = ChildTasksFragmentWrapperArgs(previousChild.childId).toBundle()
|
override val arguments: Bundle = ChildTasksFragmentWrapperArgs(previousChild.childId).toBundle()
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class ManageCategory(previous: State, fragmentClass: Class<out Fragment>, val previousChild: ManageChild.Main): ManageChild(previous, fragmentClass, previousChild.childId, previousChild.previousOverview) {
|
sealed class ManageCategory(previous: State, val previousChild: ManageChild.Main, fragmentClass: Class<out Fragment>): Sub(previous, previousChild, fragmentClass) {
|
||||||
class Main(
|
class Main(
|
||||||
previousChild: ManageChild.Main,
|
previousChild: ManageChild.Main,
|
||||||
val categoryId: String
|
val categoryId: String
|
||||||
): ManageCategory(previous = previousChild, fragmentClass = ManageCategoryFragment::class.java, previousChild) {
|
): ManageCategory(previousChild, previousChild, ManageCategoryFragment::class.java) {
|
||||||
@Transient
|
@Transient
|
||||||
override val arguments: Bundle = ManageCategoryFragmentArgs(
|
override val arguments: Bundle = ManageCategoryFragmentArgs(
|
||||||
childId = previousChild.childId,
|
childId = previousChild.childId,
|
||||||
|
@ -146,9 +157,13 @@ sealed class State (val previous: State?): Serializable {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sealed class Sub(
|
||||||
|
previous: State, previousMain: Main, fragmentClass: Class<out Fragment>
|
||||||
|
): ManageCategory(previous, previousMain.previousChild, fragmentClass)
|
||||||
|
|
||||||
class BlockedTimes(
|
class BlockedTimes(
|
||||||
val previousCategory: Main
|
previousCategory: Main
|
||||||
): ManageCategory(previous = previousCategory, fragmentClass = BlockedTimeAreasFragmentWrapper::class.java, previousChild = previousCategory.previousChild) {
|
): Sub(previousCategory, previousCategory, BlockedTimeAreasFragmentWrapper::class.java) {
|
||||||
@Transient
|
@Transient
|
||||||
override val arguments: Bundle = BlockedTimeAreasFragmentWrapperArgs(
|
override val arguments: Bundle = BlockedTimeAreasFragmentWrapperArgs(
|
||||||
childId = previousCategory.previousChild.childId,
|
childId = previousCategory.previousChild.childId,
|
||||||
|
@ -157,8 +172,8 @@ sealed class State (val previous: State?): Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
class Advanced(
|
class Advanced(
|
||||||
val previousCategory: Main
|
previousCategory: Main
|
||||||
): ManageCategory(previous = previousCategory, fragmentClass = CategoryAdvancedFragmentWrapper::class.java, previousChild = previousCategory.previousChild) {
|
): Sub(previousCategory, previousCategory, CategoryAdvancedFragmentWrapper::class.java) {
|
||||||
@Transient
|
@Transient
|
||||||
override val arguments: Bundle = CategoryAdvancedFragmentWrapperArgs(
|
override val arguments: Bundle = CategoryAdvancedFragmentWrapperArgs(
|
||||||
childId = previousCategory.previousChild.childId,
|
childId = previousCategory.previousChild.childId,
|
||||||
|
|
|
@ -246,27 +246,13 @@ sealed class UpdateStateCommand {
|
||||||
|
|
||||||
object LeaveCategory: UpdateStateCommand() {
|
object LeaveCategory: UpdateStateCommand() {
|
||||||
override fun transform(state: State): State? =
|
override fun transform(state: State): State? =
|
||||||
if (state is State.ManageChild.ManageCategory) when (state) {
|
if (state is State.ManageChild.ManageCategory) state.previousChild
|
||||||
is State.ManageChild.ManageCategory.Main -> state.previous
|
|
||||||
is State.ManageChild.ManageCategory.Advanced -> state.previousCategory.previous
|
|
||||||
is State.ManageChild.ManageCategory.BlockedTimes -> state.previousCategory.previous
|
|
||||||
}
|
|
||||||
else null
|
else null
|
||||||
}
|
}
|
||||||
|
|
||||||
object LeaveChild: UpdateStateCommand() {
|
object LeaveChild: UpdateStateCommand() {
|
||||||
override fun transform(state: State): State? =
|
override fun transform(state: State): State? =
|
||||||
if (state is State.ManageChild) when (state) {
|
if (state is State.ManageChild) state.previousOverview
|
||||||
is State.ManageChild.Main -> state.previous
|
|
||||||
is State.ManageChild.Apps -> state.previousChild.previous
|
|
||||||
is State.ManageChild.Advanced -> state.previousChild.previous
|
|
||||||
is State.ManageChild.Contacts -> state.previousChild.previous
|
|
||||||
is State.ManageChild.Tasks -> state.previousChild.previous
|
|
||||||
is State.ManageChild.UsageHistory -> state.previousChild.previous
|
|
||||||
is State.ManageChild.ManageCategory.Main -> state.previousChild.previous
|
|
||||||
is State.ManageChild.ManageCategory.Advanced -> state.previousCategory.previousChild.previous
|
|
||||||
is State.ManageChild.ManageCategory.BlockedTimes -> state.previousCategory.previousChild.previous
|
|
||||||
}
|
|
||||||
else null
|
else null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue