key backup settings: add delete confirmation dialog

This commit is contained in:
manuroe 2019-01-31 09:45:03 +01:00
parent 91861ef4df
commit 0de85dd93c
7 changed files with 60 additions and 3 deletions

View file

@ -435,6 +435,9 @@
"settings_key_backup_info_trust_signature_invalid_device_verified" = "Backup has a invalid signature from verified device %@";
"settings_key_backup_info_trust_signature_invalid_device_unverified" = "Backup has a invalid signature from unverified device %@";
"settings_key_backup_button_create" = "Start a new backup";
"settings_key_backup_button_delete" = "Delete backup";
"settings_key_backup_delete_confirmation_prompt_title" = "Delete Backup";
"settings_key_backup_delete_confirmation_prompt_msg" = "Delete your backed up encryption keys from the server? You will no longer be able to use your recovery key to read encrypted message history";
// Room Details
"room_details_title" = "Room Details";

View file

@ -1926,6 +1926,18 @@ internal enum VectorL10n {
internal static var settingsKeyBackupButtonCreate: String {
return VectorL10n.tr("Vector", "settings_key_backup_button_create")
}
/// Delete backup
internal static var settingsKeyBackupButtonDelete: String {
return VectorL10n.tr("Vector", "settings_key_backup_button_delete")
}
/// Delete your backed up encryption keys from the server? You will no longer be able to use your recovery key to read encrypted message history
internal static var settingsKeyBackupDeleteConfirmationPromptMsg: String {
return VectorL10n.tr("Vector", "settings_key_backup_delete_confirmation_prompt_msg")
}
/// Delete Backup
internal static var settingsKeyBackupDeleteConfirmationPromptTitle: String {
return VectorL10n.tr("Vector", "settings_key_backup_delete_confirmation_prompt_title")
}
/// Algorithm: %@
internal static func settingsKeyBackupInfoAlgorithm(_ p1: String) -> String {
return VectorL10n.tr("Vector", "settings_key_backup_info_algorithm", p1)

View file

@ -26,6 +26,7 @@ import UIKit
func settingsKeyBackupTableViewSectionShowKeyBackupSetup(_ settingsKeyBackupTableViewSection: SettingsKeyBackupTableViewSection)
func settingsKeyBackup(_ settingsKeyBackupTableViewSection: SettingsKeyBackupTableViewSection, showVerifyDevice deviceId:String)
func settingsKeyBackup(_ settingsKeyBackupTableViewSection: SettingsKeyBackupTableViewSection, showKeyBackupRecover keyBackupVersion:MXKeyBackupVersion)
func settingsKeyBackup(_ settingsKeyBackupTableViewSection: SettingsKeyBackupTableViewSection, showKeyBackupDeleteConfirm keyBackupVersion:MXKeyBackupVersion)
}
@objc class SettingsKeyBackupTableViewSection: NSObject {
@ -56,6 +57,10 @@ import UIKit
self.viewModel.process(viewAction: .load)
}
@objc func delete(keyBackupVersion: MXKeyBackupVersion) {
self.viewModel.process(viewAction: .delete(keyBackupVersion))
}
// MARK: - Private
private func render(viewState: SettingsKeyBackupViewState) {
@ -281,13 +286,12 @@ import UIKit
}
let deleteCell:MXKTableViewCellWithButton = delegate.settingsKeyBackupTableViewSection(self, buttonCellForRow: fromCellIndex + 1)
let deleteTitle = "Delete backup"
let deleteTitle = VectorL10n.settingsKeyBackupButtonDelete
deleteCell.mxkButton.setTitle(deleteTitle, for: .normal)
deleteCell.mxkButton.setTitle(deleteTitle, for: .highlighted)
deleteCell.mxkButton.tintColor = ThemeService.shared().theme.warningColor
deleteCell.mxkButton.vc_addAction {
// TODO: Ask confirmation
self.viewModel.process(viewAction: .delete(keyBackupVersion))
self.viewModel.process(viewAction: .confirmDelete(keyBackupVersion))
}
return [restoreCell, deleteCell]
@ -309,4 +313,7 @@ extension SettingsKeyBackupTableViewSection: SettingsKeyBackupViewModelViewDeleg
func settingsKeyBackup(_ viewModel: SettingsKeyBackupViewModelType, showKeyBackupRecover keyBackupVersion: MXKeyBackupVersion) {
self.delegate?.settingsKeyBackup(self, showKeyBackupRecover: keyBackupVersion)
}
func settingsKeyBackup(_ viewModel: SettingsKeyBackupViewModelType, showKeyBackupDeleteConfirm keyBackupVersion: MXKeyBackupVersion) {
self.delegate?.settingsKeyBackup(self, showKeyBackupDeleteConfirm: keyBackupVersion)
}
}

