B. Petersen 5 anni fa
parent
commit
c77bc8456b
1 ha cambiato i file con 123 aggiunte e 124 eliminazioni
  1. 123 124
      deltachat-ios/Controller/AccountSetupController.swift

+ 123 - 124
deltachat-ios/Controller/AccountSetupController.swift

@@ -2,15 +2,15 @@ import SafariServices
 import UIKit
 
 class AccountSetupController: UITableViewController {
-    
+
     weak var coordinator: AccountSetupCoordinator?
-    
+
     private let dcContext: DcContext
     private var skipOauth = false
     private var backupProgressObserver: Any?
     private var configureProgressObserver: Any?
     private var oauth2Observer: Any?
-    
+
     private let tagEmailCell = 0
     private let tagPasswordCell = 1
     private let tagAdvancedCell = 2
@@ -27,7 +27,7 @@ class AccountSetupController: UITableViewController {
     private let tagEmptyServerCell = 13
     private let tagDeleteAccountCell = 14
     private let tagRestoreCell = 15
-    
+
     private let tagTextFieldEmail = 100
     private let tagTextFieldPassword = 200
     private let tagTextFieldImapServer = 300
@@ -35,16 +35,16 @@ class AccountSetupController: UITableViewController {
     private let tagTextFieldSmtpServer = 500
     private let tagTextFieldSmtpUser = 600
     private let tagTextFieldSmtpPassword = 700
-    
+
     // add cells to sections
-    
+
     let basicSection = 100
     let advancedSection = 200
     let restoreSection = 300
     let folderSection = 400
     let dangerSection = 500
     private var sections = [Int]()
-    
+
     private lazy var basicSectionCells: [UITableViewCell] = [emailCell, passwordCell]
     private lazy var restoreCells: [UITableViewCell] = [restoreCell]
     private lazy var advancedSectionCells: [UITableViewCell] = [
@@ -65,11 +65,11 @@ class AccountSetupController: UITableViewController {
     private let editView: Bool
     private var advancedSectionShowing: Bool = false
     private var providerInfoShowing: Bool = false
-    
+
     private var provider: DcProvider?
-    
+
     // MARK: - the progress dialog
-    
+
     private lazy var configProgressAlert: UIAlertController = {
         let alert = UIAlertController(title: "", message: "", preferredStyle: .alert)
         alert.addAction(UIAlertAction(
@@ -80,14 +80,14 @@ class AccountSetupController: UITableViewController {
         }))
         return alert
     }()
-    
+
     private func showProgressHud(title: String) {
         configProgressAlert.actions[0].isEnabled = true
         configProgressAlert.title = title
         configProgressAlert.message = String.localized("one_moment")
         present(configProgressAlert, animated: true, completion: nil)
     }
-    
+
     private func updateProgressHud(error message: String?) {
         DispatchQueue.main.async(execute: {
             self.configProgressAlert.dismiss(animated: false)
@@ -96,7 +96,7 @@ class AccountSetupController: UITableViewController {
             self.present(errorAlert, animated: true, completion: nil)
         })
     }
-    
+
     private func updateProgressHudSuccess() {
         updateProgressHudValue(value: 1000)
         DispatchQueue.main.asyncAfter(deadline: .now() + 1, execute: {
@@ -105,15 +105,15 @@ class AccountSetupController: UITableViewController {
             }
         })
     }
-    
+
     private func updateProgressHudValue(value: Int?) {
         if let value = value {
             configProgressAlert.message = String.localized("one_moment") + " " + String(value/10) + "%"
         }
     }
-    
+
     // MARK: - cells
-    
+
     private lazy var emailCell: TextFieldCell = {
         let cell = TextFieldCell.makeEmailCell(delegate: self)
         cell.tag = tagEmailCell
@@ -124,7 +124,7 @@ class AccountSetupController: UITableViewController {
         cell.textField.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)
         return cell
     }()
-    
+
     private lazy var passwordCell: TextFieldCell = {
         let cell = TextFieldCell.makePasswordCell(delegate: self)
         cell.tag = tagPasswordCell
@@ -143,7 +143,7 @@ class AccountSetupController: UITableViewController {
         }
         return cell
     }()
-    
+
     private lazy var restoreCell: UITableViewCell = {
         let cell = UITableViewCell(style: .value1, reuseIdentifier: nil)
         cell.textLabel?.text = String.localized("import_backup_title")
@@ -151,7 +151,7 @@ class AccountSetupController: UITableViewController {
         cell.tag = tagRestoreCell
         return cell
     }()
-    
+
     private lazy var emptyServerCell: ActionCell = {
         let cell = ActionCell(frame: .zero)
         cell.actionTitle = String.localized("pref_empty_server_title")
@@ -159,7 +159,7 @@ class AccountSetupController: UITableViewController {
         cell.tag = tagEmptyServerCell
         return cell
     }()
-    
+
     private lazy var deleteAccountCell: ActionCell = {
         let cell = ActionCell(frame: .zero)
         cell.actionTitle = String.localized("delete_account")
@@ -167,7 +167,7 @@ class AccountSetupController: UITableViewController {
         cell.tag = tagDeleteAccountCell
         return cell
     }()
-    
+
     lazy var advancedShowCell: UITableViewCell = {
         let cell = UITableViewCell(style: .value1, reuseIdentifier: nil)
         cell.textLabel?.text = String.localized("menu_advanced")
@@ -175,7 +175,7 @@ class AccountSetupController: UITableViewController {
         cell.tag = tagAdvancedCell
         return cell
     }()
-    
+
     lazy var imapServerCell: TextFieldCell = {
         let cell = TextFieldCell(
             descriptionID: "login_imap_server",
@@ -189,7 +189,7 @@ class AccountSetupController: UITableViewController {
         cell.textField.autocapitalizationType = .none
         return cell
     }()
-    
+
     lazy var imapUserCell: TextFieldCell = {
         let cell = TextFieldCell(
             descriptionID: "login_imap_login",
@@ -200,7 +200,7 @@ class AccountSetupController: UITableViewController {
         cell.tag = tagImapUserCell
         return cell
     }()
-    
+
     func editablePort(port: String?) -> String {
         if let port = port {
             if Int(port) == 0 {
@@ -211,7 +211,7 @@ class AccountSetupController: UITableViewController {
             return ""
         }
     }
-    
+
     lazy var imapPortCell: TextFieldCell = {
         let cell = TextFieldCell(
             descriptionID: "login_imap_port",
@@ -223,7 +223,7 @@ class AccountSetupController: UITableViewController {
         cell.textField.keyboardType = .numberPad
         return cell
     }()
-    
+
     lazy var imapSecurityCell: UITableViewCell = {
         let text = "\(DcConfig.getImapSecurity())"
         let cell = UITableViewCell(style: .value1, reuseIdentifier: nil)
@@ -234,7 +234,7 @@ class AccountSetupController: UITableViewController {
         cell.tag = tagImapSecurityCell
         return cell
     }()
-    
+
     lazy var smtpServerCell: TextFieldCell = {
         let cell = TextFieldCell(
             descriptionID: "login_smtp_server",
@@ -248,7 +248,7 @@ class AccountSetupController: UITableViewController {
         cell.textField.autocapitalizationType = .none
         return cell
     }()
-    
+
     lazy var smtpUserCell: TextFieldCell = {
         let cell = TextFieldCell(
             descriptionID: "login_smtp_login",
@@ -259,7 +259,7 @@ class AccountSetupController: UITableViewController {
         cell.tag = tagSmtpUserCell
         return cell
     }()
-    
+
     lazy var smtpPortCell: TextFieldCell = {
         let cell = TextFieldCell(
             descriptionID: "login_smtp_port",
@@ -271,7 +271,7 @@ class AccountSetupController: UITableViewController {
         cell.textField.keyboardType = .numberPad
         return cell
     }()
-    
+
     lazy var smtpPasswordCell: TextFieldCell = {
         let cell = TextFieldCell(
             descriptionID: "login_smtp_password",
@@ -284,7 +284,7 @@ class AccountSetupController: UITableViewController {
         cell.tag = tagSmtpPasswordCell
         return cell
     }()
-    
+
     lazy var smtpSecurityCell: UITableViewCell = {
         let security = "\(DcConfig.getSmtpSecurity())"
         let cell = UITableViewCell(style: .value1, reuseIdentifier: nil)
@@ -295,7 +295,7 @@ class AccountSetupController: UITableViewController {
         cell.selectionStyle = .none
         return cell
     }()
-    
+
     lazy var certCheckCell: UITableViewCell = {
         let certCheckType = CertificateCheckController.ValueConverter.convertHexToString(value: DcConfig.certificateChecks)
         let cell = UITableViewCell(style: .value1, reuseIdentifier: nil)
@@ -306,7 +306,7 @@ class AccountSetupController: UITableViewController {
         cell.selectionStyle = .none
         return cell
     }()
-    
+
     lazy var inboxWatchCell: SwitchCell = {
         return SwitchCell(
             textLabel: String.localized("pref_watch_inbox_folder"),
@@ -315,7 +315,7 @@ class AccountSetupController: UITableViewController {
                 self.dcContext.setConfigBool("inbox_watch", cell.isOn)
         })
     }()
-    
+
     lazy var sentboxWatchCell: SwitchCell = {
         return SwitchCell(
             textLabel: String.localized("pref_watch_sent_folder"),
@@ -324,7 +324,7 @@ class AccountSetupController: UITableViewController {
                 self.dcContext.setConfigBool("sentbox_watch", cell.isOn)
         })
     }()
-    
+
     lazy var mvboxWatchCell: SwitchCell = {
         return SwitchCell(
             textLabel: String.localized("pref_watch_mvbox_folder"),
@@ -333,7 +333,7 @@ class AccountSetupController: UITableViewController {
                 self.dcContext.setConfigBool("mvbox_watch", cell.isOn)
         })
     }()
-    
+
     lazy var sendCopyToSelfCell: SwitchCell = {
         return SwitchCell(
             textLabel: String.localized("pref_send_copy_to_self"),
@@ -342,7 +342,7 @@ class AccountSetupController: UITableViewController {
                 self.dcContext.setConfigBool("bcc_self", cell.isOn)
         })
     }()
-    
+
     lazy var mvboxMoveCell: SwitchCell = {
         return SwitchCell(
             textLabel: String.localized("pref_auto_folder_moves"),
@@ -351,7 +351,7 @@ class AccountSetupController: UITableViewController {
                 self.dcContext.setConfigBool("mvbox_move", cell.isOn)
         })
     }()
-    
+
     private lazy var loginButton: UIBarButtonItem = {
         let button = UIBarButtonItem(
             title: String.localized("login_title"),
@@ -366,7 +366,7 @@ class AccountSetupController: UITableViewController {
     init(dcContext: DcContext, editView: Bool) {
         self.editView = editView
         self.dcContext = dcContext
-        
+
         self.sections.append(basicSection)
         self.sections.append(advancedSection)
         if editView {
@@ -375,11 +375,11 @@ class AccountSetupController: UITableViewController {
         } else {
             self.sections.append(restoreSection)
         }
-        
+
         super.init(style: .grouped)
         hidesBottomBarWhenPushed = true
     }
-    
+
     required init?(coder _: NSCoder) {
         fatalError("init(coder:) has not been implemented")
     }
@@ -394,23 +394,23 @@ class AccountSetupController: UITableViewController {
         }
         navigationItem.rightBarButtonItem = loginButton
     }
-    
+
     override func viewWillAppear(_ animated: Bool) {
         super.viewWillAppear(animated)
         initSelectionCells()
         handleLoginButton()
     }
-    
+
     override func viewDidAppear(_ animated: Bool) {
         super.viewDidAppear(animated)
     }
-    
+
     override func viewWillDisappear(_ animated: Bool) {
         resignFirstResponderOnAllCells()
     }
-    
+
     override func viewDidDisappear(_: Bool) {
-        
+
         let nc = NotificationCenter.default
         if let backupProgressObserver = self.backupProgressObserver {
             nc.removeObserver(backupProgressObserver)
@@ -422,12 +422,12 @@ class AccountSetupController: UITableViewController {
             nc.removeObserver(oauth2Observer)
         }
     }
-    
+
     // MARK: - Table view data source
     override func numberOfSections(in _: UITableView) -> Int {
         return sections.count
     }
-    
+
     override func tableView(_: UITableView, numberOfRowsInSection section: Int) -> Int {
         if sections[section] == basicSection {
             return basicSectionCells.count
@@ -441,7 +441,7 @@ class AccountSetupController: UITableViewController {
             return advancedSectionShowing ? advancedSectionCells.count : 1
         }
     }
-    
+
     override func tableView(_: UITableView, titleForHeaderInSection section: Int) -> String? {
         if sections[section] == basicSection && editView {
             return String.localized("login_header")
@@ -453,7 +453,7 @@ class AccountSetupController: UITableViewController {
             return nil
         }
     }
-    
+
     override func tableView(_: UITableView, titleForFooterInSection section: Int) -> String? {
         if sections[section] == basicSection {
             return String.localized("login_no_servers_hint")
@@ -482,11 +482,11 @@ class AccountSetupController: UITableViewController {
             return nil
         }
     }
-    
+
     override func tableView(_: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
         let section = indexPath.section
         let row = indexPath.row
-        
+
         if sections[section] == basicSection {
             return basicSectionCells[row]
         } else if sections[section] == restoreSection {
@@ -499,7 +499,7 @@ class AccountSetupController: UITableViewController {
             return advancedSectionCells[row]
         }
     }
-    
+
     override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
         guard let tappedCell = tableView.cellForRow(at: indexPath) else { return }
         // handle tap on password -> show oAuthDialogue
@@ -533,17 +533,17 @@ class AccountSetupController: UITableViewController {
     // MARK: - actions
     private func toggleAdvancedSection() {
         let willShow = !advancedSectionShowing
-        
+
         guard let advancedSectionIndex = sections.firstIndex(of: advancedSection) else { return }
         var advancedIndexPaths: [IndexPath] = advancedSectionCells.indices.map { IndexPath(row: $0, section: advancedSectionIndex) }
         advancedIndexPaths.removeFirst() // do not touch the first item that is the switch itself
-        
+
         // on expansion, replace the disclosureIndicator by an n-dash
         advancedShowCell.accessoryType = willShow ? .none : .disclosureIndicator
         advancedShowCell.detailTextLabel?.text = willShow ? "\u{2013}" : nil
-        
+
         advancedSectionShowing = willShow // set flag before delete/insert, because cellForRowAt will be triggered and uses this flag
-        
+
         if willShow {
             tableView.insertRows(at: advancedIndexPaths, with: .fade)
         } else {
@@ -551,22 +551,22 @@ class AccountSetupController: UITableViewController {
         }
         tableView.reloadData() // needed to force a redraw
     }
-    
+
     @objc private func loginButtonPressed() {
         guard let emailAddress = emailCell.getText() else {
             return // handle case when either email or pw fields are empty
         }
-        
+
         let oAuthStarted = showOAuthAlertIfNeeded(emailAddress: emailAddress, handleCancel: loginButtonPressed)
         // if canceled we will run this method again but this time oAuthStarted will be false
-        
+
         if oAuthStarted {
             // the loginFlow will be handled by oAuth2
             return
         }
-        
+
         let password = passwordCell.getText() ?? "" // empty passwords are ok -> for oauth there is no password needed
-        
+
         login(emailAddress: emailAddress, password: password)
     }
 
@@ -599,74 +599,74 @@ class AccountSetupController: UITableViewController {
         tableView.deleteRows(at: [providerInfoCellIndexPath], with: .automatic)
         providerInfoShowing = false
     }
-    
+
     private func login(emailAddress: String, password: String, skipAdvanceSetup: Bool = false) {
         addProgressHudLoginListener()
         resignFirstResponderOnAllCells()	// this will resign focus from all textFieldCells so the keyboard wont pop up anymore
         DcConfig.addr = emailAddress
         DcConfig.mailPw = password
-        
+
         if !skipAdvanceSetup {
             evaluateAdvancedSetup() // this will set MRConfig related to advanced fields
         }
-        
+
         print("oAuth-Flag when loggin in: \(DcConfig.getAuthFlags())")
         dc_configure(mailboxPointer)
         showProgressHud(title: String.localized("login_header"))
     }
-    
+
     @objc func closeButtonPressed() {
         dismiss(animated: true, completion: nil)
     }
-    
+
     // returns true if needed
     private func showOAuthAlertIfNeeded(emailAddress: String, handleCancel: (() -> Void)?) -> Bool {
         return false
-        
+
         // disable oauth2 for now as not yet supported by deltachat-rust.
         /*
          if skipOauth {
-         // user has previously denied oAuth2-setup
-         return false
+             // user has previously denied oAuth2-setup
+             return false
          }
-         
+
          guard let oAuth2UrlPointer = dc_get_oauth2_url(mailboxPointer, emailAddress, "chat.delta:/auth") else {
-         //MRConfig.setAuthFlags(flags: Int(DC_LP_AUTH_NORMAL)) -- do not reset, there may be different values
-         return false
+             //MRConfig.setAuthFlags(flags: Int(DC_LP_AUTH_NORMAL)) -- do not reset, there may be different values
+             return false
          }
-         
+
          let oAuth2Url = String(cString: oAuth2UrlPointer)
-         
+
          if let url = URL(string: oAuth2Url) {
-         let title = "Continue with simplified setup"
-         // swiftlint:disable all
-         let message = "The entered e-mail address supports a simplified setup (oAuth2).\n\nIn the next step, please allow Delta Chat to act as your Chat with E-Mail app.\n\nThere are no Delta Chat servers, your data stays on your device."
-         
-         let oAuthAlertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
-         let confirm = UIAlertAction(title: "Confirm", style: .default, handler: {
-         [unowned self] _ in
-         let nc = NotificationCenter.default
-         self.oauth2Observer = nc.addObserver(self, selector: #selector(self.oauthLoginApproved), name: NSNotification.Name("oauthLoginApproved"), object: nil)
-         self.launchOAuthBrowserWindow(url: url)
-         })
-         let cancel = UIAlertAction(title: "Cancel", style: .cancel, handler: {
-         _ in
-         MRConfig.setAuthFlags(flags: Int(DC_LP_AUTH_NORMAL))
-         self.skipOauth = true
-         handleCancel?()
-         
-         })
-         oAuthAlertController.addAction(confirm)
-         oAuthAlertController.addAction(cancel)
-         
-         present(oAuthAlertController, animated: true, completion: nil)
-         return true
+             let title = "Continue with simplified setup"
+             // swiftlint:disable all
+             let message = "The entered e-mail address supports a simplified setup (oAuth2).\n\nIn the next step, please allow Delta Chat to act as your Chat with E-Mail app.\n\nThere are no Delta Chat servers, your data stays on your device."
+
+             let oAuthAlertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
+             let confirm = UIAlertAction(title: "Confirm", style: .default, handler: {
+                 [unowned self] _ in
+                 let nc = NotificationCenter.default
+                 self.oauth2Observer = nc.addObserver(self, selector: #selector(self.oauthLoginApproved), name: NSNotification.Name("oauthLoginApproved"), object: nil)
+                 self.launchOAuthBrowserWindow(url: url)
+             })
+             let cancel = UIAlertAction(title: "Cancel", style: .cancel, handler: {
+                 _ in
+                 MRConfig.setAuthFlags(flags: Int(DC_LP_AUTH_NORMAL))
+                 self.skipOauth = true
+                 handleCancel?()
+
+             })
+             oAuthAlertController.addAction(confirm)
+             oAuthAlertController.addAction(cancel)
+
+             present(oAuthAlertController, animated: true, completion: nil)
+             return true
          } else {
-         return false
+             return false
          }
          */
     }
-    
+
     @objc func oauthLoginApproved(notification: Notification) {
         guard let userInfo = notification.userInfo, let token = userInfo["token"] as? String, let emailAddress = emailCell.getText() else {
             return
@@ -675,11 +675,11 @@ class AccountSetupController: UITableViewController {
         DcConfig.setAuthFlags(flags: Int(DC_LP_AUTH_OAUTH2))
         login(emailAddress: emailAddress, password: token, skipAdvanceSetup: true)
     }
-    
+
     private func launchOAuthBrowserWindow(url: URL) {
         UIApplication.shared.open(url) // this opens safari as seperate app
     }
-    
+
     private func addProgressHudLoginListener() {
         let nc = NotificationCenter.default
         configureProgressObserver = nc.addObserver(
@@ -699,7 +699,7 @@ class AccountSetupController: UITableViewController {
             }
         }
     }
-    
+
     private func addProgressHudBackupListener() {
         let nc = NotificationCenter.default
         backupProgressObserver = nc.addObserver(
@@ -719,7 +719,7 @@ class AccountSetupController: UITableViewController {
             }
         }
     }
-    
+
     private func evaluateAdvancedSetup() {
         for cell in advancedSectionCells {
             if let textFieldCell = cell as? TextFieldCell {
@@ -744,7 +744,7 @@ class AccountSetupController: UITableViewController {
             }
         }
     }
-    
+
     private func restoreBackup() {
         logger.info("restoring backup")
         if DcConfig.configured {
@@ -754,7 +754,7 @@ class AccountSetupController: UITableViewController {
         let documents = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
         if !documents.isEmpty {
             logger.info("looking for backup in: \(documents[0])")
-            
+
             if let cString = dc_imex_has_backup(mailboxPointer, documents[0]) {
                 let file = String(cString: cString)
                 dc_str_unref(cString)
@@ -773,10 +773,10 @@ class AccountSetupController: UITableViewController {
                 present(alert, animated: true)
             }
         }
-        
+
         logger.error("no documents directory found")
     }
-    
+
     private func emptyServer() {
         let alert = UIAlertController(title: String.localized("pref_empty_server_title"),
                                       message: String.localized("pref_empty_server_msg"), preferredStyle: .safeActionSheet)
@@ -789,7 +789,7 @@ class AccountSetupController: UITableViewController {
         alert.addAction(UIAlertAction(title: String.localized("cancel"), style: .cancel))
         present(alert, animated: true, completion: nil)
     }
-    
+
     private func emptyServer2ndConfirm(title: String, flags: Int) {
         let alert = UIAlertController(
             title: title,
@@ -800,19 +800,19 @@ class AccountSetupController: UITableViewController {
         alert.addAction(UIAlertAction(title: String.localized("cancel"), style: .cancel))
         present(alert, animated: true, completion: nil)
     }
-    
+
     private func deleteAccount() {
         guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
             return
         }
-        
+
         let dbfile = appDelegate.dbfile()
         let dburl = URL(fileURLWithPath: dbfile, isDirectory: false)
         let alert = UIAlertController(
             title: String.localized("delete_account_ask"),
             message: nil,
             preferredStyle: .safeActionSheet)
-        
+
         alert.addAction(UIAlertAction(title: String.localized("delete_account"), style: .destructive, handler: { _ in
             appDelegate.stop()
             appDelegate.close()
@@ -821,16 +821,16 @@ class AccountSetupController: UITableViewController {
             } catch {
                 logger.error("failed to delete db: \(error)")
             }
-            
+
             appDelegate.open()
             appDelegate.start()
-            
+
             appDelegate.appCoordinator.presentLoginController()
         }))
         alert.addAction(UIAlertAction(title: String.localized("cancel"), style: .cancel))
         present(alert, animated: true, completion: nil)
     }
-    
+
     private func handleLoginSuccess() {
         // used when login hud successfully went trough
         dismiss(animated: true, completion: nil)
@@ -843,24 +843,23 @@ class AccountSetupController: UITableViewController {
             self.coordinator?.navigateBack()
         }
     }
-    
+
     private func initSelectionCells() {
         smtpSecurityCell.detailTextLabel?.text = SecurityConverter.convertHexToString(type: .SMTPSecurity, hex: DcConfig.getSmtpSecurity())
         imapSecurityCell.detailTextLabel?.text = SecurityConverter.convertHexToString(type: .IMAPSecurity, hex: DcConfig.getImapSecurity())
         certCheckCell.detailTextLabel?.text = CertificateCheckController.ValueConverter.convertHexToString(value: DcConfig.certificateChecks)
     }
-    
+
     private func resignFirstResponderOnAllCells() {
         let _ = basicSectionCells.map({
             resignCell(cell: $0)
         })
-        
+
         let _ = advancedSectionCells.map({
             resignCell(cell: $0)
-            }
-        )
+        })
     }
-    
+
     private func handleLoginButton() {
         loginButton.isEnabled = !(emailCell.getText() ?? "").isEmpty && !(passwordCell.getText() ?? "").isEmpty
     }
@@ -871,13 +870,13 @@ class AccountSetupController: UITableViewController {
         }
         coordinator?.openProviderInfo(provider: provider)
     }
-    
+
     func resignCell(cell: UITableViewCell) {
         if let c = cell as? TextFieldCell {
             c.textField.resignFirstResponder()
         }
     }
-    
+
     @objc private func textFieldDidChange() {
         handleLoginButton()
     }
@@ -916,7 +915,7 @@ extension AccountSetupController: UITextFieldDelegate {
             skipOauth = false
         }
     }
-    
+
     func textFieldDidEndEditing(_ textField: UITextField) {
         if textField.tag == tagTextFieldEmail {
             let _ = showOAuthAlertIfNeeded(emailAddress: textField.text ?? "", handleCancel: {