|
@@ -26,56 +26,116 @@ import FileProvider
|
|
|
extension FileProviderExtension {
|
|
|
|
|
|
// --------------------------------------------------------------------------------------------
|
|
|
- // MARK: - Delete
|
|
|
+ // MARK: - Read folder
|
|
|
// --------------------------------------------------------------------------------------------
|
|
|
|
|
|
- func deleteFile(withIdentifier itemIdentifier: NSFileProviderItemIdentifier, parentItemIdentifier: NSFileProviderItemIdentifier, metadata: tableMetadata) {
|
|
|
+ func readFolder(enumeratedItemIdentifier: NSFileProviderItemIdentifier) {
|
|
|
|
|
|
/* ONLY iOS 11*/
|
|
|
guard #available(iOS 11, *) else { return }
|
|
|
|
|
|
- guard let serverUrl = NCManageDatabase.sharedInstance.getServerUrl(metadata.directoryID) else {
|
|
|
- return
|
|
|
- }
|
|
|
+ var serverUrl: String?
|
|
|
+ var counter = 0
|
|
|
|
|
|
- let ocNetworking = OCnetworking.init(delegate: nil, metadataNet: nil, withUser: providerData.accountUser, withUserID: providerData.accountUserID, withPassword: providerData.accountPassword, withUrl: providerData.accountUrl)
|
|
|
- ocNetworking?.deleteFileOrFolder(metadata.fileName, serverUrl: serverUrl, success: {
|
|
|
+ if (enumeratedItemIdentifier == .rootContainer) {
|
|
|
|
|
|
- let fileNamePath = self.providerData.directoryUser + "/" + metadata.fileID
|
|
|
- do {
|
|
|
- try self.fileManager.removeItem(atPath: fileNamePath)
|
|
|
- } catch let error {
|
|
|
- print("error: \(error)")
|
|
|
- }
|
|
|
- do {
|
|
|
- try self.fileManager.removeItem(atPath: fileNamePath + ".ico")
|
|
|
- } catch let error {
|
|
|
- print("error: \(error)")
|
|
|
+ serverUrl = providerData.homeServerUrl
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+ guard let metadata = providerData.getTableMetadataFromItemIdentifier(enumeratedItemIdentifier) else {
|
|
|
+ return
|
|
|
}
|
|
|
- do {
|
|
|
- try self.fileManager.removeItem(atPath: self.providerData.fileProviderStorageURL!.path + "/" + itemIdentifier.rawValue)
|
|
|
- } catch let error {
|
|
|
- print("error: \(error)")
|
|
|
+ guard let directorySource = NCManageDatabase.sharedInstance.getTableDirectory(predicate: NSPredicate(format: "account = %@ AND directoryID = %@", providerData.account, metadata.directoryID)) else {
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
- if metadata.directory {
|
|
|
- let dirForDelete = CCUtility.stringAppendServerUrl(serverUrl, addFileName: metadata.fileName)
|
|
|
- NCManageDatabase.sharedInstance.deleteDirectoryAndSubDirectory(serverUrl: dirForDelete!)
|
|
|
+ serverUrl = directorySource.serverUrl + "/" + metadata.fileName
|
|
|
+ }
|
|
|
+
|
|
|
+ let ocNetworking = OCnetworking.init(delegate: nil, metadataNet: nil, withUser: providerData.accountUser, withUserID: providerData.accountUserID, withPassword: providerData.accountPassword, withUrl: providerData.accountUrl)
|
|
|
+ ocNetworking?.readFolder(serverUrl, depth: "1", account: providerData.account, success: { (metadatas, metadataFolder, directoryID) in
|
|
|
+
|
|
|
+ NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "account = %@ AND directoryID = %@ AND session = ''", self.providerData.account, directoryID!), clearDateReadDirectoryID: directoryID!)
|
|
|
+ guard let metadatasUpdate = NCManageDatabase.sharedInstance.addMetadatas(metadatas as! [tableMetadata], serverUrl: serverUrl) else {
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
- NCManageDatabase.sharedInstance.deleteLocalFile(predicate: NSPredicate(format: "fileID == %@", metadata.fileID))
|
|
|
- NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "fileID == %@", metadata.fileID), clearDateReadDirectoryID: nil)
|
|
|
+ for metadata in metadatasUpdate {
|
|
|
+
|
|
|
+ let item = FileProviderItem(metadata: metadata, parentItemIdentifier: enumeratedItemIdentifier, providerData: self.providerData)
|
|
|
+
|
|
|
+ self.providerData.queueTradeSafe.sync(flags: .barrier) {
|
|
|
+ self.providerData.fileProviderSignalUpdateContainerItem[item.itemIdentifier] = item
|
|
|
+ }
|
|
|
+
|
|
|
+ counter += 1
|
|
|
+ if counter >= self.providerData.itemForPage {
|
|
|
+ //self.signalEnumerator(for: [enumeratedItemIdentifier])
|
|
|
+ counter = 0
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //self.signalEnumerator(for: [enumeratedItemIdentifier])
|
|
|
+
|
|
|
+ }, failure: { (errorMessage, errorCode) in
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ // --------------------------------------------------------------------------------------------
|
|
|
+ // MARK: - Delete
|
|
|
+ // --------------------------------------------------------------------------------------------
|
|
|
+
|
|
|
+ func deleteFile(withIdentifier itemIdentifier: NSFileProviderItemIdentifier, parentItemIdentifier: NSFileProviderItemIdentifier, metadata: tableMetadata, serverUrl: String) {
|
|
|
+
|
|
|
+ /* ONLY iOS 11*/
|
|
|
+ guard #available(iOS 11, *) else { return }
|
|
|
+
|
|
|
+ let ocNetworking = OCnetworking.init(delegate: nil, metadataNet: nil, withUser: providerData.accountUser, withUserID: providerData.accountUserID, withPassword: providerData.accountPassword, withUrl: providerData.accountUrl)
|
|
|
+ ocNetworking?.deleteFileOrFolder(metadata.fileName, serverUrl: serverUrl, success: {
|
|
|
+
|
|
|
+ self.deleteFileSystem(for: metadata, serverUrl: serverUrl, itemIdentifier: itemIdentifier)
|
|
|
|
|
|
}, failure: { (errorMessage, errorCode) in
|
|
|
|
|
|
// remove itemIdentifier on fileProviderSignalDeleteItemIdentifier
|
|
|
- fileProviderSignalDeleteContainerItemIdentifier.removeValue(forKey: itemIdentifier)
|
|
|
- fileProviderSignalDeleteWorkingSetItemIdentifier.removeValue(forKey: itemIdentifier)
|
|
|
-
|
|
|
+ self.providerData.queueTradeSafe.sync(flags: .barrier) {
|
|
|
+ self.providerData.fileProviderSignalDeleteContainerItemIdentifier.removeValue(forKey: itemIdentifier)
|
|
|
+ self.providerData.fileProviderSignalDeleteWorkingSetItemIdentifier.removeValue(forKey: itemIdentifier)
|
|
|
+ }
|
|
|
+
|
|
|
self.signalEnumerator(for: [parentItemIdentifier, .workingSet])
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+ func deleteFileSystem(for metadata: tableMetadata, serverUrl: String, itemIdentifier: NSFileProviderItemIdentifier) {
|
|
|
+
|
|
|
+ let fileNamePath = self.providerData.directoryUser + "/" + metadata.fileID
|
|
|
+ do {
|
|
|
+ try self.providerData.fileManager.removeItem(atPath: fileNamePath)
|
|
|
+ } catch let error {
|
|
|
+ print("error: \(error)")
|
|
|
+ }
|
|
|
+ do {
|
|
|
+ try self.providerData.fileManager.removeItem(atPath: fileNamePath + ".ico")
|
|
|
+ } catch let error {
|
|
|
+ print("error: \(error)")
|
|
|
+ }
|
|
|
+ do {
|
|
|
+ try self.providerData.fileManager.removeItem(atPath: self.providerData.fileProviderStorageURL!.path + "/" + itemIdentifier.rawValue)
|
|
|
+ } catch let error {
|
|
|
+ print("error: \(error)")
|
|
|
+ }
|
|
|
+
|
|
|
+ if metadata.directory {
|
|
|
+ let dirForDelete = CCUtility.stringAppendServerUrl(serverUrl, addFileName: metadata.fileName)
|
|
|
+ NCManageDatabase.sharedInstance.deleteDirectoryAndSubDirectory(serverUrl: dirForDelete!)
|
|
|
+ }
|
|
|
+
|
|
|
+ NCManageDatabase.sharedInstance.deleteLocalFile(predicate: NSPredicate(format: "fileID == %@", metadata.fileID))
|
|
|
+ NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "fileID == %@", metadata.fileID), clearDateReadDirectoryID: nil)
|
|
|
+ }
|
|
|
+
|
|
|
// --------------------------------------------------------------------------------------------
|
|
|
// MARK: - Favorite
|
|
|
// --------------------------------------------------------------------------------------------
|
|
@@ -101,15 +161,16 @@ extension FileProviderExtension {
|
|
|
}, failure: { (errorMessage, errorCode) in
|
|
|
|
|
|
// Errore, remove from listFavoriteIdentifierRank
|
|
|
- listFavoriteIdentifierRank.removeValue(forKey: itemIdentifier.rawValue)
|
|
|
+ self.providerData.listFavoriteIdentifierRank.removeValue(forKey: itemIdentifier.rawValue)
|
|
|
|
|
|
let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier, providerData: self.providerData)
|
|
|
|
|
|
- fileProviderSignalUpdateContainerItem[item.itemIdentifier] = item
|
|
|
- fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
|
|
|
-
|
|
|
- self.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
|
|
|
+ self.providerData.queueTradeSafe.sync(flags: .barrier) {
|
|
|
+ self.providerData.fileProviderSignalUpdateContainerItem[item.itemIdentifier] = item
|
|
|
+ self.providerData.fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
|
|
|
+ }
|
|
|
|
|
|
+ self.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
|
|
|
})
|
|
|
}
|
|
|
|
|
@@ -117,64 +178,132 @@ extension FileProviderExtension {
|
|
|
// MARK: - Upload
|
|
|
// --------------------------------------------------------------------------------------------
|
|
|
|
|
|
+ func uploadStart(_ fileID: String!, task: URLSessionUploadTask!, serverUrl: String!) {
|
|
|
+
|
|
|
+ /* ONLY iOS 11*/
|
|
|
+ guard #available(iOS 11, *) else { return }
|
|
|
+
|
|
|
+ guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "fileID = %@", fileID)) else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ guard let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata) else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier, providerData: providerData)
|
|
|
+
|
|
|
+ NSFileProviderManager.default.register(task, forItemWithIdentifier: NSFileProviderItemIdentifier(item.itemIdentifier.rawValue)) { (error) in }
|
|
|
+
|
|
|
+ providerData.queueTradeSafe.sync(flags: .barrier) {
|
|
|
+ self.providerData.fileProviderSignalUpdateContainerItem[item.itemIdentifier] = item
|
|
|
+ self.providerData.fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
|
|
|
+ }
|
|
|
+
|
|
|
+ self.signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
|
|
|
+ }
|
|
|
+
|
|
|
func uploadFileSuccessFailure(_ fileName: String!, fileID: String!, assetLocalIdentifier: String!, serverUrl: String!, selector: String!, selectorPost: String!, errorMessage: String!, errorCode: Int) {
|
|
|
|
|
|
/* ONLY iOS 11*/
|
|
|
guard #available(iOS 11, *) else { return }
|
|
|
|
|
|
- if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "fileID = %@", assetLocalIdentifier)) {
|
|
|
-
|
|
|
- let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata)
|
|
|
- if parentItemIdentifier != nil {
|
|
|
-
|
|
|
- let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier!, providerData: providerData)
|
|
|
-
|
|
|
- fileProviderSignalDeleteContainerItemIdentifier[item.itemIdentifier] = item.itemIdentifier
|
|
|
- fileProviderSignalDeleteWorkingSetItemIdentifier[item.itemIdentifier] = item.itemIdentifier
|
|
|
-
|
|
|
- signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
|
|
|
- }
|
|
|
+ guard let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", providerData.account, fileID)) else {
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
- NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "fileID = %@", assetLocalIdentifier), clearDateReadDirectoryID: nil)
|
|
|
+ guard let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata) else {
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
if errorCode == 0 {
|
|
|
|
|
|
- NCManageDatabase.sharedInstance.deleteQueueUpload(assetLocalIdentifier: assetLocalIdentifier, selector: selector)
|
|
|
-
|
|
|
- if let metadata = NCManageDatabase.sharedInstance.getMetadata(predicate: NSPredicate(format: "account = %@ AND fileID = %@", providerData.account, fileID)) {
|
|
|
+ // importDocument
|
|
|
+ if (selectorPost == providerData.selectorPostImportDocument) {
|
|
|
+
|
|
|
+ NCManageDatabase.sharedInstance.deleteQueueUpload(assetLocalIdentifier: assetLocalIdentifier, selector: selector)
|
|
|
|
|
|
// Rename directory file
|
|
|
- if fileManager.fileExists(atPath: providerData.fileProviderStorageURL!.path + "/" + assetLocalIdentifier) {
|
|
|
+ if providerData.fileManager.fileExists(atPath: providerData.fileProviderStorageURL!.path + "/" + assetLocalIdentifier) {
|
|
|
let itemIdentifier = providerData.getItemIdentifier(metadata: metadata)
|
|
|
- _ = moveFile(providerData.fileProviderStorageURL!.path + "/" + assetLocalIdentifier, toPath: providerData.fileProviderStorageURL!.path + "/" + itemIdentifier.rawValue)
|
|
|
+ _ = providerData.moveFile(providerData.fileProviderStorageURL!.path + "/" + assetLocalIdentifier, toPath: providerData.fileProviderStorageURL!.path + "/" + itemIdentifier.rawValue)
|
|
|
}
|
|
|
|
|
|
- NCManageDatabase.sharedInstance.setLocalFile(fileID: fileID, date: nil, exifDate: nil, exifLatitude: nil, exifLongitude: nil, fileName: nil, etag: metadata.etag, etagFPE: metadata.etag)
|
|
|
-
|
|
|
- guard let parentItemIdentifier = providerData.getParentItemIdentifier(metadata: metadata) else {
|
|
|
- return
|
|
|
+ providerData.queueTradeSafe.sync(flags: .barrier) {
|
|
|
+ let itemIdentifier = NSFileProviderItemIdentifier(assetLocalIdentifier)
|
|
|
+ self.providerData.fileProviderSignalDeleteContainerItemIdentifier[itemIdentifier] = itemIdentifier
|
|
|
+ self.providerData.fileProviderSignalDeleteWorkingSetItemIdentifier[itemIdentifier] = itemIdentifier
|
|
|
}
|
|
|
|
|
|
- let item = FileProviderItem(metadata: metadata, parentItemIdentifier: parentItemIdentifier, providerData: providerData)
|
|
|
-
|
|
|
- fileProviderSignalUpdateContainerItem[item.itemIdentifier] = item
|
|
|
- fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
|
|
|
+ }
|
|
|
+
|
|
|
+ // itemChanged
|
|
|
+ if (selectorPost == providerData.selectorPostItemChanged) {
|
|
|
+
|
|
|
+ let filePathItemIdentifier = providerData.fileProviderStorageURL!.path + "/" + providerData.getItemIdentifier(metadata: metadata).rawValue + "/" + metadata.fileName
|
|
|
+ _ = self.providerData.copyFile(filePathItemIdentifier, toPath: providerData.directoryUser + "/" + metadata.fileID)
|
|
|
+ }
|
|
|
+
|
|
|
+ NCManageDatabase.sharedInstance.setLocalFile(fileID: fileID, date: nil, exifDate: nil, exifLatitude: nil, exifLongitude: nil, fileName: nil, etag: metadata.etag, etagFPE: metadata.etag)
|
|
|
+
|
|
|
+ // remove session data
|
|
|
+ metadata.assetLocalIdentifier = ""
|
|
|
+ metadata.session = ""
|
|
|
+ metadata.sessionID = ""
|
|
|
+ metadata.sessionSelector = ""
|
|
|
+ metadata.sessionSelectorPost = ""
|
|
|
+ let metadata = NCManageDatabase.sharedInstance.addMetadata(metadata)
|
|
|
+
|
|
|
+ let item = FileProviderItem(metadata: metadata!, parentItemIdentifier: parentItemIdentifier, providerData: providerData)
|
|
|
|
|
|
- signalEnumerator(for: [item.parentItemIdentifier, .workingSet])
|
|
|
+ providerData.queueTradeSafe.sync(flags: .barrier) {
|
|
|
+ self.providerData.fileProviderSignalUpdateContainerItem[item.itemIdentifier] = item
|
|
|
+ self.providerData.fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
|
|
|
}
|
|
|
|
|
|
- uploadFile()
|
|
|
+ uploadFileImportDocument()
|
|
|
|
|
|
} else {
|
|
|
|
|
|
- //TODO: manage error
|
|
|
+ // importDocument
|
|
|
+ if (selectorPost == providerData.selectorPostImportDocument) {
|
|
|
+
|
|
|
+ NCManageDatabase.sharedInstance.unlockQueueUpload(assetLocalIdentifier: assetLocalIdentifier)
|
|
|
+ }
|
|
|
+
|
|
|
+ // itemChanged
|
|
|
+ if (selectorPost == providerData.selectorPostItemChanged) {
|
|
|
+
|
|
|
+ let itemIdentifier = providerData.getItemIdentifier(metadata: metadata)
|
|
|
+
|
|
|
+ let urlString = (providerData.fileProviderStorageURL!.path + "/" + itemIdentifier.rawValue + "/" + fileName).addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)!
|
|
|
+ let url = URL(string: urlString)!
|
|
|
+
|
|
|
+ DispatchQueue.main.asyncAfter(deadline: .now() + Double(k_timerProcessAutoUploadExtension)) {
|
|
|
+
|
|
|
+ self.uploadFileItemChanged(for: itemIdentifier, url: url)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // remove session data
|
|
|
+ metadata.session = ""
|
|
|
+ metadata.sessionID = ""
|
|
|
+ metadata.sessionSelector = ""
|
|
|
+ metadata.sessionSelectorPost = ""
|
|
|
+ let metadata = NCManageDatabase.sharedInstance.addMetadata(metadata)
|
|
|
+
|
|
|
+ let item = FileProviderItem(metadata: metadata!, parentItemIdentifier: parentItemIdentifier, providerData: providerData)
|
|
|
|
|
|
- NCManageDatabase.sharedInstance.unlockQueueUpload(assetLocalIdentifier: assetLocalIdentifier)
|
|
|
+ providerData.queueTradeSafe.sync(flags: .barrier) {
|
|
|
+ providerData.fileProviderSignalUpdateContainerItem[item.itemIdentifier] = item
|
|
|
+ providerData.fileProviderSignalUpdateWorkingSetItem[item.itemIdentifier] = item
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+ self.signalEnumerator(for: [parentItemIdentifier, .workingSet])
|
|
|
}
|
|
|
|
|
|
- func uploadFile() {
|
|
|
+ func uploadFileImportDocument() {
|
|
|
|
|
|
let queueInLock = NCManageDatabase.sharedInstance.getQueueUploadInLock()
|
|
|
if queueInLock != nil && queueInLock!.count == 0 {
|
|
@@ -182,9 +311,9 @@ extension FileProviderExtension {
|
|
|
let metadataNetQueue = NCManageDatabase.sharedInstance.lockQueueUpload(selector: selectorUploadFile, withPath: true)
|
|
|
if metadataNetQueue != nil {
|
|
|
|
|
|
- if self.copyFile(metadataNetQueue!.path, toPath: providerData.directoryUser + "/" + metadataNetQueue!.fileName) == nil {
|
|
|
+ if self.providerData.copyFile(metadataNetQueue!.path, toPath: providerData.directoryUser + "/" + metadataNetQueue!.fileName) == nil {
|
|
|
|
|
|
- CCNetworking.shared().uploadFile(metadataNetQueue!.fileName, serverUrl: metadataNetQueue!.serverUrl, assetLocalIdentifier: metadataNetQueue!.assetLocalIdentifier ,session: metadataNetQueue!.session, taskStatus: metadataNetQueue!.taskStatus, selector: metadataNetQueue!.selector, selectorPost: metadataNetQueue!.selectorPost, errorCode: 0, delegate: self)
|
|
|
+ CCNetworking.shared().uploadFile(metadataNetQueue!.fileName, serverUrl: metadataNetQueue!.serverUrl, fileID: metadataNetQueue!.assetLocalIdentifier, assetLocalIdentifier: metadataNetQueue!.assetLocalIdentifier, session: metadataNetQueue!.session, taskStatus: metadataNetQueue!.taskStatus, selector: metadataNetQueue!.selector, selectorPost: metadataNetQueue!.selectorPost, errorCode: 0, delegate: self)
|
|
|
|
|
|
} else {
|
|
|
// file not present, delete record Upload Queue
|
|
@@ -194,6 +323,27 @@ extension FileProviderExtension {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ func uploadFileItemChanged(for itemIdentifier: NSFileProviderItemIdentifier, url: URL) {
|
|
|
+
|
|
|
+ guard let metadata = providerData.getTableMetadataFromItemIdentifier(itemIdentifier) else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ metadata.assetLocalIdentifier = ""
|
|
|
+ metadata.session = k_upload_session_extension
|
|
|
+ metadata.sessionID = metadata.fileID
|
|
|
+ metadata.sessionSelector = selectorUploadFile
|
|
|
+ metadata.sessionSelectorPost = providerData.selectorPostItemChanged
|
|
|
+
|
|
|
+ guard let metadataForUpload = NCManageDatabase.sharedInstance.addMetadata(metadata) else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ _ = self.providerData.copyFile(url.path, toPath: providerData.directoryUser + "/" + metadata.fileID)
|
|
|
+
|
|
|
+ CCNetworking.shared().uploadFileMetadata(metadataForUpload, taskStatus: Int(k_taskStatusResume), delegate: self)
|
|
|
+ }
|
|
|
+
|
|
|
func verifyUploadQueueInLock() {
|
|
|
|
|
|
let tasks = CCNetworking.shared().getUploadTasksExtensionSession()
|