mirror of https://github.com/oxen-io/session-ios
Merge branch 'charlesmchen/backupRestoreFlow'
commit
8868e0a555
@ -0,0 +1,104 @@
|
||||
//
|
||||
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
@objc
|
||||
public class RegistrationController: NSObject {
|
||||
|
||||
// MARK: - Dependencies
|
||||
|
||||
private static var tsAccountManager: TSAccountManager {
|
||||
return TSAccountManager.sharedInstance()
|
||||
}
|
||||
|
||||
private static var backup: OWSBackup {
|
||||
return AppEnvironment.shared.backup
|
||||
}
|
||||
|
||||
// MARK: -
|
||||
|
||||
private override init() {}
|
||||
|
||||
// MARK: -
|
||||
|
||||
@objc
|
||||
public class func verificationWasCompleted(fromView view: UIViewController) {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
if tsAccountManager.isReregistering() {
|
||||
showProfileView(fromView: view)
|
||||
} else {
|
||||
checkCanImportBackup(fromView: view)
|
||||
}
|
||||
}
|
||||
|
||||
private class func showProfileView(fromView view: UIViewController) {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
Logger.info("")
|
||||
|
||||
guard let navigationController = view.navigationController else {
|
||||
owsFailDebug("Missing navigationController")
|
||||
return
|
||||
}
|
||||
|
||||
ProfileViewController.present(forRegistration: navigationController)
|
||||
}
|
||||
|
||||
private class func showBackupRestoreView(fromView view: UIViewController) {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
Logger.info("")
|
||||
|
||||
guard let navigationController = view.navigationController else {
|
||||
owsFailDebug("Missing navigationController")
|
||||
return
|
||||
}
|
||||
|
||||
let restoreView = BackupRestoreViewController()
|
||||
navigationController.setViewControllers([restoreView], animated: true)
|
||||
}
|
||||
|
||||
private class func checkCanImportBackup(fromView view: UIViewController) {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
Logger.info("")
|
||||
|
||||
self.backup.checkCanImport({ (canImport) in
|
||||
Logger.info("canImport: \(canImport)")
|
||||
|
||||
if (canImport) {
|
||||
self.backup.setHasPendingRestoreDecision(true)
|
||||
|
||||
self.showBackupRestoreView(fromView: view)
|
||||
} else {
|
||||
self.showProfileView(fromView: view)
|
||||
}
|
||||
}) { (_) in
|
||||
self.showBackupCheckFailedAlert(fromView: view)
|
||||
}
|
||||
}
|
||||
|
||||
private class func showBackupCheckFailedAlert(fromView view: UIViewController) {
|
||||
AssertIsOnMainThread()
|
||||
|
||||
Logger.info("")
|
||||
|
||||
let alert = UIAlertController(title: NSLocalizedString("CHECK_FOR_BACKUP_FAILED_TITLE",
|
||||
comment: "Title for alert shown when the app failed to check for an existing backup."),
|
||||
message: NSLocalizedString("CHECK_FOR_BACKUP_FAILED_MESSAGE",
|
||||
comment: "Message for alert shown when the app failed to check for an existing backup."),
|
||||
preferredStyle: .alert)
|
||||
alert.addAction(UIAlertAction(title: NSLocalizedString("REGISTER_FAILED_TRY_AGAIN", comment: ""),
|
||||
style: .default) { (_) in
|
||||
self.checkCanImportBackup(fromView: view)
|
||||
})
|
||||
alert.addAction(UIAlertAction(title: NSLocalizedString("CHECK_FOR_BACKUP_DO_NOT_RESTORE", comment: "The label for the 'do not restore backup' button."),
|
||||
style: .destructive) { (_) in
|
||||
self.showProfileView(fromView: view)
|
||||
})
|
||||
view.present(alert, animated: true)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue