Browse Source

add user status api

marinofaggiana 4 years ago
parent
commit
6a1a59f205

+ 1 - 1
Nextcloud.xcodeproj/project.pbxproj

@@ -2837,7 +2837,7 @@
 			repositoryURL = "https://github.com/nextcloud/ios-communication-library/";
 			requirement = {
 				kind = revision;
-				revision = 8fb4c8330d4189354bcd75d215b351ed415c5d35;
+				revision = 15c91936f386a5054e79eb803d75f6e383f142ae;
 			};
 		};
 		F7C4D88B2534887E00C142DA /* XCRemoteSwiftPackageReference "Parchment" */ = {

+ 1 - 1
Nextcloud.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

@@ -15,7 +15,7 @@
         "repositoryURL": "https://github.com/nextcloud/ios-communication-library/",
         "state": {
           "branch": null,
-          "revision": "8fb4c8330d4189354bcd75d215b351ed415c5d35",
+          "revision": "15c91936f386a5054e79eb803d75f6e383f142ae",
           "version": null
         }
       },

+ 1 - 5
iOSClient/CCGlobal.h

@@ -80,7 +80,7 @@
 
 // Database Realm
 #define k_databaseDefault                               @"nextcloud.realm"
-#define k_databaseSchemaVersion                         150
+#define k_databaseSchemaVersion                         151
 
 // Database JSON
 #define k_databaseDefaultJSON                           @"nextcloud.json"
@@ -291,10 +291,6 @@
 #define k_template_spreadsheet                          @"spreadsheet"
 #define k_template_presentation                         @"presentation"
 
-// Status Icon Image
-
-
-
 // Nextcloud unsupported
 #define k_nextcloud_unsupported                         13
 

+ 7 - 0
iOSClient/Data/NCDatabase.swift

@@ -69,6 +69,13 @@ class tableAccount: Object {
     @objc dynamic var urlBase = ""
     @objc dynamic var user = ""
     @objc dynamic var userID = ""
+    @objc dynamic var userStatusClearAt: NSDate? = nil
+    @objc dynamic var userStatusIcon: String?
+    @objc dynamic var userStatusMessage: String?
+    @objc dynamic var userStatusMessageId: String?
+    @objc dynamic var userStatusMessageIsPredefined: Bool = false
+    @objc dynamic var userStatusStatus: String?
+    @objc dynamic var userStatusStatusIsUserDefined: Bool = false
     @objc dynamic var webpage = ""
     @objc dynamic var zip = ""
     // HC

+ 20 - 0
iOSClient/Data/NCManageDatabase.swift

@@ -658,6 +658,26 @@ class NCManageDatabase: NSObject {
         }
     }
     
+    @objc func setAccountUserStatus(userStatusClearAt: NSDate?, userStatusIcon: String?, userStatusMessage: String?, userStatusMessageId: String?, userStatusMessageIsPredefined: Bool, userStatusStatus: String?, userStatusStatusIsUserDefined: Bool, account: String) {
+        
+        let realm = try! Realm()
+        do {
+            try realm.safeWrite {
+                if let result = realm.objects(tableAccount.self).filter("account == %@", account).first {
+                    result.userStatusClearAt = userStatusClearAt
+                    result.userStatusIcon = userStatusIcon
+                    result.userStatusMessage = userStatusMessage
+                    result.userStatusMessageId = userStatusMessageId
+                    result.userStatusMessageIsPredefined = userStatusMessageIsPredefined
+                    result.userStatusStatus = userStatusStatus
+                    result.userStatusStatusIsUserDefined = userStatusStatusIsUserDefined
+                }
+            }
+        } catch let error {
+            NCCommunicationCommon.shared.writeLog("Could not write to database: \(error)")
+        }
+    }
+    
     //MARK: -
     //MARK: Table Activity
 

+ 5 - 1
iOSClient/Networking/NCService.swift

@@ -196,7 +196,11 @@ class NCService: NSObject {
                 // User Status
                 let userStatus = NCManageDatabase.sharedInstance.getCapabilitiesServerBool(account: account, elements: NCElementsJSON.shared.capabilitiesUserStatusEnabled, exists: false)
                 if userStatus {
-                    
+                    NCCommunication.shared.getUserStatus { (account, clearAt, icon, message, messageId, messageIsPredefined, status, statusIsUserDefined, userId, errorCode, errorDescription) in
+                        if errorCode == 0 && account == self.appDelegate.account && userId == self.appDelegate.userID {
+                            NCManageDatabase.sharedInstance.setAccountUserStatus(userStatusClearAt: clearAt, userStatusIcon: icon, userStatusMessage: message, userStatusMessageId: messageId, userStatusMessageIsPredefined: messageIsPredefined, userStatusStatus: status, userStatusStatusIsUserDefined: statusIsUserDefined, account: account)
+                        }
+                    }
                 }
             
                 // Handwerkcloud