Show recovery instead of verification if this is the last session and recovery is set up

* Show recovery instead of verification if this is the last session and recovery is set up

* Rename `recoveryKeyState` to `recoveryState`

* Remove duplicates on session security state changes.

* Fix missing "Save recovery key" button

* Fix unit tests

* Rename `isLastDevice` to `isOnlyDeviceLeft`

* Address PR comments
This commit is contained in:
Stefan Ceriu
2024-02-16 11:38:49 +02:00
committed by GitHub
parent e0c9f43026
commit db05540cc5
23 changed files with 255 additions and 208 deletions
@@ -80,18 +80,20 @@ struct SettingsScreen: View {
@ViewBuilder
private var accountSecuritySection: some View {
Section {
if let isSessionVerified = context.viewState.isSessionVerified {
if !isSessionVerified {
ListRow(label: .default(title: L10n.actionCompleteVerification,
icon: \.checkCircle),
kind: .button { context.send(viewAction: .sessionVerification) })
} else {
ListRow(label: .default(title: L10n.commonChatBackup,
icon: \.key),
details: context.viewState.showSecureBackupBadge ? .icon(secureBackupBadge) : nil,
kind: .navigationLink { context.send(viewAction: .secureBackup) })
.accessibilityIdentifier(A11yIdentifiers.settingsScreen.secureBackup)
}
switch context.viewState.securitySectionMode {
case .sessionVerification:
ListRow(label: .default(title: L10n.actionCompleteVerification,
icon: \.checkCircle),
details: context.viewState.showSecuritySectionBadge ? .icon(securitySectionBadge) : nil,
kind: .button { context.send(viewAction: .sessionVerification) })
case .secureBackup:
ListRow(label: .default(title: L10n.commonChatBackup,
icon: \.key),
details: context.viewState.showSecuritySectionBadge ? .icon(securitySectionBadge) : nil,
kind: .navigationLink { context.send(viewAction: .secureBackup) })
.accessibilityIdentifier(A11yIdentifiers.settingsScreen.secureBackup)
default:
EmptyView()
}
}
}
@@ -210,8 +212,8 @@ struct SettingsScreen: View {
}
@ViewBuilder
private var secureBackupBadge: some View {
if context.viewState.showSecureBackupBadge {
private var securitySectionBadge: some View {
if context.viewState.showSecuritySectionBadge {
BadgeView(size: 10)
}
}