Forráskód Böngészése

Merge pull request #1338 from deltachat/tweak-connectivity-observers

add 'connectivity changed' observers in time
bjoern 3 éve
szülő
commit
0c1118b0c5

+ 9 - 5
deltachat-ios/Controller/ChatListController.swift

@@ -93,6 +93,15 @@ class ChatListController: UITableViewController {
 
 
         // create view
         // create view
         navigationItem.titleView = titleView
         navigationItem.titleView = titleView
+
+        // set connectivity changed observer before we acutally init the title,
+        // otherwise, we may miss events and the title is not correct.
+        let nc = NotificationCenter.default
+        connectivityChangedObserver = nc.addObserver(forName: dcNotificationConnectivityChanged,
+                                                     object: nil,
+                                                     queue: nil) { [weak self] _ in
+                                                        self?.updateTitle()
+                                                     }
         updateTitle()
         updateTitle()
 
 
         viewModel.refreshData()
         viewModel.refreshData()
@@ -125,11 +134,6 @@ class ChatListController: UITableViewController {
             queue: nil) { [weak self] _ in
             queue: nil) { [weak self] _ in
                 self?.refreshInBg()
                 self?.refreshInBg()
             }
             }
-        connectivityChangedObserver = nc.addObserver(forName: dcNotificationConnectivityChanged,
-                                                     object: nil,
-                                                     queue: nil) { [weak self] _ in
-                                                        self?.updateTitle()
-                                                     }
 
 
         nc.addObserver(
         nc.addObserver(
             self,
             self,

+ 6 - 2
deltachat-ios/Controller/ConnectivityViewController.swift

@@ -14,21 +14,25 @@ class ConnectivityViewController: WebViewViewController {
         fatalError("init(coder:) has not been implemented")
         fatalError("init(coder:) has not been implemented")
     }
     }
 
 
+    // called only once after loading
     override func viewDidLoad() {
     override func viewDidLoad() {
         super.viewDidLoad()
         super.viewDidLoad()
         self.title = String.localized("connectivity")
         self.title = String.localized("connectivity")
         self.webView.isOpaque = false
         self.webView.isOpaque = false
         self.webView.backgroundColor = .clear
         self.webView.backgroundColor = .clear
         view.backgroundColor = DcColors.defaultBackgroundColor
         view.backgroundColor = DcColors.defaultBackgroundColor
-        loadHtml()
     }
     }
 
 
-    override func viewDidAppear(_ animated: Bool) {
+    // called everytime the view will appear
+    override func viewWillAppear(_ animated: Bool) {
+        // set connectivity changed observer before we acutally init html,
+        // otherwise, we may miss events and the html is not correct.
         connectivityChangedObserver = NotificationCenter.default.addObserver(forName: dcNotificationConnectivityChanged,
         connectivityChangedObserver = NotificationCenter.default.addObserver(forName: dcNotificationConnectivityChanged,
                                                      object: nil,
                                                      object: nil,
                                                      queue: nil) { [weak self] _ in
                                                      queue: nil) { [weak self] _ in
                                                         self?.loadHtml()
                                                         self?.loadHtml()
                                                      }
                                                      }
+        loadHtml()
     }
     }
 
 
     override func viewDidDisappear(_ animated: Bool) {
     override func viewDidDisappear(_ animated: Bool) {

+ 11 - 7
deltachat-ios/Controller/SettingsController.swift

@@ -259,6 +259,17 @@ internal final class SettingsViewController: UITableViewController, ProgressAler
 
 
     override func viewWillAppear(_ animated: Bool) {
     override func viewWillAppear(_ animated: Bool) {
         super.viewWillAppear(animated)
         super.viewWillAppear(animated)
+
+        // set connectivity changed observer before we acutally init `connectivityCell.detailTextLabel` in `updateCells()`,
+        // otherwise, we may miss events and the label is not correct.
+        connectivityChangedObserver = NotificationCenter.default.addObserver(forName: dcNotificationConnectivityChanged,
+                                                                             object: nil,
+                                                                             queue: nil) { [weak self] _ in
+            guard let self = self else { return }
+            self.connectivityCell.detailTextLabel?.text = DcUtils.getConnectivityString(dcContext: self.dcContext,
+                                                                                        connectedString: String.localized("connectivity_connected"))
+        }
+
         updateCells()
         updateCells()
     }
     }
 
 
@@ -273,13 +284,6 @@ internal final class SettingsViewController: UITableViewController, ProgressAler
                 }
                 }
             }
             }
         }
         }
-        connectivityChangedObserver = NotificationCenter.default.addObserver(forName: dcNotificationConnectivityChanged,
-                                                                             object: nil,
-                                                                             queue: nil) { [weak self] _ in
-            guard let self = self else { return }
-            self.connectivityCell.detailTextLabel?.text = DcUtils.getConnectivityString(dcContext: self.dcContext,
-                                                                                        connectedString: String.localized("connectivity_connected"))
-        }
     }
     }
 
 
     override func viewDidDisappear(_ animated: Bool) {
     override func viewDidDisappear(_ animated: Bool) {