Explorar o código

add support for dclogin (#1702)

also fixes #1701
Simon Laux %!s(int64=2) %!d(string=hai) anos
pai
achega
20525fee15

+ 1 - 1
deltachat-ios/AppDelegate.swift

@@ -187,7 +187,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
         // }
 
         switch url.scheme?.lowercased() {
-        case "dcaccount":
+        case "dcaccount", "dclogin":
             appCoordinator.handleQRCode(url.absoluteString)
             return true
         case "openpgp4fpr":

+ 1 - 1
deltachat-ios/Controller/QrPageController.swift

@@ -211,7 +211,7 @@ extension QrPageController: QrCodeReaderDelegate {
             }))
             present(alert, animated: true, completion: nil)
 
-        case DC_QR_ACCOUNT:
+        case DC_QR_ACCOUNT, DC_QR_LOGIN:
             if let appDelegate = UIApplication.shared.delegate as? AppDelegate {
                 appDelegate.appCoordinator.presentWelcomeController(accountCode: code)
             }

+ 11 - 6
deltachat-ios/Controller/WelcomeViewController.swift

@@ -324,16 +324,21 @@ extension WelcomeViewController: QrCodeReaderDelegate {
     func handleQrCode(_ code: String) {
         let lot = dcContext.checkQR(qrCode: code)
         if let domain = lot.text1, lot.state == DC_QR_ACCOUNT {
-            confirmAccountCreationAlert(accountDomain: domain, qrCode: code)
+            let title = String.localizedStringWithFormat(
+                String.localized(dcAccounts.getAll().count > 1 ? "qraccount_ask_create_and_login_another" : "qraccount_ask_create_and_login"),
+                domain)
+            confirmQrAccountAlert(title: title, qrCode: code)
+        } else if let email = lot.text1, lot.state == DC_QR_LOGIN {
+            let title = String.localizedStringWithFormat(
+                String.localized(dcAccounts.getAll().count > 1 ? "qrlogin_ask_login_another" : "qrlogin_ask_login"),
+                email)
+            confirmQrAccountAlert(title: title, qrCode: code)
         } else {
             qrErrorAlert()
         }
     }
 
-    private func confirmAccountCreationAlert(accountDomain domain: String, qrCode: String) {
-        let title = String.localizedStringWithFormat(
-            String.localized(dcAccounts.getAll().count > 1 ? "qraccount_ask_create_and_login_another" : "qraccount_ask_create_and_login"),
-            domain)
+    private func confirmQrAccountAlert(title: String, qrCode: String) {
         let alert = UIAlertController(title: title, message: nil, preferredStyle: .alert)
 
         let okAction = UIAlertAction(
@@ -371,7 +376,7 @@ extension WelcomeViewController: QrCodeReaderDelegate {
 
     private func qrErrorAlert() {
         let title = String.localized("qraccount_qr_code_cannot_be_used")
-        let alert = UIAlertController(title: title, message: nil, preferredStyle: .alert)
+        let alert = UIAlertController(title: title, message: dcContext.lastErrorString, preferredStyle: .alert)
         let okAction = UIAlertAction(
             title: String.localized("ok"),
             style: .default,

+ 2 - 1
deltachat-ios/Coordinator/AppCoordinator.swift

@@ -182,7 +182,8 @@ class AppCoordinator {
     }
 
     func handleQRCode(_ code: String) {
-        if code.lowercased().starts(with: "dcaccount:") {
+        if code.lowercased().starts(with: "dcaccount:")
+           || code.lowercased().starts(with: "dclogin:") {
             presentWelcomeController(accountCode: code)
         } else {
             showTab(index: qrTab)

+ 1 - 0
deltachat-ios/Info.plist

@@ -30,6 +30,7 @@
 				<string>chat.delta</string>
 				<string>openpgp4fpr</string>
 				<string>dcaccount</string>
+				<string>dclogin</string>
 			</array>
 		</dict>
 		<dict>