Ver código fonte

Implemented Autoupload Subfolders

Signed-off-by: Francesco Servida <git.fservida@gmail.com>
Francesco Servida 1 ano atrás
pai
commit
5bcbc23609

+ 14 - 1
iOSClient/Main/Create cloud/NCUploadAssets.swift

@@ -71,6 +71,7 @@ class NCUploadAssets: NSObject, ObservableObject, NCCreateFormUploadConflictDele
         self.assets = assets
         self.serverUrl = serverUrl
         self.userBaseUrl = userBaseUrl
+        
     }
 
     func loadImages() {
@@ -249,6 +250,8 @@ struct UploadAssetsView: View {
         var metadatasUploadInConflict: [tableMetadata] = []
         let autoUploadPath = NCManageDatabase.shared.getAccountAutoUploadPath(urlBase: uploadAssets.userBaseUrl.urlBase, userId: uploadAssets.userBaseUrl.userId, account: uploadAssets.userBaseUrl.account)
         var serverUrl = uploadAssets.isUseAutoUploadFolder ? autoUploadPath : uploadAssets.serverUrl
+        let autoUploadSubfolderGranularity = NCManageDatabase.shared.getAccountAutoUploadSubfolderGranularity()
+
 
         for tlAsset in uploadAssets.assets {
             guard let asset = tlAsset.phAsset,
@@ -279,7 +282,17 @@ struct UploadAssetsView: View {
                 let yearString = dateFormatter.string(from: creationDate)
                 dateFormatter.dateFormat = "MM"
                 let monthString = dateFormatter.string(from: creationDate)
-                serverUrl = autoUploadPath + "/" + yearString + "/" + monthString
+                dateFormatter.dateFormat = "dd"
+                let dayString = dateFormatter.string(from: creationDate)
+                if (autoUploadSubfolderGranularity == 0) {
+                    serverUrl = autoUploadPath + "/" + yearString
+                }
+                else if (autoUploadSubfolderGranularity == 2) {
+                    serverUrl = autoUploadPath + "/" + yearString + "/" + monthString + "/" + dayString
+                }
+                else {  // Month Granularity is default
+                    serverUrl = autoUploadPath + "/" + yearString + "/" + monthString
+                }
             }
 
             // Check if is in upload

+ 12 - 1
iOSClient/Networking/NCAutoUpload.swift

@@ -83,6 +83,7 @@ class NCAutoUpload: NSObject {
         }
 
         let autoUploadPath = NCManageDatabase.shared.getAccountAutoUploadPath(urlBase: account.urlBase, userId: account.userId, account: account.account)
+        let autoUploadSubfolderGranularity = NCManageDatabase.shared.getAccountAutoUploadSubfolderGranularity()
         var metadatas: [tableMetadata] = []
 
         self.getCameraRollAssets(viewController: viewController, account: account, selector: selector, alignPhotoLibrary: false) { assets in
@@ -113,6 +114,8 @@ class NCAutoUpload: NSObject {
                 let year = dateFormatter.string(from: assetDate)
                 dateFormatter.dateFormat = "MM"
                 let month = dateFormatter.string(from: assetDate)
+                dateFormatter.dateFormat = "dd"
+                let day = dateFormatter.string(from: assetDate)
                 let assetMediaType = asset.mediaType
                 var serverUrl: String = ""
                 let fileName = CCUtility.createFileName(asset.value(forKey: "filename") as? String, fileDate: assetDate, fileType: assetMediaType, keyFileName: NCGlobal.shared.keyFileNameAutoUploadMask, keyFileNameType: NCGlobal.shared.keyFileNameAutoUploadType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginalAutoUpload, forcedNewFileName: false)!
@@ -136,7 +139,15 @@ class NCAutoUpload: NSObject {
                 }
 
                 if account.autoUploadCreateSubfolder {
-                    serverUrl = autoUploadPath + "/" + year + "/" + month
+                    if (autoUploadSubfolderGranularity == 0) {
+                        serverUrl = autoUploadPath + "/" + year
+                    }
+                    else if (autoUploadSubfolderGranularity == 2) {
+                        serverUrl = autoUploadPath + "/" + year + "/" + month + "/" + day
+                    }
+                    else {  // Month Granularity is default
+                        serverUrl = autoUploadPath + "/" + year + "/" + month
+                    }
                 } else {
                     serverUrl = autoUploadPath
                 }

+ 24 - 8
iOSClient/Networking/NCNetworking.swift

@@ -1102,7 +1102,8 @@ class NCNetworking: NSObject, NKCommonDelegate {
         let autoUploadPath = NCManageDatabase.shared.getAccountAutoUploadPath(urlBase: urlBase, userId: userId, account: account)
         let serverUrlBase = NCManageDatabase.shared.getAccountAutoUploadDirectory(urlBase: urlBase, userId: userId, account: account)
         let fileNameBase =  NCManageDatabase.shared.getAccountAutoUploadFileName()
-
+        let autoUploadSubfolderGranularity = NCManageDatabase.shared.getAccountAutoUploadSubfolderGranularity()
+        
         func createFolder(fileName: String, serverUrl: String) -> Bool {
             var result: Bool = false
             let semaphore = DispatchSemaphore(value: 0)
@@ -1125,7 +1126,17 @@ class NCNetworking: NSObject, NKCommonDelegate {
                 let year = dateFormatter.string(from: date)
                 dateFormatter.dateFormat = "MM"
                 let month = dateFormatter.string(from: date)
-                datesSubFolder.append("\(year)/\(month)")
+                dateFormatter.dateFormat = "dd"
+                let day = dateFormatter.string(from: date)
+                if (autoUploadSubfolderGranularity == 0) {
+                    datesSubFolder.append("\(year)")
+                }
+                else if (autoUploadSubfolderGranularity == 2) {
+                    datesSubFolder.append("\(year)/\(month)/\(day)")
+                }
+                else {  // Month Granularity is default
+                    datesSubFolder.append("\(year)/\(month)")
+                }
             }
 
             return Array(Set(datesSubFolder))
@@ -1135,14 +1146,19 @@ class NCNetworking: NSObject, NKCommonDelegate {
 
         if useSubFolder && result {
             for dateSubFolder in createNameSubFolder() {
-                let yearMonth = dateSubFolder.split(separator: "/")
-                guard let year = yearMonth.first else { break }
-                guard let month = yearMonth.last else { break }
+                let subfolderArray = dateSubFolder.split(separator: "/")
+                let year = subfolderArray[0]
                 let serverUrlYear = autoUploadPath
-                let serverUrlMonth = autoUploadPath + "/" + year
-                result = createFolder(fileName: String(year), serverUrl: serverUrlYear)
-                if result {
+                result = createFolder(fileName: String(year), serverUrl: serverUrlYear)  // Year always present independently of preference value
+                if result && (autoUploadSubfolderGranularity >= 1) {
+                    let month = subfolderArray[1]
+                    let serverUrlMonth = autoUploadPath + "/" + year
                     result = createFolder(fileName: String(month), serverUrl: serverUrlMonth)
+                    if result && (autoUploadSubfolderGranularity == 2) {
+                        let day = subfolderArray[2]
+                        let serverUrlDay = autoUploadPath + "/" + year + "/" + month
+                        result = createFolder(fileName: String(day), serverUrl: serverUrlDay)
+                    }
                 }
                 if !result { break }
             }