Explorar o código

show backup-provider progress, hide scanned qr code

B. Petersen %!s(int64=2) %!d(string=hai) anos
pai
achega
230db1db4a
Modificáronse 1 ficheiros con 31 adicións e 0 borrados
  1. 31 0
      deltachat-ios/Controller/BackupTransferViewController.swift

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

@@ -8,6 +8,7 @@ class BackupTransferViewController: UIViewController {
     private let dcContext: DcContext
     private let dcAccounts: DcAccounts
     private var dcBackupProvider: DcBackupProvider?
+    private var imexObserver: NSObjectProtocol?
 
     private lazy var qrContentView: UIImageView = {
         let view = UIImageView()
@@ -78,12 +79,42 @@ class BackupTransferViewController: UIViewController {
     override func didMove(toParent parent: UIViewController?) {
         let isRemoved = parent == nil
         if isRemoved {
+            if let imexObserver = self.imexObserver {
+                NotificationCenter.default.removeObserver(imexObserver)
+            }
             if dcBackupProvider != nil {
                 dcContext.stopOngoingProcess()
                 dcBackupProvider?.unref()
                 dcBackupProvider = nil
             }
             dcAccounts.startIo()
+        } else {
+            imexObserver = NotificationCenter.default.addObserver(forName: dcNotificationImexProgress, object: nil, queue: nil) { [weak self] notification in
+                guard let self = self, let ui = notification.userInfo, let permille = ui["progress"] as? Int else { return }
+                var statusLineText = ""
+                if permille == 0 {
+                    self.showLastErrorAlert("Error")
+                } else if permille <= 100 {
+                    statusLineText = "Exporting database..."
+                } else if permille <= 300 {
+                    statusLineText = "Creating collection..."
+                } else if permille <= 350 {
+                    statusLineText = "Collection created."
+                } else if permille <= 400 {
+                    statusLineText = "Waiting for receiver..."
+                } else if permille <= 450 {
+                    statusLineText = "Receiver connected..."
+                } else if permille < 1000 {
+                    let percent = (permille-450)/5
+                    statusLineText = "Transfer... \(percent)%"
+                    if !self.qrContentView.isHidden {
+                        self.qrContentView.isHidden = true
+                    }
+                } else if permille == 1000 {
+                    statusLineText = "Done."
+                }
+                self.title = statusLineText // TODO: this should be a dedicated view
+            }
         }
     }