View file

@ -21,5 +21,6 @@ enum SettingsKeyBackupViewAction {
case create
case verify(String)
case restore(MXKeyBackupVersion)
case confirmDelete(MXKeyBackupVersion)
case delete(MXKeyBackupVersion)
}

View file

@ -55,6 +55,9 @@ class SettingsKeyBackupViewModel: SettingsKeyBackupViewModelType {
case .restore(let keyBackupVersion):
viewDelegate.settingsKeyBackup(self, showKeyBackupRecover: keyBackupVersion)
break
case .confirmDelete(let keyBackupVersion):
viewDelegate.settingsKeyBackup(self, showKeyBackupDeleteConfirm: keyBackupVersion)
break
case .delete(let keyBackupVersion):
self.deleteKeyBackupVersion(keyBackupVersion)
break

View file

@ -22,6 +22,7 @@ protocol SettingsKeyBackupViewModelViewDelegate: class {
func settingsKeyBackupViewModelShowKeyBackupSetup(_ viewModel: SettingsKeyBackupViewModelType)
func settingsKeyBackup(_ viewModel: SettingsKeyBackupViewModelType, showVerifyDevice deviceId:String)
func settingsKeyBackup(_ viewModel: SettingsKeyBackupViewModelType, showKeyBackupRecover keyBackupVersion:MXKeyBackupVersion)
func settingsKeyBackup(_ viewModel: SettingsKeyBackupViewModelType, showKeyBackupDeleteConfirm keyBackupVersion:MXKeyBackupVersion)
}
protocol SettingsKeyBackupViewModelType {

View file

@ -4304,6 +4304,36 @@ KeyBackupRecoverCoordinatorBridgePresenterDelegate>
[self showKeyBackupRecover:keyBackupVersion];
}
- (void)settingsKeyBackup:(SettingsKeyBackupTableViewSection *)settingsKeyBackupTableViewSection showKeyBackupDeleteConfirm:(MXKeyBackupVersion *)keyBackupVersion
{
MXWeakify(self);
[currentAlert dismissViewControllerAnimated:NO completion:nil];
currentAlert =
[UIAlertController alertControllerWithTitle:NSLocalizedStringFromTable(@"settings_key_backup_delete_confirmation_prompt_title", @"Vector", nil)
message:NSLocalizedStringFromTable(@"settings_key_backup_delete_confirmation_prompt_msg", @"Vector", nil)
preferredStyle:UIAlertControllerStyleAlert];
[currentAlert addAction:[UIAlertAction actionWithTitle:[NSBundle mxk_localizedStringForKey:@"cancel"]
style:UIAlertActionStyleCancel
handler:^(UIAlertAction * action) {
MXStrongifyAndReturnIfNil(self);
self->currentAlert = nil;
}]];
[currentAlert addAction:[UIAlertAction actionWithTitle:NSLocalizedStringFromTable(@"remove", @"Vector", nil)
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
MXStrongifyAndReturnIfNil(self);
self->currentAlert = nil;
[self->keyBackupSection deleteWithKeyBackupVersion:keyBackupVersion];
}]];
[currentAlert mxk_setAccessibilityIdentifier: @"SettingsVCDeleteKeyBackup"];
[self presentViewController:currentAlert animated:YES completion:nil];
}
#pragma mark - MXKEncryptionInfoView
- (void)showDeviceInfo:(MXDeviceInfo*)deviceInfo