Browse Source

Improvements

marinofaggiana 4 years ago
parent
commit
534942eb37

+ 2 - 2
Cartfile.resolved

@@ -2,7 +2,7 @@ github "Alamofire/Alamofire" "5.1.0"
 github "AssistoLab/DropDown" "v2.3.13"
 github "CocoaLumberjack/CocoaLumberjack" "3.6.1"
 github "MortimerGoro/MGSwipeTableCell" "1.6.8"
-github "SVGKit/SVGKit" "8560ef56bd61e34d5cd8d9739954f9765e3ac794"
+github "SVGKit/SVGKit" "d9432035c6e2587358a0b838d00c2658ce16e7a2"
 github "SwiftyJSON/SwiftyJSON" "5.0.0"
 github "WeTransfer/WeScan" "1.2.0"
 github "WenchaoD/FSCalendar" "2.8.0"
@@ -18,7 +18,7 @@ github "marinofaggiana/AFNetworking" "2967678c3e0e98c9b8d7e06222ad12d1f49c26f2"
 github "marinofaggiana/KTVHTTPCache" "2.0.2"
 github "marinofaggiana/TOPasscodeViewController" "0.0.6"
 github "marinofaggiana/XLForm" "eb9381ad8129f60402bf412250fb31b95a628a08"
-github "nextcloud/ios-communication-library" "229049eb830d2a4789d9e31f61b740f9cbe4d505"
+github "nextcloud/ios-communication-library" "52a8400313f053f1a8f082fe56d4082f7c0cfb81"
 github "realm/realm-cocoa" "v4.4.1"
 github "rechsteiner/Parchment" "v1.7.0"
 github "scenee/FloatingPanel" "v1.7.4"

+ 1 - 1
Carthage/Checkouts/SVGKit/SVGKit.podspec

@@ -26,7 +26,7 @@ Pod::Spec.new do |s|
   s.prefix_header_file = 'SVGKitLibrary/SVGKit-iOS/SVGKit-Prefix.pch'
   s.module_map = 'SVGKitLibrary/SVGKit-iOS/SVGKit.modulemap'
   s.requires_arc = true
