LockScreen : do not show the entire setup flow when changing the pin is settings

This commit is contained in:
ganfra 2023-11-07 16:16:29 +01:00
parent f10231091d
commit 43d4f96a9f
2 changed files with 13 additions and 12 deletions

View file

@ -63,5 +63,6 @@ fun LockScreenService.handleSecureFlag(activity: ComponentActivity) {
activity.window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) activity.window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
} }
} }
}.launchIn(activity.lifecycleScope) }
.launchIn(activity.lifecycleScope)
} }

View file

@ -36,7 +36,7 @@ import io.element.android.features.lockscreen.impl.biometric.BiometricUnlockMana
import io.element.android.features.lockscreen.impl.biometric.DefaultBiometricUnlockCallback import io.element.android.features.lockscreen.impl.biometric.DefaultBiometricUnlockCallback
import io.element.android.features.lockscreen.impl.pin.DefaultPinCodeManagerCallback import io.element.android.features.lockscreen.impl.pin.DefaultPinCodeManagerCallback
import io.element.android.features.lockscreen.impl.pin.PinCodeManager import io.element.android.features.lockscreen.impl.pin.PinCodeManager
import io.element.android.features.lockscreen.impl.setup.LockScreenSetupFlowNode import io.element.android.features.lockscreen.impl.setup.pin.SetupPinNode
import io.element.android.features.lockscreen.impl.unlock.PinUnlockNode import io.element.android.features.lockscreen.impl.unlock.PinUnlockNode
import io.element.android.libraries.architecture.BackstackNode import io.element.android.libraries.architecture.BackstackNode
import io.element.android.libraries.architecture.animation.rememberDefaultTransitionHandler import io.element.android.libraries.architecture.animation.rememberDefaultTransitionHandler
@ -69,7 +69,7 @@ class LockScreenSettingsFlowNode @AssistedInject constructor(
data object Unlock : NavTarget data object Unlock : NavTarget
@Parcelize @Parcelize
data object Setup : NavTarget data object SetupPin : NavTarget
@Parcelize @Parcelize
data object Settings : NavTarget data object Settings : NavTarget
@ -83,6 +83,10 @@ class LockScreenSettingsFlowNode @AssistedInject constructor(
override fun onPinCodeRemoved() { override fun onPinCodeRemoved() {
navigateUp() navigateUp()
} }
override fun onPinCodeCreated() {
backstack.newRoot(NavTarget.Settings)
}
} }
private val biometricUnlockCallback = object : DefaultBiometricUnlockCallback() { private val biometricUnlockCallback = object : DefaultBiometricUnlockCallback() {
@ -98,7 +102,7 @@ class LockScreenSettingsFlowNode @AssistedInject constructor(
if (hasPinCode) { if (hasPinCode) {
backstack.newRoot(NavTarget.Unlock) backstack.newRoot(NavTarget.Unlock)
} else { } else {
backstack.newRoot(NavTarget.Setup) backstack.newRoot(NavTarget.SetupPin)
} }
} }
lifecycle.subscribe( lifecycle.subscribe(
@ -119,23 +123,19 @@ class LockScreenSettingsFlowNode @AssistedInject constructor(
val inputs = PinUnlockNode.Inputs(isInAppUnlock = true) val inputs = PinUnlockNode.Inputs(isInAppUnlock = true)
createNode<PinUnlockNode>(buildContext, plugins = listOf(inputs)) createNode<PinUnlockNode>(buildContext, plugins = listOf(inputs))
} }
NavTarget.Setup -> { NavTarget.SetupPin -> {
val callback = object : LockScreenSetupFlowNode.Callback { createNode<SetupPinNode>(buildContext)
override fun onSetupDone() {
backstack.newRoot(NavTarget.Settings)
}
}
createNode<LockScreenSetupFlowNode>(buildContext, plugins = listOf(callback))
} }
NavTarget.Settings -> { NavTarget.Settings -> {
val callback = object : LockScreenSettingsNode.Callback { val callback = object : LockScreenSettingsNode.Callback {
override fun onChangePinClicked() { override fun onChangePinClicked() {
backstack.push(NavTarget.Setup) backstack.push(NavTarget.SetupPin)
} }
} }
createNode<LockScreenSettingsNode>(buildContext, plugins = listOf(callback)) createNode<LockScreenSettingsNode>(buildContext, plugins = listOf(callback))
} }
NavTarget.Unknown -> node(buildContext) { } NavTarget.Unknown -> node(buildContext) { }
} }
} }