Prechádzať zdrojové kódy

always pass DcContext to RelayHelper, update RelayHelper's context on reloadDcContext, cancel ongoing forwarding when the user switches the account

cyberta 4 rokov pred
rodič
commit
f3cd62bbf4

+ 3 - 1
deltachat-ios/AppDelegate.swift

@@ -75,7 +75,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
         }
 
         installEventHandler()
-        RelayHelper.setup(dcAccounts)
+        relayHelper = RelayHelper.setup(dcAccounts.getSelected())
         appCoordinator = AppCoordinator(window: window, dcAccounts: dcAccounts)
         locationManager = LocationManager(dcAccounts: dcAccounts)
         UIApplication.shared.setMinimumBackgroundFetchInterval(UIApplication.backgroundFetchIntervalMinimum)
@@ -463,6 +463,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
     func reloadDcContext() {
         locationManager.reloadDcContext()
         notificationManager.reloadDcContext()
+        RelayHelper.sharedInstance.cancel()
+        _ = RelayHelper.setup(dcAccounts.getSelected())
         if dcAccounts.getSelected().isConfigured() {
             appCoordinator.resetTabBarRootViewControllers()
         } else {

+ 6 - 5
deltachat-ios/Helper/RelayHelper.swift

@@ -3,17 +3,18 @@ import DcCore
 
 class RelayHelper {
     static var sharedInstance: RelayHelper = RelayHelper()
-    private static var dcAccounts: DcAccounts?
+    private static var dcContext: DcContext?
     var messageIds: [Int]?
 
     private init() {
-        guard RelayHelper.dcAccounts != nil else {
+        guard RelayHelper.dcContext != nil else {
             fatalError("Error - you must call RelayHelper.setup() before accessing RelayHelper.shared")
         }
     }
 
-    class func setup(_ dcAccounts: DcAccounts) {
-        RelayHelper.dcAccounts = dcAccounts
+    class func setup(_ dcContext: DcContext) -> RelayHelper {
+        RelayHelper.dcContext = dcContext
+        return sharedInstance
     }
 
     func setForwardMessage(messageId: Int) {
@@ -30,7 +31,7 @@ class RelayHelper {
 
     func forward(to chat: Int) {
         if let messageIds = self.messageIds {
-            RelayHelper.dcAccounts?.getSelected().forwardMessages(with: messageIds, to: chat)
+            RelayHelper.dcContext?.forwardMessages(with: messageIds, to: chat)
         }
         self.messageIds = nil
     }