-  s.xcconfig = {
+  s.pod_target_xcconfig = {
     'CLANG_CXX_LANGUAGE_STANDARD' => 'gnu++11',
     'CLANG_CXX_LIBRARY' => 'libc++',
     'HEADER_SEARCH_PATHS' => '$(SDKROOT)/usr/include/libxml2'

+ 1 - 2
iOSClient/AppDelegate.m

@@ -443,8 +443,7 @@
     [[NCCommunicationCommon sharedInstance] setupWithUser:activeUser userId:activeUserID password:activePassword url:activeUrl userAgent:[CCUtility getUserAgent] capabilitiesGroup:[NCBrandOptions sharedInstance].capabilitiesGroups nextcloudVersion:capabilities.versionMajor delegate:[NCNetworking sharedInstance]];
     
     OCCommunication *communication = [OCNetworking sharedManager].sharedOCCommunication;
-    [communication setupNextcloudVersion:[[NCManageDatabase sharedInstance] getServerVersionWithAccount:activeAccount]];
-    
+    [communication setupNextcloudVersion:[[NCManageDatabase sharedInstance] getCapabilitiesServerVersionMajorWithAccount:activeAccount]];
 }
 
 - (void)settingWebDavRoot:(NSString *)webdavRoot

+ 1 - 1
iOSClient/CCGlobal.h

@@ -84,7 +84,7 @@
 
 // Database Realm
 #define k_databaseDefault                               @"nextcloud.realm"
-#define k_databaseSchemaVersion                         101
+#define k_databaseSchemaVersion                         102
 
 // Intro selector
 #define k_intro_login                                   0

+ 1 - 0
iOSClient/Database/NCDatabase.swift

@@ -155,6 +155,7 @@ class tableActivitySubjectRich: Object {
 class tableCapabilities: Object {
     
     @objc dynamic var account = ""
+    @objc dynamic var jsondata: Data? = nil
     @objc dynamic var themingBackground = ""
     @objc dynamic var themingBackgroundDefault: Bool = false
     @objc dynamic var themingBackgroundPlain: Bool = false

+ 45 - 118
iOSClient/Database/NCManageDatabase.swift

@@ -23,6 +23,7 @@
 
 import RealmSwift
 import NCCommunication
+import SwiftyJSON
 
 class NCManageDatabase: NSObject {
     @objc static let sharedInstance: NCManageDatabase = {
@@ -872,121 +873,21 @@ class NCManageDatabase: NSObject {
     //MARK: -
     //MARK: Table Capabilities
     
-    @objc func addCapabilitiesT(_ capabilities: NCCapabilities, account: String) {
-    
+    @objc func addCapabilitiesJSon(_ data: Data, account: String) {
         let realm = try! Realm()
-
         do {
             try realm.write {
-            
+                   
                 let result = realm.objects(tableCapabilities.self).filter("account == %@", account).first
-
                 var resultCapabilities = tableCapabilities()
-            
+                       
                 if let result = result {
                     resultCapabilities = result
                 }
-                
+                           
                 resultCapabilities.account = account
-                // Version
-                resultCapabilities.versionMajor = capabilities.versionMajor
-                resultCapabilities.versionMinor = capabilities.versionMinor
-                resultCapabilities.versionMicro = capabilities.versionMicro
-                resultCapabilities.versionString = capabilities.versionString
-//                resultCapabilities.versionEdition = capabilities.versionEdition
-//                resultCapabilities.versionExtendedSupport = capabilities.versionExtendedSupport
-                // Core
-                resultCapabilities.corePollInterval = capabilities.corePollInterval
-                resultCapabilities.coreWebDavRoot = capabilities.coreWebDavRoot
-                // Files sharing
-                resultCapabilities.isFilesSharingAPIEnabled = capabilities.isFilesSharingAPIEnabled
-                resultCapabilities.filesSharingDefaulPermissions = capabilities.filesSharingDefaulPermissions
-                resultCapabilities.isFilesSharingGroupSharing = capabilities.isFilesSharingGroupSharing
-                resultCapabilities.isFilesSharingReSharing = capabilities.isFilesSharingReSharing
-                // Files sharing Public
-                resultCapabilities.isFilesSharingPublicShareLinkEnabled = capabilities.isFilesSharingPublicShareLinkEnabled
-                resultCapabilities.isFilesSharingAllowPublicUploadsEnabled = capabilities.isFilesSharingAllowPublicUploadsEnabled
-                resultCapabilities.isFilesSharingAllowPublicUserSendMail = capabilities.isFilesSharingAllowPublicUserSendMail
-                resultCapabilities.isFilesSharingAllowPublicUploadFilesDrop = capabilities.isFilesSharingAllowPublicUploadFilesDrop
-                resultCapabilities.isFilesSharingAllowPublicMultipleLinks = capabilities.isFilesSharingAllowPublicMultipleLinks
-                resultCapabilities.isFilesSharingPublicExpireDateByDefaultEnabled = capabilities.isFilesSharingPublicExpireDateByDefaultEnabled
-                resultCapabilities.isFilesSharingPublicExpireDateEnforceEnabled = capabilities.isFilesSharingPublicExpireDateEnforceEnabled
-                resultCapabilities.filesSharingPublicExpireDateDays = capabilities.filesSharingPublicExpireDateDays
-                resultCapabilities.isFilesSharingPublicPasswordEnforced = capabilities.isFilesSharingPublicPasswordEnforced
-//                resultCapabilities.isFilesSharingPublicPasswordAskForOptionalPassword = capabilities.isFilesSharingPublicPasswordAskForOptionalPassword
-//                resultCapabilities.isFilesSharingPublicExpireDateInternal = capabilities.isFilesSharingPublicExpireDateInternal
-                // Files sharing User
-                resultCapabilities.isFilesSharingAllowUserSendMail = capabilities.isFilesSharingAllowUserSendMail
-                resultCapabilities.isFilesSharingUserExpireDate = capabilities.isFilesSharingUserExpireDate
-                // Files sharing Group
-                resultCapabilities.isFilesSharingGroupEnabled = capabilities.isFilesSharingGroupEnabled
-                resultCapabilities.isFilesSharingGroupExpireDate = capabilities.isFilesSharingGroupExpireDate
-                // Files sharing Federation
-                resultCapabilities.isFilesSharingFederationAllowUserSendShares = capabilities.isFilesSharingFederationAllowUserSendShares
-                resultCapabilities.isFilesSharingFederationAllowUserReceiveShares = capabilities.isFilesSharingFederationAllowUserReceiveShares
-                resultCapabilities.isFilesSharingFederationExpireDate = capabilities.isFilesSharingFederationExpireDate
-                // Files sharing share by mail
-                resultCapabilities.isFileSharingShareByMailEnabled = capabilities.isFileSharingShareByMailEnabled
-//                resultCapabilities.isFileSharingShareByMailExpireDate = capabilities.isFileSharingShareByMailExpireDate
-                resultCapabilities.isFileSharingShareByMailPassword = capabilities.isFileSharingShareByMailPassword
-                resultCapabilities.isFileSharingShareByMailUploadFilesDrop = capabilities.isFileSharingShareByMailUploadFilesDrop
-                // External sites
-//                isExternalSitesServerEnabled: Bool = false
-//                externalSiteV1 = [String]()
-                // Notification
-//                isNotificationEnabled
-//                notificationAdminNotification
-//                notificationOcsEndpoints
-//                notificationPush
-                // Files
-//                isFilesBigFileChunkingEnabled
-//                filesBlacklistedFile
-//                filesDirectEditingEtag
-//                filesDirectEditingUrl
-//                isFilesUndeleteEnabled
-//                isFilesVersioningEnabled
-                // Theming
-                resultCapabilities.themingBackground = capabilities.themingBackground
-                resultCapabilities.themingBackgroundDefault = capabilities.themingBackgroundDefault
-                resultCapabilities.themingBackgroundPlain = capabilities.themingBackgroundPlain
-                resultCapabilities.themingColor = capabilities.themingColor
-                resultCapabilities.themingColorElement = capabilities.themingColorElement
-                resultCapabilities.themingColorText = capabilities.themingColorText
-//                resultCapabilities.themingFavicon = capabilities.themingFavicon
-                resultCapabilities.themingLogo = capabilities.themingLogo
-//                resultCapabilities.themingLogoHeader = capabilities.themingLogoHeader
-                resultCapabilities.themingName = capabilities.themingName
-                resultCapabilities.themingSlogan = capabilities.themingSlogan
-                resultCapabilities.themingUrl = capabilities.themingUrl
-                // E2EE
-                resultCapabilities.endToEndEncryption = capabilities.isEndToEndEncryptionEnabled
-                resultCapabilities.endToEndEncryptionVersion = capabilities.endToEndEncryptionVersion
-                // Richdocuments
-                resultCapabilities.richdocumentsMimetypes.removeAll()
-                for mimeType in capabilities.richdocumentsMimetypes {
-                    resultCapabilities.richdocumentsMimetypes.append(mimeType)
-                }
-//                richdocumentsMimetypesNoDefaultOpen
-                resultCapabilities.richdocumentsDirectEditing = capabilities.richdocumentsDirectEditing
-//                richdocumentsProductName
-//                richdocumentsTemplates
-//                isRichdocumentsCollaboraConvertToAvailable
-//                isRichdocumentsCollaboraHasMobileSupport
-//                isRichdocumentsCollaboraHasTemplateSaveAs
-//                isRichdocumentsCollaboraHasTemplateSource
-//                isRichdocumentsCollaboraProductName
-                // Activity
-//                isActivityV2Enabled
-//                activityV2
-                // HC
-                resultCapabilities.isHandwerkcloudEnabled = capabilities.isHandwerkcloudEnabled
-                resultCapabilities.HCShopUrl = capabilities.HCShopUrl
-                // Imagemeter
-                resultCapabilities.isImagemeterEnabled = capabilities.isImagemeterEnabled
-                // Pagination iOS Helper
-                resultCapabilities.isPaginationEnabled = capabilities.isPaginationEnabled
-                resultCapabilities.paginationEndponit = capabilities.paginationEndponit
-                                
+                resultCapabilities.jsondata = data
+                          
                 if result == nil {
                     realm.add(resultCapabilities)
                 }
@@ -996,6 +897,44 @@ class NCManageDatabase: NSObject {
         }
     }
     
+    @objc func getCapabilitiesServerVersionMajor(account: String) -> Int {
+
+        let realm = try! Realm()
+        realm.refresh()
+        
+        guard let result = realm.objects(tableCapabilities.self).filter("account == %@", account).first else {
+            return 0
+        }
+        
+        let json = JSON(result.jsondata! as Data)
+        let data = json["ocs"]["data"]
+
+        if let versionMajor = data["version"]["major"].int {
+            return versionMajor
+        } else {
+            return 0
+        }
+    }
+    
+    @objc func getCapabilitiesWebDavRoot(account: String) -> String? {
+
+        let realm = try! Realm()
+        realm.refresh()
+        
+        guard let result = realm.objects(tableCapabilities.self).filter("account == %@", account).first else {
+            return nil
+        }
+        
+        let json = JSON(result.jsondata! as Data)
+        let dataCapabilities = json["ocs"]["data"]["capabilities"]
+
+        if let webDavRoot = dataCapabilities["core"]["webdav-root"].string {
+            return webDavRoot
+        } else {
+            return nil
+        }
+    }
+    
     #if !EXTENSION
     @objc func addCapabilities(_ capabilities: OCCapabilities, account: String) {
         
@@ -1107,18 +1046,6 @@ class NCManageDatabase: NSObject {
         return realm.objects(tableCapabilities.self).filter("account == %@", account).first
     }
     
-    @objc func getServerVersion(account: String) -> Int {
-
-        let realm = try! Realm()
-        realm.refresh()
-        
-        guard let result = realm.objects(tableCapabilities.self).filter("account == %@", account).first else {
-            return 0
-        }
-
-        return result.versionMajor
-    }
-
     @objc func getEndToEndEncryptionVersion(account: String) -> Float {
         
         let realm = try! Realm()

+ 0 - 1
iOSClient/Main/CCMain.h

@@ -81,7 +81,6 @@
 - (void)reloadDatasource:(NSString *)serverUrl ocId:(NSString *)ocId action:(NSInteger)action;
 
 - (void)clearDateReadDataSource:(NSNotification *)notification;
-- (void)cancelSearchBar;
 
 - (void)openAssetsPickerController;
 - (void)openImportDocumentPicker;

+ 1 - 1
iOSClient/Main/CCMain.m

@@ -1361,7 +1361,7 @@
             }
             
             // Version >= 12
-            if ([[NCManageDatabase sharedInstance] getServerVersionWithAccount:appDelegate.activeAccount] >= 12) {
+            if ([[NCManageDatabase sharedInstance] getCapabilitiesServerVersionMajorWithAccount:appDelegate.activeAccount] >= 12) {
                 
                 [_timerWaitInput invalidate];
                 _timerWaitInput = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(searchStartTimer) userInfo:nil repeats:NO];

+ 10 - 49
iOSClient/Networking/NCService.swift

@@ -143,11 +143,17 @@ class NCService: NSObject {
             return
         }
         
-        /*
-        NCCommunication.sharedInstance.getCapabilities(serverUrl: appDelegate.activeUrl, customUserAgent: nil, addCustomHeaders: nil, account: appDelegate.activeAccount) { (account, capabilities, errorCode, errorDescription) in
+        NCCommunication.sharedInstance.getCapabilities(serverUrl: appDelegate.activeUrl, customUserAgent: nil, addCustomHeaders: nil, account: appDelegate.activeAccount) { (account, data, errorCode, errorDescription) in
             
+            if errorCode == 0 && data != nil {
+                NCManageDatabase.sharedInstance.addCapabilitiesJSon(data!, account: account)
+                
+                // Update webDavRoot
+                if let webDavRoot = NCManageDatabase.sharedInstance.getCapabilitiesWebDavRoot(account: account) {
+                     self.appDelegate.settingWebDavRoot(webDavRoot)
+                }
+            }
         }
-        */
         
         OCNetworking.sharedManager().getCapabilitiesWithAccount(appDelegate.activeAccount, completion: { (account, capabilities, message, errorCode) in
             
@@ -155,55 +161,10 @@ class NCService: NSObject {
                 
                 // Update capabilities db
                 NCManageDatabase.sharedInstance.addCapabilities(capabilities!, account: account!)
-                
-                // Update webDavRoot
-                self.appDelegate.settingWebDavRoot(capabilities?.coreWebDavRoot)
-                
+                                
                 // ------ THEMING -----------------------------------------------------------------------
                 self.appDelegate.settingThemingColorBrand()
                 
-                /*
-                if (NCBrandOptions.sharedInstance.use_themingBackground && capabilities!.themingBackground != "") {
-                    
-                    // Download Theming Background
-                    DispatchQueue.global().async {
-                        
-                        // Download Logo
-                        if NCBrandOptions.sharedInstance.use_themingLogo {
-                            let fileNameThemingLogo = CCUtility.getStringUser(self.appDelegate.activeUser, activeUrl: self.appDelegate.activeUrl) + "-themingLogo.png"
-                            NCUtility.sharedInstance.convertSVGtoPNGWriteToUserData(svgUrlString: capabilities!.themingLogo, fileName: fileNameThemingLogo, width: 40, rewrite: true, account: self.appDelegate.activeAccount, closure: { (imageNamePath) in })
-                        }
-                        
-                        let backgroundURL = capabilities!.themingBackground!.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)!
-                        let fileNamePath = CCUtility.getDirectoryUserData() + "/" + CCUtility.getStringUser(self.appDelegate.activeUser, activeUrl: self.appDelegate.activeUrl) + "-themingBackground.png"
-                        
-                        NCCommunication.sharedInstance.downloadContent(urlString: backgroundURL, account: self.appDelegate.activeAccount) { (account, data, errorCode, errorMessage) in
-                            if errorCode == 0 && account == self.appDelegate.activeAccount {
-                                if let image = UIImage(data: data!) {
-                                    try? FileManager.default.removeItem(atPath: fileNamePath)
-                                    if let data = image.pngData() {
-                                        try? data.write(to: URL(fileURLWithPath: fileNamePath))
-                                    }
-                                }
-                            }
-                        }
-                        DispatchQueue.main.async {
-                            self.appDelegate.settingThemingColorBrand()
-                        }
-                    }
-                    
-                } else {
-                    
-                    self.appDelegate.settingThemingColorBrand()
-                }
-                */
-                
-                // ------ SEARCH ------------------------------------------------------------------------
-                
-                if (NCManageDatabase.sharedInstance.getServerVersion(account: account!) != capabilities!.versionMajor && self.appDelegate.activeMain != nil) {
-                    self.appDelegate.activeMain.cancelSearchBar()
-                }
-                
                 // ------ GET OTHER SERVICE -------------------------------------------------------------
                                 
                 // Get External Sites

+ 1 - 1
iOSClient/Settings/CCSettings.m

@@ -51,7 +51,7 @@
     XLFormDescriptor *form = [XLFormDescriptor formDescriptorWithTitle:NSLocalizedString(@"_settings_", nil)];
     XLFormSectionDescriptor *section;
     XLFormRowDescriptor *row;
-    NSInteger versionServer = [[NCManageDatabase sharedInstance] getServerVersionWithAccount:appDelegate.activeAccount];
+    NSInteger versionServer = [[NCManageDatabase sharedInstance] getCapabilitiesServerVersionMajorWithAccount:appDelegate.activeAccount];
     
     form.rowNavigationOptions = XLFormRowNavigationOptionNone;