Bläddra i källkod

show error if backup provider creation fails

B. Petersen 2 år sedan
förälder
incheckning
a4a718a46e

+ 4 - 0
DcCore/DcCore/DC/Wrapper.swift

@@ -1429,6 +1429,10 @@ public class DcBackupProvider {
         unref()
     }
 
+    public func isOk() -> Bool {
+        return dcBackupProviderPointer != nil
+    }
+
     public func unref() {
         if dcBackupProviderPointer != nil {
             dc_backup_provider_unref(dcBackupProviderPointer)

+ 14 - 0
deltachat-ios/Controller/BackupTransferViewController.swift

@@ -57,6 +57,10 @@ class BackupTransferViewController: UIViewController {
             self.dcAccounts.stopIo()
             self.dcBackupProvider = DcBackupProvider(self.dcContext)
             DispatchQueue.main.async {
+                if !(self.dcBackupProvider?.isOk() ?? false) {
+                    self.showLastErrorAlert("Cannot create backup provider; try over in a minute")
+                    return
+                }
                 let image = self.getQrImage(svg: self.dcBackupProvider?.getQrSvg())
                 self.qrContentView.image = image
                 self.progress.stopAnimating()
@@ -118,6 +122,16 @@ class BackupTransferViewController: UIViewController {
         return nil
     }
 
+    private func showLastErrorAlert(_ errorContext: String) {
+        var lastError = dcContext.lastErrorString
+        if lastError.isEmpty {
+            lastError = "<last error not set>"
+        }
+        let error = errorContext + " (" + lastError + ")"
+        let alert = UIAlertController(title: String.localized("Add Another Account"), message: error, preferredStyle: .alert)
+        alert.addAction(UIAlertAction(title: String.localized("ok"), style: .default, handler: nil))
+        navigationController?.present(alert, animated: true, completion: nil)
+    }
 }