|
@@ -217,17 +217,32 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
|
|
|
|
|
|
func readFileOrFolder(serverUrl: String, completionHandler: @escaping (_ metadatas: [tableMetadata]?) -> Void) {
|
|
func readFileOrFolder(serverUrl: String, completionHandler: @escaping (_ metadatas: [tableMetadata]?) -> Void) {
|
|
|
|
|
|
- NCCommunication.shared.readFileOrFolder(serverUrlFileName: serverUrl, depth: "1", showHiddenFiles: CCUtility.getShowHiddenFiles()) { (account, files, responseData, errorCode, errorDescription) in
|
|
|
|
|
|
+ var directoryEtag: String?
|
|
|
|
+
|
|
|
|
+ if let tableDirectory = NCManageDatabase.sharedInstance.getTableDirectory(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", fileProviderData.sharedInstance.account, serverUrl)) {
|
|
|
|
+ directoryEtag = tableDirectory.etag
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ NCCommunication.shared.readFileOrFolder(serverUrlFileName: serverUrl, depth: "0", showHiddenFiles: CCUtility.getShowHiddenFiles()) { (account, files, responseData, errorCode, errorDescription) in
|
|
|
|
+
|
|
|
|
+ if directoryEtag != files.first?.etag {
|
|
|
|
|
|
- if errorCode == 0 {
|
|
|
|
- DispatchQueue.global().async {
|
|
|
|
- NCManageDatabase.sharedInstance.convertNCCommunicationFilesToMetadatas(files, useMetadataFolder: true, account: account) { (metadataFolder, metadatasFolder, metadatas) in
|
|
|
|
- let metadatasResult = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND status == %d", account, serverUrl, k_metadataStatusNormal))
|
|
|
|
- NCManageDatabase.sharedInstance.updateMetadatas(metadatas, metadatasResult: metadatasResult)
|
|
|
|
- for metadata in metadatasFolder {
|
|
|
|
- let serverUrl = metadata.serverUrl + "/" + metadata.fileNameView
|
|
|
|
- NCManageDatabase.sharedInstance.addDirectory(encrypted: metadata.e2eEncrypted, favorite: metadata.favorite, ocId: metadata.ocId, fileId: metadata.fileId, etag: nil, permissions: metadata.permissions, serverUrl: serverUrl, richWorkspace: metadata.richWorkspace, account: metadata.account)
|
|
|
|
|
|
+ NCCommunication.shared.readFileOrFolder(serverUrlFileName: serverUrl, depth: "1", showHiddenFiles: CCUtility.getShowHiddenFiles()) { (account, files, responseData, errorCode, errorDescription) in
|
|
|
|
+
|
|
|
|
+ if errorCode == 0 {
|
|
|
|
+ DispatchQueue.global().async {
|
|
|
|
+ NCManageDatabase.sharedInstance.convertNCCommunicationFilesToMetadatas(files, useMetadataFolder: true, account: account) { (metadataFolder, metadatasFolder, metadatas) in
|
|
|
|
+ let metadatasResult = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@ AND status == %d", account, serverUrl, k_metadataStatusNormal))
|
|
|
|
+ NCManageDatabase.sharedInstance.updateMetadatas(metadatas, metadatasResult: metadatasResult)
|
|
|
|
+ for metadata in metadatasFolder {
|
|
|
|
+ let serverUrl = metadata.serverUrl + "/" + metadata.fileNameView
|
|
|
|
+ NCManageDatabase.sharedInstance.addDirectory(encrypted: metadata.e2eEncrypted, favorite: metadata.favorite, ocId: metadata.ocId, fileId: metadata.fileId, etag: nil, permissions: metadata.permissions, serverUrl: serverUrl, richWorkspace: metadata.richWorkspace, account: metadata.account)
|
|
|
|
+ }
|
|
|
|
+ let metadatas = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", fileProviderData.sharedInstance.account, serverUrl), sorted: "fileName", ascending: true)
|
|
|
|
+ completionHandler(metadatas)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
let metadatas = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", fileProviderData.sharedInstance.account, serverUrl), sorted: "fileName", ascending: true)
|
|
let metadatas = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", fileProviderData.sharedInstance.account, serverUrl), sorted: "fileName", ascending: true)
|
|
completionHandler(metadatas)
|
|
completionHandler(metadatas)
|
|
}
|
|
}
|
|
@@ -246,15 +261,22 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
|
|
if fileNamePath == "" {
|
|
if fileNamePath == "" {
|
|
fileNamePath = "/"
|
|
fileNamePath = "/"
|
|
}
|
|
}
|
|
|
|
+ var directoryEtag: String?
|
|
|
|
+
|
|
|
|
+ if let tableDirectory = NCManageDatabase.sharedInstance.getTableDirectory(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", fileProviderData.sharedInstance.account, serverUrl)) {
|
|
|
|
+ if page == 1 {
|
|
|
|
+ directoryEtag = tableDirectory.etag
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
NCCommunication.shared.readFileOrFolder(serverUrlFileName: serverUrl, depth: "0", showHiddenFiles: CCUtility.getShowHiddenFiles()) { (account, files, responseData, errorCode, errorDescription) in
|
|
NCCommunication.shared.readFileOrFolder(serverUrlFileName: serverUrl, depth: "0", showHiddenFiles: CCUtility.getShowHiddenFiles()) { (account, files, responseData, errorCode, errorDescription) in
|
|
|
|
|
|
- if errorCode == 0 && files.count == 1 {
|
|
|
|
|
|
+ if errorCode == 0 && files.count == 1 && directoryEtag != files.first?.etag {
|
|
|
|
|
|
if page == 1 {
|
|
if page == 1 {
|
|
let metadataFolder = NCManageDatabase.sharedInstance.convertNCFileToMetadata(files[0], isEncrypted: false, account: account)
|
|
let metadataFolder = NCManageDatabase.sharedInstance.convertNCFileToMetadata(files[0], isEncrypted: false, account: account)
|
|
NCManageDatabase.sharedInstance.addMetadata(metadataFolder)
|
|
NCManageDatabase.sharedInstance.addMetadata(metadataFolder)
|
|
- NCManageDatabase.sharedInstance.addDirectory(encrypted: metadataFolder.e2eEncrypted, favorite: metadataFolder.favorite, ocId: metadataFolder.ocId, fileId: metadataFolder.fileId, etag: nil, permissions: metadataFolder.permissions, serverUrl: serverUrl, richWorkspace: metadataFolder.richWorkspace, account: metadataFolder.account)
|
|
|
|
|
|
+ NCManageDatabase.sharedInstance.addDirectory(encrypted: metadataFolder.e2eEncrypted, favorite: metadataFolder.favorite, ocId: metadataFolder.ocId, fileId: metadataFolder.fileId, etag: metadataFolder.etag, permissions: metadataFolder.permissions, serverUrl: serverUrl, richWorkspace: metadataFolder.richWorkspace, account: metadataFolder.account)
|
|
}
|
|
}
|
|
|
|
|
|
NCCommunication.shared.iosHelper(fileNamePath: fileNamePath, serverUrl: serverUrl, offset: offset, limit: limit) { (account, files, errorCode, errorDescription) in
|
|
NCCommunication.shared.iosHelper(fileNamePath: fileNamePath, serverUrl: serverUrl, offset: offset, limit: limit) { (account, files, errorCode, errorDescription) in
|
|
@@ -277,6 +299,9 @@ class FileProviderEnumerator: NSObject, NSFileProviderEnumerator {
|
|
completionHandler(metadatas)
|
|
completionHandler(metadatas)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
|
|
+ let metadatas = NCManageDatabase.sharedInstance.getMetadatas(predicate: NSPredicate(format: "account == %@ AND serverUrl == %@", fileProviderData.sharedInstance.account, serverUrl), sorted: "fileName", ascending: true)
|
|
|
|
+ completionHandler(metadatas)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|