Browse Source

implement UserDefaults extension to save/read shared data

cyberta 5 years ago
parent
commit
ba33659bf9

+ 4 - 0
DcCore/DcCore.xcodeproj/project.pbxproj

@@ -23,6 +23,7 @@
 		30421988243F23E500516852 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30421987243F23E500516852 /* Constants.swift */; };
 		304F5E41244F2F3200462538 /* UIImage+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 304F5E40244F2F3200462538 /* UIImage+Extensions.swift */; };
 		306C324824460CDE001D89F3 /* DateUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 306C324724460CDE001D89F3 /* DateUtils.swift */; };
+		308198AB24866229003BE20D /* UserDefaults+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 308198AA24866229003BE20D /* UserDefaults+Extensions.swift */; };
 		30E8F2212447357500CE2C90 /* DatabaseHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30E8F2202447357500CE2C90 /* DatabaseHelper.swift */; };
 		30E8F2482449C98600CE2C90 /* UIView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30E8F2472449C98600CE2C90 /* UIView+Extensions.swift */; };
 		30E8F24B2449CF6500CE2C90 /* InitialsBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30E8F24A2449CF6500CE2C90 /* InitialsBadge.swift */; };
@@ -59,6 +60,7 @@
 		30421987243F23E500516852 /* Constants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = "<group>"; };
 		304F5E40244F2F3200462538 /* UIImage+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Extensions.swift"; sourceTree = "<group>"; };
 		306C324724460CDE001D89F3 /* DateUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateUtils.swift; sourceTree = "<group>"; };
+		308198AA24866229003BE20D /* UserDefaults+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDefaults+Extensions.swift"; sourceTree = "<group>"; };
 		30E8F2202447357500CE2C90 /* DatabaseHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatabaseHelper.swift; sourceTree = "<group>"; };
 		30E8F2472449C98600CE2C90 /* UIView+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+Extensions.swift"; sourceTree = "<group>"; };
 		30E8F24A2449CF6500CE2C90 /* InitialsBadge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InitialsBadge.swift; sourceTree = "<group>"; };
@@ -155,6 +157,7 @@
 				30421963243F0B8400516852 /* String+Extensions.swift */,
 				30E8F2472449C98600CE2C90 /* UIView+Extensions.swift */,
 				304F5E40244F2F3200462538 /* UIImage+Extensions.swift */,
+				308198AA24866229003BE20D /* UserDefaults+Extensions.swift */,
 			);
 			path = Extensions;
 			sourceTree = "<group>";
@@ -324,6 +327,7 @@
 				30421964243F0B8400516852 /* String+Extensions.swift in Sources */,
 				30421960243E257100516852 /* UIColor+Extensions.swift in Sources */,
 				30E8F2482449C98600CE2C90 /* UIView+Extensions.swift in Sources */,
+				308198AB24866229003BE20D /* UserDefaults+Extensions.swift in Sources */,
 				304F5E41244F2F3200462538 /* UIImage+Extensions.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;

+ 7 - 0
DcCore/DcCore/Extensions/UserDefaults+Extensions.swift

@@ -0,0 +1,7 @@
+import Foundation
+public extension UserDefaults {
+    static var hasExtensionAttemptedToSend = "hasExtensionAttemptedToSend"
+    static var shared: UserDefaults? {
+        return UserDefaults(suiteName: "group.chat.delta.ios")
+    }
+}

+ 0 - 3
DcCore/DcCore/Helper/Constants.swift

@@ -8,7 +8,4 @@ public struct Constants {
         static let deltachatImapPasswordKey = "__DELTACHAT_IMAP_PASSWORD_KEY__"
     }
     public static let notificationIdentifier = "deltachat-ios-local-notifications"
-
-    public static let sharedUserDefaults = "deltachat-ios-shared-user-defaults"
-    public static let hasExtensionAttemptedToSend = "hasExtensionAttemptedToSend"
 }

+ 1 - 2
DcShare/Controller/ShareViewController.swift

@@ -157,8 +157,7 @@ extension ShareViewController: SendingControllerDelegate {
     func onSendingAttemptFinished() {
         DispatchQueue.main.async {
             self.popConfigurationViewController()
-            let userDefaults = UserDefaults(suiteName: Constants.sharedUserDefaults)
-            userDefaults?.set(true, forKey: Constants.hasExtensionAttemptedToSend)
+            UserDefaults.shared?.set(true, forKey: UserDefaults.hasExtensionAttemptedToSend)
             self.quit()
         }
     }

+ 6 - 6
deltachat-ios/AppDelegate.swift

@@ -103,13 +103,12 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
         logger.info("---- foreground ----")
         appIsInForeground = true
         startThreads()
-
         if reachability.connection != .none {
             self.dcContext.maybeNetwork()
         }
-        
-        let userDefaults = UserDefaults.init(suiteName: Constants.sharedUserDefaults)
-        if userDefaults?.bool(forKey: Constants.hasExtensionAttemptedToSend) ?? false {
+
+        let userDefaults = UserDefaults.shared
+        if userDefaults?.bool(forKey: UserDefaults.hasExtensionAttemptedToSend) ?? false {
             let nc = NotificationCenter.default
 
             DispatchQueue.main.async {
@@ -117,7 +116,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
                     name: dcNotificationChanged,
                     object: nil,
                     userInfo: [
-                        //TODO: Use correct message_id and chat_id
+                        // ChatViewController and ChatListController update their views
+                        // unconditionally, so ids with value 0 are ok
                         "message_id": Int(0),
                         "chat_id": Int(0),
                         "date": Date(),
@@ -125,7 +125,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
                 )
             }
 
-            userDefaults?.removeObject(forKey: Constants.hasExtensionAttemptedToSend)
+            userDefaults?.removeObject(forKey: UserDefaults.hasExtensionAttemptedToSend)
         }
     }
 

+ 0 - 2
deltachat-ios/Helper/Constants.swift

@@ -19,8 +19,6 @@ struct Constants {
     static let defaultCellHeight: CGFloat = 48
     static let defaultHeaderHeight: CGFloat = 20
 
-    public static let sharedUserDefaults = "deltachat-ios-shared-user-defaults"
-    public static let hasExtensionAttemptedToSend = "hasExtensionAttemptedToSend"
 }
 
 struct Time {