From 99b8efbeff543dccb261eddbae85edd39d0f8a02 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 21 Feb 2024 09:43:24 +0100 Subject: [PATCH] Go directly to the enter recovery key screen when coming from the banner which ask the user to do so. --- .../kotlin/io/element/android/appnav/LoggedInFlowNode.kt | 4 ++++ .../android/features/roomlist/api/RoomListEntryPoint.kt | 1 + .../element/android/features/roomlist/impl/RoomListNode.kt | 5 +++++ .../element/android/features/roomlist/impl/RoomListView.kt | 6 +++++- .../io/element/android/samples/minimal/RoomListScreen.kt | 1 + 5 files changed, 16 insertions(+), 1 deletion(-) diff --git a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt index 9bb9231dc2..db75acff64 100644 --- a/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt +++ b/appnav/src/main/kotlin/io/element/android/appnav/LoggedInFlowNode.kt @@ -255,6 +255,10 @@ class LoggedInFlowNode @AssistedInject constructor( backstack.push(NavTarget.VerifySession) } + override fun onSessionConfirmRecoveryKeyClicked() { + backstack.push(NavTarget.SecureBackup(initialElement = SecureBackupEntryPoint.InitialTarget.EnterRecoveryKey)) + } + override fun onInvitesClicked() { backstack.push(NavTarget.InviteList) } diff --git a/features/roomlist/api/src/main/kotlin/io/element/android/features/roomlist/api/RoomListEntryPoint.kt b/features/roomlist/api/src/main/kotlin/io/element/android/features/roomlist/api/RoomListEntryPoint.kt index 1b357c794c..0404ce18fc 100644 --- a/features/roomlist/api/src/main/kotlin/io/element/android/features/roomlist/api/RoomListEntryPoint.kt +++ b/features/roomlist/api/src/main/kotlin/io/element/android/features/roomlist/api/RoomListEntryPoint.kt @@ -34,6 +34,7 @@ interface RoomListEntryPoint : FeatureEntryPoint { fun onCreateRoomClicked() fun onSettingsClicked() fun onSessionVerificationClicked() + fun onSessionConfirmRecoveryKeyClicked() fun onInvitesClicked() fun onRoomSettingsClicked(roomId: RoomId) fun onReportBugClicked() diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListNode.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListNode.kt index f505020151..5dec53e158 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListNode.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListNode.kt @@ -68,6 +68,10 @@ class RoomListNode @AssistedInject constructor( plugins().forEach { it.onSessionVerificationClicked() } } + private fun onSessionConfirmRecoveryKeyClicked() { + plugins().forEach { it.onSessionConfirmRecoveryKeyClicked() } + } + private fun onInvitesClicked() { plugins().forEach { it.onInvitesClicked() } } @@ -97,6 +101,7 @@ class RoomListNode @AssistedInject constructor( onSettingsClicked = this::onOpenSettings, onCreateRoomClicked = this::onCreateRoomClicked, onVerifyClicked = this::onSessionVerificationClicked, + onConfirmRecoveryKeyClicked = this::onSessionConfirmRecoveryKeyClicked, onInvitesClicked = this::onInvitesClicked, onRoomSettingsClicked = this::onRoomSettingsClicked, onMenuActionClicked = { onMenuActionClicked(activity, it) }, diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListView.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListView.kt index 575ace8cf7..5ca8085fae 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListView.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/RoomListView.kt @@ -78,6 +78,7 @@ fun RoomListView( onRoomClicked: (RoomId) -> Unit, onSettingsClicked: () -> Unit, onVerifyClicked: () -> Unit, + onConfirmRecoveryKeyClicked: () -> Unit, onCreateRoomClicked: () -> Unit, onInvitesClicked: () -> Unit, onRoomSettingsClicked: (roomId: RoomId) -> Unit, @@ -109,6 +110,7 @@ fun RoomListView( modifier = Modifier.padding(top = topPadding), state = state, onVerifyClicked = onVerifyClicked, + onConfirmRecoveryKeyClicked = onConfirmRecoveryKeyClicked, onRoomClicked = onRoomClicked, onRoomLongClicked = { onRoomLongClicked(it) }, onOpenSettings = onSettingsClicked, @@ -166,6 +168,7 @@ private fun EmptyRoomListView( private fun RoomListContent( state: RoomListState, onVerifyClicked: () -> Unit, + onConfirmRecoveryKeyClicked: () -> Unit, onRoomClicked: (RoomId) -> Unit, onRoomLongClicked: (RoomListRoomSummary) -> Unit, onOpenSettings: () -> Unit, @@ -238,7 +241,7 @@ private fun RoomListContent( SecurityBannerState.RecoveryKeyConfirmation -> { item { ConfirmRecoveryKeyBanner( - onContinueClicked = onOpenSettings, + onContinueClicked = onConfirmRecoveryKeyClicked, onDismissClicked = { state.eventSink(RoomListEvents.DismissRecoveryKeyPrompt) } ) } @@ -304,6 +307,7 @@ internal fun RoomListViewPreview(@PreviewParameter(RoomListStateProvider::class) onRoomClicked = {}, onSettingsClicked = {}, onVerifyClicked = {}, + onConfirmRecoveryKeyClicked = {}, onCreateRoomClicked = {}, onInvitesClicked = {}, onRoomSettingsClicked = {}, diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt index 1d5b27f731..1730ff1e90 100644 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt +++ b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/RoomListScreen.kt @@ -142,6 +142,7 @@ class RoomListScreen( onRoomClicked = ::onRoomClicked, onSettingsClicked = {}, onVerifyClicked = {}, + onConfirmRecoveryKeyClicked = {}, onCreateRoomClicked = {}, onInvitesClicked = {}, onRoomSettingsClicked = {},