Browse Source

make logging work on all DcContext objects

before, logging was stuck after switching account
or after constructing DcContext from an event.
B. Petersen 4 years ago
parent
commit
4bb0079a04

+ 5 - 6
DcCore/DcCore/DC/Wrapper.swift

@@ -8,6 +8,7 @@ public class DcAccounts {
     /// The ID is created in the apple developer portal and can be changed there.
     let applicationGroupIdentifier = "group.chat.delta.ios"
     var accountsPointer: OpaquePointer?
+    public var logger: Logger?
 
     public init() {
     }
@@ -28,7 +29,7 @@ public class DcAccounts {
 
     public func get(id: Int) -> DcContext {
         let contextPointer = dc_accounts_get_account(accountsPointer, UInt32(id))
-        return DcContext(contextPointer: contextPointer)
+        return DcContext(contextPointer: contextPointer, logger: logger)
     }
 
     public func getAll() -> [Int] {
@@ -38,7 +39,7 @@ public class DcAccounts {
 
     public func getSelected() -> DcContext {
         let cPtr = dc_accounts_get_selected_account(accountsPointer)
-        return DcContext(contextPointer: cPtr)
+        return DcContext(contextPointer: cPtr, logger: logger)
     }
 
     // call maybeNetwork() from a worker thread.
@@ -95,11 +96,9 @@ public class DcContext {
     public var lastWarningString: String = "" // temporary thing to get a grip on some weird errors
     public var maxConfigureProgress: Int = 0 // temporary thing to get a grip on some weird errors
 
-    public init() {
-    }
-
-    public init(contextPointer: OpaquePointer?) {
+    public init(contextPointer: OpaquePointer?, logger: Logger?) {
         self.contextPointer = contextPointer
+        self.logger = logger
     }
     
     deinit {

+ 1 - 1
DcShare/Controller/ShareViewController.swift

@@ -77,8 +77,8 @@ class ShareViewController: SLComposeServiceViewController {
     }
 
     override func presentationAnimationDidFinish() {
+        dcAccounts.logger = logger
         dcAccounts.openDatabase()
-        dcContext.logger = self.logger
         isAccountConfigured = dcContext.isConfigured()
         if isAccountConfigured {
             if #available(iOSApplicationExtension 13.0, *) {

+ 1 - 1
deltachat-ios/AppDelegate.swift

@@ -56,12 +56,12 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
         console.format = "$DHH:mm:ss.SSS$d $C$L$c $M" // see https://docs.swiftybeaver.com/article/20-custom-format
         logger.addDestination(console)
 
+        dcAccounts.logger = DcLogger()
         dcAccounts.openDatabase()
         migrateToDcAccounts()
         if dcAccounts.getAll().isEmpty, dcAccounts.add() == 0 {
            fatalError("Could not initialize a new account.")
         }
-        dcAccounts.getSelected().logger = DcLogger()
         logger.info("➡️ didFinishLaunchingWithOptions")
 
         window = UIWindow(frame: UIScreen.main.bounds)