浏览代码

streamline login

B. Petersen 5 年之前
父节点
当前提交
644eec1c21

+ 0 - 4
deltachat-ios/Controller/NewContactController.swift

@@ -61,10 +61,6 @@ class NewContactController: UITableViewController {
         }
         }
     }
     }
 
 
-    override func viewWillAppear(_: Bool) {
-        navigationController?.setNavigationBarHidden(false, animated: false)
-    }
-
     @objc func emailTextChanged() {
     @objc func emailTextChanged() {
         let emailText = emailCell.textField.text ?? ""
         let emailText = emailCell.textField.text ?? ""
         model.email = emailText
         model.email = emailText

+ 14 - 4
deltachat-ios/Controller/WelcomeViewController.swift

@@ -16,9 +16,14 @@ class WelcomeViewController: UIViewController, ProgressAlertHandler {
     private lazy var welcomeView: WelcomeContentView = {
     private lazy var welcomeView: WelcomeContentView = {
         let view = WelcomeContentView()
         let view = WelcomeContentView()
         view.onLogin = { [unowned self] in
         view.onLogin = { [unowned self] in
-            if let appDelegate = UIApplication.shared.delegate as? AppDelegate {
-                appDelegate.appCoordinator.presentLogin()
+            let accountSetupController = AccountSetupController(dcContext: self.dcContext, editView: false)
+            accountSetupController.onLoginSuccess = {
+                [unowned self] in
+                if let appDelegate = UIApplication.shared.delegate as? AppDelegate {
+                    appDelegate.appCoordinator.presentTabBarController()
+                }
             }
             }
+            self.navigationController?.pushViewController(accountSetupController, animated: true)
         }
         }
         view.onScanQRCode  = { [unowned self] in
         view.onScanQRCode  = { [unowned self] in
             self.showQRReader()
             self.showQRReader()
@@ -34,10 +39,15 @@ class WelcomeViewController: UIViewController, ProgressAlertHandler {
     init(dcContext: DcContext) {
     init(dcContext: DcContext) {
         self.dcContext = dcContext
         self.dcContext = dcContext
         super.init(nibName: nil, bundle: nil)
         super.init(nibName: nil, bundle: nil)
+        self.navigationItem.title = String.localized("welcome_desktop")
         onProgressSuccess = {
         onProgressSuccess = {
-            if let appDelegate = UIApplication.shared.delegate as? AppDelegate {
-                appDelegate.appCoordinator.handleQRAccountCreationSuccess()
+            let profileInfoController = ProfileInfoViewController(context: dcContext)
+            profileInfoController.onClose = {
+                if let appDelegate = UIApplication.shared.delegate as? AppDelegate {
+                    appDelegate.appCoordinator.presentTabBarController()
+                }
             }
             }
+            self.navigationController?.setViewControllers([profileInfoController], animated: true)
         }
         }
     }
     }
 
 

+ 6 - 48
deltachat-ios/Coordinator/AppCoordinator.swift

@@ -15,22 +15,13 @@ class AppCoordinator: NSObject, Coordinator {
 
 
     private let appStateRestorer = AppStateRestorer.shared
     private let appStateRestorer = AppStateRestorer.shared
 
 
-
     // MARK: - login view handling
     // MARK: - login view handling
     private lazy var loginNavController: UINavigationController = {
     private lazy var loginNavController: UINavigationController = {
-        let accountSetupController = AccountSetupController(dcContext: dcContext, editView: false)
-        let nav = UINavigationController(rootViewController: accountSetupController)
-        accountSetupController.onLoginSuccess = {
-            [unowned self] in
-            self.loginNavController.dismiss(animated: true) {
-                self.presentTabBarController()
-            }
-        }
+        let root = WelcomeViewController(dcContext: dcContext)
+        let nav = UINavigationController(rootViewController: root)
         return nav
         return nav
     }()
     }()
 
 
-    private var welcomeController: WelcomeViewController?
-
     // MARK: - tabbar view handling
     // MARK: - tabbar view handling
     private lazy var tabBarController: UITabBarController = {
     private lazy var tabBarController: UITabBarController = {
         let tabBarController = UITabBarController()
         let tabBarController = UITabBarController()
@@ -115,51 +106,18 @@ class AppCoordinator: NSObject, Coordinator {
     }
     }
 
 
     func presentWelcomeController() {
     func presentWelcomeController() {
+        window.rootViewController = loginNavController
+        window.makeKeyAndVisible()
+
         // the applicationIconBadgeNumber is remembered by the system even on reinstalls (just tested on ios 13.3.1),
         // the applicationIconBadgeNumber is remembered by the system even on reinstalls (just tested on ios 13.3.1),
         // to avoid appearing an old number of a previous installation, we reset the counter manually.
         // to avoid appearing an old number of a previous installation, we reset the counter manually.
         // but even when this changes in ios, we need the reset as we allow account-deletion also in-app.
         // but even when this changes in ios, we need the reset as we allow account-deletion also in-app.
         UIApplication.shared.applicationIconBadgeNumber = 0
         UIApplication.shared.applicationIconBadgeNumber = 0
-
-        let wc = WelcomeViewController(dcContext: dcContext)
-        self.welcomeController = wc
-        window.rootViewController = wc
-        window.makeKeyAndVisible()
     }
     }
 
 
     func presentTabBarController() {
     func presentTabBarController() {
         window.rootViewController = tabBarController
         window.rootViewController = tabBarController
-        welcomeController = nil
-        window.makeKeyAndVisible()
         showTab(index: chatsTab)
         showTab(index: chatsTab)
-    }
-
-    func presentLogin() {
-        // add cancel button item to accountSetupController
-        if let accountSetupController = loginNavController.topViewController as? AccountSetupController {
-            accountSetupController.navigationItem.leftBarButtonItem = UIBarButtonItem(
-                title: String.localized("cancel"),
-                style: .done,
-                target: self, action: #selector(loginCancelButtonPressed)
-            )
-            accountSetupController.onLoginSuccess = handleLoginSuccess
-        }
-        loginNavController.modalPresentationStyle = .fullScreen
-        welcomeController?.present(loginNavController, animated: true, completion: nil)
-    }
-
-    @objc private func loginCancelButtonPressed(_ sender: UIBarButtonItem) {
-        loginNavController.dismiss(animated: true, completion: nil)
-    }
-
-    private func handleLoginSuccess() {
-        presentTabBarController()
-    }
-
-    func handleQRAccountCreationSuccess() {
-        let profileInfoController = ProfileInfoViewController(context: dcContext)
-        let profileInfoNav = UINavigationController(rootViewController: profileInfoController)
-        profileInfoNav.modalPresentationStyle = .fullScreen
-        profileInfoController.onClose = handleLoginSuccess
-        welcomeController?.present(profileInfoNav, animated: true, completion: nil)
+        window.makeKeyAndVisible()
     }
     }
 }
 }