diff --git a/UnstoppableWallet/UnstoppableWallet/Modules/BottomSheet/BottomSheetModule.swift b/UnstoppableWallet/UnstoppableWallet/Modules/BottomSheet/BottomSheetModule.swift index b6ae2ef412..33979818fe 100644 --- a/UnstoppableWallet/UnstoppableWallet/Modules/BottomSheet/BottomSheetModule.swift +++ b/UnstoppableWallet/UnstoppableWallet/Modules/BottomSheet/BottomSheetModule.swift @@ -1,123 +1,138 @@ -import UIKit -import SwiftUI -import ThemeKit import ComponentKit import SectionsTableView +import SwiftUI +import ThemeKit +import UIKit protocol IBottomSheetDismissDelegate: AnyObject { func bottomSelectorOnDismiss() } -class BottomSheetModule { - +enum BottomSheetModule { static func viewController(image: BottomSheetTitleView.Image? = nil, title: String, subtitle: String? = nil, items: [Item] = [], buttons: [Button] = [], delegate: IBottomSheetDismissDelegate? = nil) -> UIViewController { let viewController = BottomSheetViewController(image: image, title: title, subtitle: subtitle, items: items, buttons: buttons, delegate: delegate) return viewController.toBottomSheet } - } extension BottomSheetModule { - static func copyConfirmation(value: String) -> UIViewController { viewController( - image: .local(image: UIImage(named: "warning_2_24")?.withTintColor(.themeJacob)), - title: "copy_warning.title".localized, - items: [ - .highlightedDescription(text: "copy_warning.description".localized) - ], - buttons: [ - .init(style: .red, title: "copy_warning.i_will_risk_it".localized) { - UIPasteboard.general.string = value - HudHelper.instance.show(banner: .copied) - }, - .init(style: .transparent, title: "copy_warning.dont_copy".localized) - ] + image: .local(image: UIImage(named: "warning_2_24")?.withTintColor(.themeJacob)), + title: "copy_warning.title".localized, + items: [ + .highlightedDescription(text: "copy_warning.description".localized), + ], + buttons: [ + .init(style: .red, title: "copy_warning.i_will_risk_it".localized) { + UIPasteboard.general.string = value + HudHelper.instance.show(banner: .copied) + }, + .init(style: .transparent, title: "copy_warning.dont_copy".localized), + ] ) } - static func backupPrompt(account: Account, sourceViewController: UIViewController?) -> UIViewController { + static func backupPromptAfterCreate(account: Account, sourceViewController: UIViewController?) -> UIViewController { + backupPrompt( + title: "backup_prompt.backup_recovery_phrase".localized, + description: "backup_prompt.warning".localized, + cancelText: "backup_prompt.later".localized, + account: account, + sourceViewController: sourceViewController + ) + } + + static func backupRequiredPrompt(description: String, account: Account, sourceViewController: UIViewController?) -> UIViewController { + backupPrompt( + title: "backup_prompt.backup_required".localized, + description: description, + cancelText: "button.cancel".localized, + account: account, + sourceViewController: sourceViewController + ) + } + + private static func backupPrompt(title: String, description: String, cancelText: String, account: Account, sourceViewController: UIViewController?) -> UIViewController { viewController( - image: .local(image: UIImage(named: "warning_2_24")?.withTintColor(.themeJacob)), - title: "backup_prompt.title".localized, - items: [ - .highlightedDescription(text: "backup_prompt.warning".localized) - ], - buttons: [ - .init(style: .yellow, title: "backup_prompt.backup_manual".localized, imageName: "edit_24", actionType: .afterClose) { [weak sourceViewController] in - guard let viewController = BackupModule.manualViewController(account: account) else { - return - } - - sourceViewController?.present(viewController, animated: true) - }, - .init(style: .gray, title: "backup_prompt.backup_cloud".localized, imageName: "icloud_24", actionType: .afterClose) { [weak sourceViewController] in - sourceViewController?.present(BackupModule.cloudViewController(account: account), animated: true) - }, - .init(style: .transparent, title: "backup_prompt.later".localized) - ] + image: .local(image: UIImage(named: "warning_2_24")?.withTintColor(.themeJacob)), + title: title, + items: [ + .highlightedDescription(text: description), + ], + buttons: [ + .init(style: .yellow, title: "backup_prompt.backup_manual".localized, imageName: "edit_24", actionType: .afterClose) { [weak sourceViewController] in + guard let viewController = BackupModule.manualViewController(account: account) else { + return + } + + sourceViewController?.present(viewController, animated: true) + }, + .init(style: .gray, title: "backup_prompt.backup_cloud".localized, imageName: "icloud_24", actionType: .afterClose) { [weak sourceViewController] in + sourceViewController?.present(BackupModule.cloudViewController(account: account), animated: true) + }, + .init(style: .transparent, title: cancelText), + ] ) } static func description(title: String, text: String) -> UIViewController { viewController( - image: .local(image: UIImage(named: "circle_information_20")?.withTintColor(.themeGray)), - title: title, - items: [ - .description(text: text) - ] + image: .local(image: UIImage(named: "circle_information_20")?.withTintColor(.themeGray)), + title: title, + items: [ + .description(text: text), + ] ) } - static func confirmDeleteCloudBackupController(action: (() -> ())?) -> UIViewController { + static func confirmDeleteCloudBackupController(action: (() -> Void)?) -> UIViewController { viewController( - image: .local(image: UIImage(named: "trash_24")?.withTintColor(.themeLucian)), - title: "manage_account.cloud_delete_backup_recovery_phrase".localized, - items: [ - .highlightedDescription(text: "manage_account.cloud_delete_backup_recovery_phrase.description".localized) - ], - buttons: [ - .init(style: .red, title: "button.delete".localized, actionType: .afterClose) { - action?() - }, - .init(style: .transparent, title: "button.cancel".localized) - ] + image: .local(image: UIImage(named: "trash_24")?.withTintColor(.themeLucian)), + title: "manage_account.cloud_delete_backup_recovery_phrase".localized, + items: [ + .highlightedDescription(text: "manage_account.cloud_delete_backup_recovery_phrase.description".localized), + ], + buttons: [ + .init(style: .red, title: "button.delete".localized, actionType: .afterClose) { + action?() + }, + .init(style: .transparent, title: "button.cancel".localized), + ] ) } - static func deleteCloudBackupAfterManualBackupController(action: (() -> ())?) -> UIViewController { + static func deleteCloudBackupAfterManualBackupController(action: (() -> Void)?) -> UIViewController { viewController( - image: .local(image: UIImage(named: "warning_2_24")?.withTintColor(.themeJacob)), - title: "manage_account.manual_backup_required".localized, - items: [ - .highlightedDescription(text: "manage_account.manual_backup_required.description".localized) - ], - buttons: [ - .init(style: .yellow, title: "manage_account.manual_backup_required.button".localized, actionType: .afterClose) { - action?() - }, - .init(style: .transparent, title: "button.cancel".localized) - ] + image: .local(image: UIImage(named: "warning_2_24")?.withTintColor(.themeJacob)), + title: "manage_account.manual_backup_required".localized, + items: [ + .highlightedDescription(text: "manage_account.manual_backup_required.description".localized), + ], + buttons: [ + .init(style: .yellow, title: "manage_account.manual_backup_required.button".localized, actionType: .afterClose) { + action?() + }, + .init(style: .transparent, title: "button.cancel".localized), + ] ) } static func cloudNotAvailableController() -> UIViewController { BottomSheetModule.viewController( - image: .local(image: UIImage(named: "icloud_24")?.withTintColor(.themeJacob)), - title: "backup.cloud.no_access.title".localized, - items: [ - .highlightedDescription(text: "backup.cloud.no_access.description".localized) - ], - buttons: [ - .init(style: .yellow, title: "button.ok".localized, actionType: .afterClose), - ] + image: .local(image: UIImage(named: "icloud_24")?.withTintColor(.themeJacob)), + title: "backup.cloud.no_access.title".localized, + items: [ + .highlightedDescription(text: "backup.cloud.no_access.description".localized), + ], + buttons: [ + .init(style: .yellow, title: "button.ok".localized, actionType: .afterClose), + ] ) } - } extension BottomSheetModule { - enum Item { case description(text: String) case highlightedDescription(text: String, style: HighlightedDescriptionBaseView.Style = .yellow) @@ -130,9 +145,9 @@ extension BottomSheetModule { let title: String let imageName: String? let actionType: ActionType - let action: (() -> ())? + let action: (() -> Void)? - init(style: PrimaryButton.Style, title: String, imageName: String? = nil, actionType: ActionType = .regular, action: (() -> ())? = nil) { + init(style: PrimaryButton.Style, title: String, imageName: String? = nil, actionType: ActionType = .regular, action: (() -> Void)? = nil) { self.style = style self.title = title self.imageName = imageName @@ -145,7 +160,6 @@ extension BottomSheetModule { case afterClose } } - } struct ViewWrapper: UIViewControllerRepresentable { @@ -163,4 +177,3 @@ struct ViewWrapper: UIViewControllerRepresentable { func updateUIViewController(_: UIViewController, context _: Context) {} } - diff --git a/UnstoppableWallet/UnstoppableWallet/Modules/ManageAccounts/ManageAccountsViewController.swift b/UnstoppableWallet/UnstoppableWallet/Modules/ManageAccounts/ManageAccountsViewController.swift index ee7699031e..8128fc6aa1 100644 --- a/UnstoppableWallet/UnstoppableWallet/Modules/ManageAccounts/ManageAccountsViewController.swift +++ b/UnstoppableWallet/UnstoppableWallet/Modules/ManageAccounts/ManageAccountsViewController.swift @@ -1,10 +1,10 @@ -import UIKit -import ThemeKit +import ComponentKit +import RxCocoa +import RxSwift import SectionsTableView import SnapKit -import RxSwift -import RxCocoa -import ComponentKit +import ThemeKit +import UIKit class ManageAccountsViewController: ThemeViewController { private let viewModel: ManageAccountsViewModel @@ -30,7 +30,8 @@ class ManageAccountsViewController: ThemeViewController { hidesBottomBarWhenPushed = true } - required init?(coder aDecoder: NSCoder) { + @available(*, unavailable) + required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } @@ -55,26 +56,26 @@ class ManageAccountsViewController: ThemeViewController { createCell.set(backgroundStyle: .lawrence, isFirst: true) CellBuilderNew.buildStatic(cell: createCell, rootElement: .hStack([ - .image24 { (component: ImageComponent) -> () in + .image24 { (component: ImageComponent) in component.imageView.image = UIImage(named: "plus_24")?.withTintColor(.themeJacob) }, - .text { (component: TextComponent) -> () in + .text { (component: TextComponent) in component.font = .body component.textColor = .themeJacob component.text = "onboarding.balance.create".localized - } + }, ])) restoreCell.set(backgroundStyle: .lawrence) CellBuilderNew.buildStatic(cell: restoreCell, rootElement: .hStack([ - .image24 { (component: ImageComponent) -> () in + .image24 { (component: ImageComponent) in component.imageView.image = UIImage(named: "download_24")?.withTintColor(.themeJacob) }, - .text { (component: TextComponent) -> () in + .text { (component: TextComponent) in component.font = .body component.textColor = .themeJacob component.text = "onboarding.balance.import".localized - } + }, ])) watchCell.set(backgroundStyle: .lawrence, isLast: true) @@ -140,134 +141,127 @@ class ManageAccountsViewController: ThemeViewController { tableView.reload(animated: true) } - } extension ManageAccountsViewController { - func handleDismiss() { if viewModel.shouldClose { dismiss(animated: true) } } - } extension ManageAccountsViewController: ICreateAccountListener { - func handleCreateAccount() { dismiss(animated: true) { [weak self] in guard let account = self?.viewModel.lastCreatedAccount else { return } - let viewController = BottomSheetModule.backupPrompt(account: account, sourceViewController: self) + let viewController = BottomSheetModule.backupPromptAfterCreate(account: account, sourceViewController: self) self?.present(viewController, animated: true) } } - } extension ManageAccountsViewController: SectionsDataSource { - - private func row(viewItem: ManageAccountsViewModel.ViewItem, index: Int, isFirst: Bool, isLast: Bool) -> RowProtocol { + private func row(viewItem: ManageAccountsViewModel.ViewItem, index _: Int, isFirst: Bool, isLast: Bool) -> RowProtocol { CellBuilderNew.row( - rootElement: .hStack([ - .image24 { component in - component.imageView.image = viewItem.selected ? UIImage(named: "circle_radioon_24")?.withTintColor(.themeJacob) : UIImage(named: "circle_radiooff_24")?.withTintColor(.themeGray) + rootElement: .hStack([ + .image24 { component in + component.imageView.image = viewItem.selected ? UIImage(named: "circle_radioon_24")?.withTintColor(.themeJacob) : UIImage(named: "circle_radiooff_24")?.withTintColor(.themeGray) + }, + .vStackCentered([ + .text { component in + component.font = .body + component.textColor = .themeLeah + component.text = viewItem.title }, - .vStackCentered([ - .text { component in - component.font = .body - component.textColor = .themeLeah - component.text = viewItem.title - }, - .margin(1), - .text { component in - component.font = .subhead2 - component.textColor = viewItem.isSubtitleWarning ? .themeLucian : .themeGray - component.text = viewItem.subtitle - } - ]), - .image20 { component in - component.isHidden = !viewItem.watchAccount - component.imageView.image = UIImage(named: "binocule_20")?.withTintColor(.themeGray) + .margin(1), + .text { component in + component.font = .subhead2 + component.textColor = viewItem.isSubtitleWarning ? .themeLucian : .themeGray + component.text = viewItem.subtitle }, - .secondaryCircleButton { [weak self] component in - component.button.set( - image: viewItem.alert ? UIImage(named: "warning_2_20") : UIImage(named: "more_2_20"), - style: viewItem.alert ? .red : .default - ) - component.onTap = { - self?.onTapEdit(accountId: viewItem.accountId) - } - } ]), - tableView: tableView, - id: viewItem.accountId, - hash: "\(viewItem.title)-\(viewItem.subtitle)-\(viewItem.selected)-\(viewItem.alert)-\(viewItem.watchAccount)-\(isFirst)-\(isLast)", - height: .heightDoubleLineCell, - autoDeselect: true, - bind: { cell in - cell.set(backgroundStyle: .lawrence, isFirst: isFirst, isLast: isLast) + .image20 { component in + component.isHidden = !viewItem.watchAccount + component.imageView.image = UIImage(named: "binocule_20")?.withTintColor(.themeGray) }, - action: { [weak self] in - self?.viewModel.onSelect(accountId: viewItem.accountId) - } + .secondaryCircleButton { [weak self] component in + component.button.set( + image: viewItem.alert ? UIImage(named: "warning_2_20") : UIImage(named: "more_2_20"), + style: viewItem.alert ? .red : .default + ) + component.onTap = { + self?.onTapEdit(accountId: viewItem.accountId) + } + }, + ]), + tableView: tableView, + id: viewItem.accountId, + hash: "\(viewItem.title)-\(viewItem.subtitle)-\(viewItem.selected)-\(viewItem.alert)-\(viewItem.watchAccount)-\(isFirst)-\(isLast)", + height: .heightDoubleLineCell, + autoDeselect: true, + bind: { cell in + cell.set(backgroundStyle: .lawrence, isFirst: isFirst, isLast: isLast) + }, + action: { [weak self] in + self?.viewModel.onSelect(accountId: viewItem.accountId) + } ) } func buildSections() -> [SectionProtocol] { [ Section( - id: "regular-view-items", - headerState: .margin(height: .margin12), - footerState: .margin(height: viewState.regularViewItems.isEmpty ? 0 : .margin32), - rows: viewState.regularViewItems.enumerated().map { index, viewItem in - row(viewItem: viewItem, index: index, isFirst: index == 0, isLast: index == viewState.regularViewItems.count - 1) - } + id: "regular-view-items", + headerState: .margin(height: .margin12), + footerState: .margin(height: viewState.regularViewItems.isEmpty ? 0 : .margin32), + rows: viewState.regularViewItems.enumerated().map { index, viewItem in + row(viewItem: viewItem, index: index, isFirst: index == 0, isLast: index == viewState.regularViewItems.count - 1) + } ), Section( - id: "watch-view-items", - footerState: .margin(height: viewState.watchViewItems.isEmpty ? 0 : .margin32), - rows: viewState.watchViewItems.enumerated().map { index, viewItem in - row(viewItem: viewItem, index: index, isFirst: index == 0, isLast: index == viewState.watchViewItems.count - 1) - } + id: "watch-view-items", + footerState: .margin(height: viewState.watchViewItems.isEmpty ? 0 : .margin32), + rows: viewState.watchViewItems.enumerated().map { index, viewItem in + row(viewItem: viewItem, index: index, isFirst: index == 0, isLast: index == viewState.watchViewItems.count - 1) + } ), Section( - id: "actions", - footerState: .margin(height: .margin32), - rows: [ - StaticRow( - cell: createCell, - id: "create", - height: .heightCell48, - autoDeselect: true, - action: { [weak self] in - self?.onTapCreate() - } - ), - StaticRow( - cell: restoreCell, - id: "restore", - height: .heightCell48, - autoDeselect: true, - action: { [weak self] in - self?.onTapRestore() - } - ), - StaticRow( - cell: watchCell, - id: "watch", - height: .heightCell48, - autoDeselect: true, - action: { [weak self] in - self?.onTapWatch() - } - ) - ] - ) + id: "actions", + footerState: .margin(height: .margin32), + rows: [ + StaticRow( + cell: createCell, + id: "create", + height: .heightCell48, + autoDeselect: true, + action: { [weak self] in + self?.onTapCreate() + } + ), + StaticRow( + cell: restoreCell, + id: "restore", + height: .heightCell48, + autoDeselect: true, + action: { [weak self] in + self?.onTapRestore() + } + ), + StaticRow( + cell: watchCell, + id: "watch", + height: .heightCell48, + autoDeselect: true, + action: { [weak self] in + self?.onTapWatch() + } + ), + ] + ), ] } - } diff --git a/UnstoppableWallet/UnstoppableWallet/Modules/Wallet/Token/DataSources/WalletTokenBalance/WalletTokenBalanceDataSource.swift b/UnstoppableWallet/UnstoppableWallet/Modules/Wallet/Token/DataSources/WalletTokenBalance/WalletTokenBalanceDataSource.swift index 974d75567f..571cf3a1de 100644 --- a/UnstoppableWallet/UnstoppableWallet/Modules/Wallet/Token/DataSources/WalletTokenBalance/WalletTokenBalanceDataSource.swift +++ b/UnstoppableWallet/UnstoppableWallet/Modules/Wallet/Token/DataSources/WalletTokenBalance/WalletTokenBalanceDataSource.swift @@ -215,26 +215,10 @@ class WalletTokenBalanceDataSource: NSObject { } private func openBackupRequired(wallet: Wallet) { - let viewController = BottomSheetModule.viewController( - image: .local(image: UIImage(named: "warning_2_24")?.withTintColor(.themeJacob)), - title: "backup_required.title".localized, - items: [ - .highlightedDescription(text: "receive_alert.not_backed_up_description".localized(wallet.account.name, wallet.coin.name)), - ], - buttons: [ - .init(style: .yellow, title: "backup_prompt.backup_manual".localized, imageName: "edit_24", actionType: .afterClose) { [weak self] in - guard let viewController = BackupModule.manualViewController(account: wallet.account) else { - return - } - - self?.parentViewController?.present(viewController, animated: true) - }, - .init(style: .gray, title: "backup_prompt.backup_cloud".localized, imageName: "icloud_24", actionType: .afterClose) { [weak self] in - let viewController = BackupModule.cloudViewController(account: wallet.account) - self?.parentViewController?.present(viewController, animated: true) - }, - .init(style: .transparent, title: "button.cancel".localized), - ] + let viewController = BottomSheetModule.backupRequiredPrompt( + description: "receive_alert.not_backed_up_description".localized(wallet.account.name, wallet.coin.name), + account: wallet.account, + sourceViewController: parentViewController ) parentViewController?.present(viewController, animated: true) diff --git a/UnstoppableWallet/UnstoppableWallet/Modules/Wallet/WalletViewController.swift b/UnstoppableWallet/UnstoppableWallet/Modules/Wallet/WalletViewController.swift index b15e076e7b..0807c05231 100644 --- a/UnstoppableWallet/UnstoppableWallet/Modules/Wallet/WalletViewController.swift +++ b/UnstoppableWallet/UnstoppableWallet/Modules/Wallet/WalletViewController.swift @@ -230,7 +230,7 @@ class WalletViewController: ThemeViewController { } @objc func onTapCreate() { - let viewController = CreateAccountModule.viewController(sourceViewController: self) + let viewController = CreateAccountModule.viewController(sourceViewController: self, listener: self) present(viewController, animated: true) } @@ -490,26 +490,10 @@ class WalletViewController: ThemeViewController { } private func openBackupRequired(account: Account) { - let viewController = BottomSheetModule.viewController( - image: .local(image: UIImage(named: "warning_2_24")?.withTintColor(.themeJacob)), - title: "backup_required.title".localized, - items: [ - .highlightedDescription(text: "receive_alert.any_coins.not_backed_up_description".localized(account.name)), - ], - buttons: [ - .init(style: .yellow, title: "backup_prompt.backup_manual".localized, imageName: "edit_24", actionType: .afterClose) { [weak self] in - guard let viewController = BackupModule.manualViewController(account: account) else { - return - } - - self?.present(viewController, animated: true) - }, - .init(style: .gray, title: "backup_prompt.backup_cloud".localized, imageName: "icloud_24", actionType: .afterClose) { [weak self] in - let viewController = BackupModule.cloudViewController(account: account) - self?.present(viewController, animated: true) - }, - .init(style: .transparent, title: "button.cancel".localized), - ] + let viewController = BottomSheetModule.backupRequiredPrompt( + description: "receive_alert.any_coins.not_backed_up_description".localized(account.name), + account: account, + sourceViewController: self ) present(viewController, animated: true) @@ -601,7 +585,7 @@ class WalletViewController: ThemeViewController { return } - let viewController = BottomSheetModule.backupPrompt(account: account, sourceViewController: self) + let viewController = BottomSheetModule.backupPromptAfterCreate(account: account, sourceViewController: self) present(viewController, animated: true) } } diff --git a/UnstoppableWallet/UnstoppableWallet/Modules/Wallet/WalletViewModel.swift b/UnstoppableWallet/UnstoppableWallet/Modules/Wallet/WalletViewModel.swift index 36032b4a9a..363475cf3f 100644 --- a/UnstoppableWallet/UnstoppableWallet/Modules/Wallet/WalletViewModel.swift +++ b/UnstoppableWallet/UnstoppableWallet/Modules/Wallet/WalletViewModel.swift @@ -82,6 +82,11 @@ class WalletViewModel { case .invalidApiKey: state = .invalidApiKey } } + + switch service.state { + case let .loaded(items): qrScanVisible = !service.watchAccount && !items.isEmpty + default: qrScanVisible = false + } } private func sync(activeAccount: Account?) { diff --git a/UnstoppableWallet/UnstoppableWallet/Modules/WalletConnect/Workers/WalletConnectAppShowWorker/WalletConnectAppShowView.swift b/UnstoppableWallet/UnstoppableWallet/Modules/WalletConnect/Workers/WalletConnectAppShowWorker/WalletConnectAppShowView.swift index a051a33bbf..c3d14c058f 100644 --- a/UnstoppableWallet/UnstoppableWallet/Modules/WalletConnect/Workers/WalletConnectAppShowWorker/WalletConnectAppShowView.swift +++ b/UnstoppableWallet/UnstoppableWallet/Modules/WalletConnect/Workers/WalletConnectAppShowWorker/WalletConnectAppShowView.swift @@ -125,26 +125,10 @@ extension WalletConnectAppShowView { ] ) case let .unbackupedAccount(account): - viewController = BottomSheetModule.viewController( - image: .local(image: UIImage(named: "warning_2_24")?.withTintColor(.themeJacob)), - title: "backup_required.title".localized, - items: [ - .highlightedDescription(text: "wallet_connect.unbackuped_account.description".localized(account.name)), - ], - buttons: [ - .init(style: .yellow, title: "backup_prompt.backup".localized, actionType: .afterClose) { [weak sourceViewController] in - guard let viewController = BackupModule.manualViewController(account: account) else { - return - } - - sourceViewController?.present(viewController, animated: true) - }, - .init(style: .gray, title: "backup_prompt.backup_cloud".localized, imageName: "icloud_24", actionType: .afterClose) { [weak sourceViewController] in - let viewController = BackupModule.cloudViewController(account: account) - sourceViewController?.present(viewController, animated: true) - }, - .init(style: .transparent, title: "button.cancel".localized), - ] + viewController = BottomSheetModule.backupRequiredPrompt( + description: "wallet_connect.unbackuped_account.description".localized(account.name), + account: account, + sourceViewController: sourceViewController ) } diff --git a/UnstoppableWallet/UnstoppableWallet/en.lproj/Localizable.strings b/UnstoppableWallet/UnstoppableWallet/en.lproj/Localizable.strings index b5a4cee487..089716155a 100644 --- a/UnstoppableWallet/UnstoppableWallet/en.lproj/Localizable.strings +++ b/UnstoppableWallet/UnstoppableWallet/en.lproj/Localizable.strings @@ -236,13 +236,10 @@ Go to Settings - > %@ and allow access to the camera."; "backup_verify_passphrase.description" = "Enter the passphrase"; "backup_verify_passphrase.incorrect_passphrase" = "Incorrect passphrase"; -// Backup Required - -"backup_required.title" = "Backup Required"; - // Backup Prompt -"backup_prompt.title" = "Manual Backup"; +"backup_prompt.backup_recovery_phrase" = "Backup Recovery Phrase"; +"backup_prompt.backup_required" = "Backup Required"; "backup_prompt.warning" = "Create a backup copy of the recovery phrase and the associated password that will allow you to recover your wallet if your phone is lost, stolen, broken, etc."; "backup_prompt.backup" = "Backup"; "backup_prompt.backup_manual" = "Manual Backup";