mirror of
https://codeberg.org/timelimit/timelimit-android.git
synced 2025-10-03 17:59:51 +02:00
Fix crashes when restoring state
This commit is contained in:
parent
280baecd8a
commit
01fc98c2c9
2 changed files with 21 additions and 41 deletions
|
@ -4,7 +4,7 @@ import androidx.fragment.app.Fragment
|
||||||
|
|
||||||
abstract class FragmentStateLegacy(
|
abstract class FragmentStateLegacy(
|
||||||
previous: State?,
|
previous: State?,
|
||||||
@Transient override val fragmentClass: Class<out Fragment>,
|
override val fragmentClass: Class<out Fragment>,
|
||||||
override var containerId: Int? = null
|
override var containerId: Int? = null
|
||||||
): State(previous), FragmentState, java.io.Serializable {
|
): State(previous), FragmentState, java.io.Serializable {
|
||||||
override fun toString(): String = fragmentClass.name
|
override fun toString(): String = fragmentClass.name
|
||||||
|
|
|
@ -87,11 +87,9 @@ sealed class State (val previous: State?): Serializable {
|
||||||
childId = childId,
|
childId = childId,
|
||||||
previousOverview = previousOverview
|
previousOverview = previousOverview
|
||||||
) {
|
) {
|
||||||
@Transient
|
override val arguments get() = ManageChildFragmentArgs(childId = childId, fromRedirect = false).toBundle()
|
||||||
override val arguments = ManageChildFragmentArgs(childId = childId, fromRedirect = false).toBundle()
|
|
||||||
|
|
||||||
@Transient
|
override val toolbarIcons: List<Menu.Icon> get() = listOf(
|
||||||
override val toolbarIcons: List<Menu.Icon> = listOf(
|
|
||||||
Menu.Icon(
|
Menu.Icon(
|
||||||
Icons.Default.DirectionsBike,
|
Icons.Default.DirectionsBike,
|
||||||
R.string.manage_child_tasks,
|
R.string.manage_child_tasks,
|
||||||
|
@ -104,8 +102,7 @@ sealed class State (val previous: State?): Serializable {
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@Transient
|
override val toolbarOptions: List<Menu.Dropdown> get() = listOf(
|
||||||
override val toolbarOptions: List<Menu.Dropdown> = listOf(
|
|
||||||
Menu.Dropdown(R.string.child_apps_title, UpdateStateCommand.ManageChild.Apps),
|
Menu.Dropdown(R.string.child_apps_title, UpdateStateCommand.ManageChild.Apps),
|
||||||
Menu.Dropdown(R.string.usage_history_title, UpdateStateCommand.ManageChild.UsageHistory),
|
Menu.Dropdown(R.string.usage_history_title, UpdateStateCommand.ManageChild.UsageHistory),
|
||||||
Menu.Dropdown(R.string.manage_child_tab_other, UpdateStateCommand.ManageChild.Advanced)
|
Menu.Dropdown(R.string.manage_child_tab_other, UpdateStateCommand.ManageChild.Advanced)
|
||||||
|
@ -119,21 +116,17 @@ sealed class State (val previous: State?): Serializable {
|
||||||
): ManageChild(previous, fragmentClass, previousMain.childId, previousMain.previousOverview)
|
): ManageChild(previous, fragmentClass, previousMain.childId, previousMain.previousOverview)
|
||||||
|
|
||||||
class Apps(val previousChild: Main): Sub(previousChild, previousChild, ChildAppsFragmentWrapper::class.java) {
|
class Apps(val previousChild: Main): Sub(previousChild, previousChild, ChildAppsFragmentWrapper::class.java) {
|
||||||
@Transient
|
override val arguments: Bundle get() = ChildAppsFragmentWrapperArgs(previousChild.childId).toBundle()
|
||||||
override val arguments: Bundle = ChildAppsFragmentWrapperArgs(previousChild.childId).toBundle()
|
|
||||||
}
|
}
|
||||||
class Advanced(val previousChild: Main): Sub(previousChild, previousChild, ChildAdvancedFragmentWrapper::class.java) {
|
class Advanced(val previousChild: Main): Sub(previousChild, previousChild, ChildAdvancedFragmentWrapper::class.java) {
|
||||||
@Transient
|
override val arguments: Bundle get() = ChildAdvancedFragmentWrapperArgs(previousChild.childId).toBundle()
|
||||||
override val arguments: Bundle = ChildAdvancedFragmentWrapperArgs(previousChild.childId).toBundle()
|
|
||||||
}
|
}
|
||||||
class Contacts(val previousChild: Main): Sub(previousChild, previousChild, ContactsFragment::class.java)
|
class Contacts(val previousChild: Main): Sub(previousChild, previousChild, ContactsFragment::class.java)
|
||||||
class UsageHistory(val previousChild: Main): Sub(previousChild, previousChild, ChildUsageHistoryFragmentWrapper::class.java) {
|
class UsageHistory(val previousChild: Main): Sub(previousChild, previousChild, ChildUsageHistoryFragmentWrapper::class.java) {
|
||||||
@Transient
|
override val arguments: Bundle get() = ChildUsageHistoryFragmentWrapperArgs(previousChild.childId).toBundle()
|
||||||
override val arguments: Bundle = ChildUsageHistoryFragmentWrapperArgs(previousChild.childId).toBundle()
|
|
||||||
}
|
}
|
||||||
class Tasks(val previousChild: Main): Sub(previousChild, previousChild, ChildTasksFragmentWrapper::class.java) {
|
class Tasks(val previousChild: Main): Sub(previousChild, previousChild, ChildTasksFragmentWrapper::class.java) {
|
||||||
@Transient
|
override val arguments: Bundle get() = ChildTasksFragmentWrapperArgs(previousChild.childId).toBundle()
|
||||||
override val arguments: Bundle = ChildTasksFragmentWrapperArgs(previousChild.childId).toBundle()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class ManageCategory(
|
sealed class ManageCategory(
|
||||||
|
@ -146,14 +139,12 @@ sealed class State (val previous: State?): Serializable {
|
||||||
previousChild: ManageChild.Main,
|
previousChild: ManageChild.Main,
|
||||||
categoryId: String
|
categoryId: String
|
||||||
): ManageCategory(previousChild, previousChild, categoryId, ManageCategoryFragment::class.java) {
|
): ManageCategory(previousChild, previousChild, categoryId, ManageCategoryFragment::class.java) {
|
||||||
@Transient
|
override val arguments: Bundle get() = ManageCategoryFragmentArgs(
|
||||||
override val arguments: Bundle = ManageCategoryFragmentArgs(
|
|
||||||
childId = previousChild.childId,
|
childId = previousChild.childId,
|
||||||
categoryId = categoryId
|
categoryId = categoryId
|
||||||
).toBundle()
|
).toBundle()
|
||||||
|
|
||||||
@Transient
|
override val toolbarOptions: List<Menu.Dropdown> get() = listOf(
|
||||||
override val toolbarOptions: List<Menu.Dropdown> = listOf(
|
|
||||||
Menu.Dropdown(R.string.blocked_time_areas, UpdateStateCommand.ManageChild.BlockedTimes),
|
Menu.Dropdown(R.string.blocked_time_areas, UpdateStateCommand.ManageChild.BlockedTimes),
|
||||||
Menu.Dropdown(R.string.category_settings, UpdateStateCommand.ManageChild.CategoryAdvanced)
|
Menu.Dropdown(R.string.category_settings, UpdateStateCommand.ManageChild.CategoryAdvanced)
|
||||||
)
|
)
|
||||||
|
@ -168,8 +159,7 @@ sealed class State (val previous: State?): Serializable {
|
||||||
class BlockedTimes(
|
class BlockedTimes(
|
||||||
previousCategory: Main
|
previousCategory: Main
|
||||||
): Sub(previousCategory, previousCategory, BlockedTimeAreasFragmentWrapper::class.java) {
|
): Sub(previousCategory, previousCategory, BlockedTimeAreasFragmentWrapper::class.java) {
|
||||||
@Transient
|
override val arguments: Bundle get() = BlockedTimeAreasFragmentWrapperArgs(
|
||||||
override val arguments: Bundle = BlockedTimeAreasFragmentWrapperArgs(
|
|
||||||
childId = previousCategory.previousChild.childId,
|
childId = previousCategory.previousChild.childId,
|
||||||
categoryId = previousCategory.categoryId
|
categoryId = previousCategory.categoryId
|
||||||
).toBundle()
|
).toBundle()
|
||||||
|
@ -178,8 +168,7 @@ sealed class State (val previous: State?): Serializable {
|
||||||
class Advanced(
|
class Advanced(
|
||||||
previousCategory: Main
|
previousCategory: Main
|
||||||
): Sub(previousCategory, previousCategory, CategoryAdvancedFragmentWrapper::class.java) {
|
): Sub(previousCategory, previousCategory, CategoryAdvancedFragmentWrapper::class.java) {
|
||||||
@Transient
|
override val arguments: Bundle get() = CategoryAdvancedFragmentWrapperArgs(
|
||||||
override val arguments: Bundle = CategoryAdvancedFragmentWrapperArgs(
|
|
||||||
childId = previousCategory.previousChild.childId,
|
childId = previousCategory.previousChild.childId,
|
||||||
categoryId = previousCategory.categoryId
|
categoryId = previousCategory.categoryId
|
||||||
).toBundle()
|
).toBundle()
|
||||||
|
@ -191,25 +180,20 @@ sealed class State (val previous: State?): Serializable {
|
||||||
previous: Overview,
|
previous: Overview,
|
||||||
val parentId: String
|
val parentId: String
|
||||||
): ManageParent(previous = previous, fragmentClass = ManageParentFragment::class.java) {
|
): ManageParent(previous = previous, fragmentClass = ManageParentFragment::class.java) {
|
||||||
@Transient
|
override val arguments get() = ManageParentFragmentArgs(parentId).toBundle()
|
||||||
override val arguments = ManageParentFragmentArgs(parentId).toBundle()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class ChangePassword(val previousParent: Main): ManageParent(previousParent, ChangeParentPasswordFragment::class.java) {
|
class ChangePassword(val previousParent: Main): ManageParent(previousParent, ChangeParentPasswordFragment::class.java) {
|
||||||
@Transient
|
override val arguments: Bundle get() = ChangeParentPasswordFragmentArgs(previousParent.parentId).toBundle()
|
||||||
override val arguments: Bundle = ChangeParentPasswordFragmentArgs(previousParent.parentId).toBundle()
|
|
||||||
}
|
}
|
||||||
class RestorePassword(val previousParent: Main): ManageParent(previousParent, RestoreParentPasswordFragment::class.java) {
|
class RestorePassword(val previousParent: Main): ManageParent(previousParent, RestoreParentPasswordFragment::class.java) {
|
||||||
@Transient
|
override val arguments: Bundle get() = RestoreParentPasswordFragmentArgs(previousParent.parentId).toBundle()
|
||||||
override val arguments: Bundle = RestoreParentPasswordFragmentArgs(previousParent.parentId).toBundle()
|
|
||||||
}
|
}
|
||||||
class LinkMail(val previousParent: Main): ManageParent(previousParent, LinkParentMailFragment::class.java) {
|
class LinkMail(val previousParent: Main): ManageParent(previousParent, LinkParentMailFragment::class.java) {
|
||||||
@Transient
|
override val arguments: Bundle get() = LinkParentMailFragmentArgs(previousParent.parentId).toBundle()
|
||||||
override val arguments: Bundle = LinkParentMailFragmentArgs(previousParent.parentId).toBundle()
|
|
||||||
}
|
}
|
||||||
class U2F(val previousParent: Main): ManageParent(previousParent, ManageParentU2FKeyFragment::class.java) {
|
class U2F(val previousParent: Main): ManageParent(previousParent, ManageParentU2FKeyFragment::class.java) {
|
||||||
@Transient
|
override val arguments: Bundle get() = ManageParentU2FKeyFragmentArgs(previousParent.parentId).toBundle()
|
||||||
override val arguments: Bundle = ManageParentU2FKeyFragmentArgs(previousParent.parentId).toBundle()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sealed class ManageDevice(
|
sealed class ManageDevice(
|
||||||
|
@ -222,8 +206,7 @@ sealed class State (val previous: State?): Serializable {
|
||||||
previousOverview: Overview,
|
previousOverview: Overview,
|
||||||
deviceId: String
|
deviceId: String
|
||||||
): ManageDevice(previousOverview, previousOverview, deviceId, ManageDeviceFragment::class.java) {
|
): ManageDevice(previousOverview, previousOverview, deviceId, ManageDeviceFragment::class.java) {
|
||||||
@Transient
|
override val arguments: Bundle get() = ManageDeviceFragmentArgs(deviceId).toBundle()
|
||||||
override val arguments: Bundle = ManageDeviceFragmentArgs(deviceId).toBundle()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class Sub(
|
sealed class Sub(
|
||||||
|
@ -246,16 +229,13 @@ sealed class State (val previous: State?): Serializable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
class Permissions(previousMain: Main): Sub(previousMain, ManageDevicePermissionsFragment::class.java) {
|
class Permissions(previousMain: Main): Sub(previousMain, ManageDevicePermissionsFragment::class.java) {
|
||||||
@Transient
|
override val arguments: Bundle get() = ManageDevicePermissionsFragmentArgs(deviceId).toBundle()
|
||||||
override val arguments: Bundle = ManageDevicePermissionsFragmentArgs(deviceId).toBundle()
|
|
||||||
}
|
}
|
||||||
class Features(previousMain: Main): Sub(previousMain, ManageDeviceFeaturesFragment::class.java) {
|
class Features(previousMain: Main): Sub(previousMain, ManageDeviceFeaturesFragment::class.java) {
|
||||||
@Transient
|
override val arguments: Bundle get() = ManageDeviceFeaturesFragmentArgs(deviceId).toBundle()
|
||||||
override val arguments: Bundle = ManageDeviceFeaturesFragmentArgs(deviceId).toBundle()
|
|
||||||
}
|
}
|
||||||
class Advanced(previousMain: Main): Sub(previousMain, ManageDeviceAdvancedFragment::class.java) {
|
class Advanced(previousMain: Main): Sub(previousMain, ManageDeviceAdvancedFragment::class.java) {
|
||||||
@Transient
|
override val arguments: Bundle get() = ManageDeviceAdvancedFragmentArgs(deviceId).toBundle()
|
||||||
override val arguments: Bundle = ManageDeviceAdvancedFragmentArgs(deviceId).toBundle()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
class SetupDevice(val previousOverview: Overview): FragmentStateLegacy(previous = previousOverview, fragmentClass = SetupDeviceFragment::class.java)
|
class SetupDevice(val previousOverview: Overview): FragmentStateLegacy(previous = previousOverview, fragmentClass = SetupDeviceFragment::class.java)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue