Marino Faggiana 1 жил өмнө
parent
commit
9bf1721fcd

+ 1 - 1
Share/NCShareExtension+Files.swift

@@ -99,7 +99,7 @@ class NCFilesExtensionHandler {
 
     @discardableResult
     init(items: [NSExtensionItem], completion: @escaping ([String]) -> Void) {
-        CCUtility.emptyTemporaryDirectory()
+        NCUtilityFileSystem.shared.emptyTemporaryDirectory()
         var counter = 0
 
         self.itemsProvider = items.compactMap({ $0.attachments }).flatMap { $0.filter({

+ 2 - 2
iOSClient/AppDelegate.swift

@@ -84,8 +84,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
             FirebaseApp.configure()
         }
 
-        CCUtility.createDirectoryStandard()
-        CCUtility.emptyTemporaryDirectory()
+        NCUtilityFileSystem.shared.createDirectoryStandard()
+        NCUtilityFileSystem.shared.emptyTemporaryDirectory()
         NCUtility.shared.clearCacheDirectory("com.limit-point.LivePhoto")
 
         // Activated singleton

+ 1 - 1
iOSClient/Main/NCActionCenter.swift

@@ -346,7 +346,7 @@ class NCActionCenter: NSObject, UIDocumentInteractionControllerDelegate, NCSelec
 
         let fileNamePath = NCUtilityFileSystem.shared.getDirectoryProviderStorageOcId(metadata.ocId, fileNameView: metadata.fileNameView)
         let fileNameDestination = CCUtility.createFileName("scan.png", fileDate: Date(), fileType: PHAssetMediaType.image, keyFileName: NCGlobal.shared.keyFileNameMask, keyFileNameType: NCGlobal.shared.keyFileNameType, keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal, forcedNewFileName: true)!
-        let fileNamePathDestination = CCUtility.getDirectoryScan() + "/" + fileNameDestination
+        let fileNamePathDestination = NCUtilityFileSystem.shared.directoryScan + "/" + fileNameDestination
 
         NCUtilityFileSystem.shared.copyFile(atPath: fileNamePath, toPath: fileNamePathDestination)
 

+ 1 - 1
iOSClient/Scan document/NCDocumentCamera.swift

@@ -54,7 +54,7 @@ class NCDocumentCamera: NSObject, VNDocumentCameraViewControllerDelegate {
                                                     keyFileNameType: NCGlobal.shared.keyFileNameType,
                                                     keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal,
                                                     forcedNewFileName: true)!
-            let fileNamePath = CCUtility.getDirectoryScan() + "/" + fileName
+            let fileNamePath = NCUtilityFileSystem.shared.directoryScan + "/" + fileName
             let image = scan.imageOfPage(at: pageNumber)
             do {
                 try image.pngData()?.write(to: NSURL.fileURL(withPath: fileNamePath))

+ 2 - 2
iOSClient/Scan document/NCScan+CollectionView.swift

@@ -36,7 +36,7 @@ extension NCScan: UICollectionViewDataSource {
 
             let cell = (collectionView.dequeueReusableCell(withReuseIdentifier: "cell1", for: indexPath) as? NCScanCell)!
 
-            let fileNamePath = CCUtility.getDirectoryScan() + "/" + itemsSource[indexPath.row]
+            let fileNamePath = NCUtilityFileSystem.shared.directoryScan + "/" + itemsSource[indexPath.row]
 
             guard let data = try? Data(contentsOf: URL(fileURLWithPath: fileNamePath)), var image = UIImage(data: data) else { return cell }
 
@@ -55,7 +55,7 @@ extension NCScan: UICollectionViewDataSource {
                 let buttonPosition: CGPoint = (sender as? UIButton)!.convert(.zero, to: self.collectionViewSource)
                 if let indexPath = self.collectionViewSource.indexPathForItem(at: buttonPosition) {
 
-                    let fileNameAtPath = CCUtility.getDirectoryScan() + "/" + self.itemsSource[indexPath.row]
+                    let fileNameAtPath = NCUtilityFileSystem.shared.directoryScan + "/" + self.itemsSource[indexPath.row]
                     CCUtility.removeFile(atPath: fileNameAtPath)
                     self.itemsSource.remove(at: indexPath.row)
 

+ 4 - 4
iOSClient/Scan document/NCScan.swift

@@ -191,7 +191,7 @@ class NCScan: UIViewController, NCScanCellCellDelegate {
 
         for fileName in itemsSource where !itemsDestination.contains(fileName) {
 
-            let fileNamePathAt = CCUtility.getDirectoryScan() + "/" + fileName
+            let fileNamePathAt = NCUtilityFileSystem.shared.directoryScan + "/" + fileName
             guard let data = try? Data(contentsOf: URL(fileURLWithPath: fileNamePathAt)), let image = UIImage(data: data) else { return }
 
             imagesDestination.append(image)
@@ -228,7 +228,7 @@ class NCScan: UIViewController, NCScanCellCellDelegate {
         itemsSource.removeAll()
 
         do {
-            let atPath = CCUtility.getDirectoryScan()!
+            let atPath = NCUtilityFileSystem.shared.directoryScan
             let directoryContents = try FileManager.default.contentsOfDirectory(atPath: atPath)
             for fileName in directoryContents where fileName.first != "." {
                 itemsSource.append(fileName)
@@ -329,7 +329,7 @@ class NCScan: UIViewController, NCScanCellCellDelegate {
                 if collectionView === collectionViewDestination {
 
                     let fileName = (item.dragItem.localObject as? String)!
-                    let fileNamePathAt = CCUtility.getDirectoryScan() + "/" + fileName
+                    let fileNamePathAt = NCUtilityFileSystem.shared.directoryScan + "/" + fileName
 
                     guard let data = try? Data(contentsOf: URL(fileURLWithPath: fileNamePathAt)), let image = UIImage(data: data) else { return }
 
@@ -382,7 +382,7 @@ class NCScan: UIViewController, NCScanCellCellDelegate {
                                                     keyFileNameType: NCGlobal.shared.keyFileNameType,
                                                     keyFileNameOriginal: NCGlobal.shared.keyFileNameOriginal,
                                                     forcedNewFileName: true)!
-            let fileNamePath = CCUtility.getDirectoryScan() + "/" + fileName
+            let fileNamePath = NCUtilityFileSystem.shared.directoryScan + "/" + fileName
 
             do {
                 try image.pngData()?.write(to: NSURL.fileURL(withPath: fileNamePath), options: .atomic)

+ 1 - 1
iOSClient/Scan document/NCUploadScanDocument.swift

@@ -127,7 +127,7 @@ class NCUploadScanDocument: ObservableObject {
                 metadata.size = NCUtilityFileSystem.shared.getFileSize(filePath: fileNamePath)
                 NCNetworkingProcessUpload.shared.createProcessUploads(metadatas: [metadata], completion: { _ in })
                 if self.removeAllFiles {
-                    let path = CCUtility.getDirectoryScan()!
+                    let path = NCUtilityFileSystem.shared.directoryScan
                     let filePaths = try FileManager.default.contentsOfDirectory(atPath: path)
                     for filePath in filePaths {
                         try FileManager.default.removeItem(atPath: path + "/" + filePath)

+ 9 - 9
iOSClient/Settings/CCAdvanced.m

@@ -376,13 +376,13 @@
 
         [[NCManageDatabase shared] clearDatabaseWithAccount:account removeAccount:false];
 
-        [CCUtility removeGroupDirectoryProviderStorage];
-        [CCUtility removeGroupLibraryDirectory];
+        [[NCUtilityFileSystem shared] removeGroupDirectoryProviderStorage];
+        [[NCUtilityFileSystem shared] removeGroupLibraryDirectory];
 
-        [CCUtility removeDocumentsDirectory];
-        [CCUtility removeTemporaryDirectory];
+        [[NCUtilityFileSystem shared] removeDocumentsDirectory];
+        [[NCUtilityFileSystem shared] removeTemporaryDirectory];
 
-        [CCUtility createDirectoryStandard];
+        [[NCUtilityFileSystem shared] createDirectoryStandard];
 
         [[NCAutoUpload shared] alignPhotoLibraryWithViewController:self];
 
@@ -459,11 +459,11 @@
             [[NSURLCache sharedURLCache] setMemoryCapacity:0];
             [[NSURLCache sharedURLCache] setDiskCapacity:0];
 
-            [CCUtility removeGroupDirectoryProviderStorage];
-            [CCUtility removeGroupApplicationSupport];
+            [[NCUtilityFileSystem shared] removeGroupDirectoryProviderStorage];
+            [[NCUtilityFileSystem shared] removeGroupApplicationSupport];
 
-            [CCUtility removeDocumentsDirectory];
-            [CCUtility removeTemporaryDirectory];
+            [[NCUtilityFileSystem shared] removeDocumentsDirectory];
+            [[NCUtilityFileSystem shared] removeTemporaryDirectory];
 
             [[[NCKeychain alloc] init] removeAll];
 

+ 4 - 4
iOSClient/Settings/NCSettingsBundleHelper.swift

@@ -42,10 +42,10 @@ class NCSettingsBundleHelper: NSObject {
             URLCache.shared.memoryCapacity = 0
             URLCache.shared.diskCapacity = 0
 
-            CCUtility.removeGroupDirectoryProviderStorage()
-            CCUtility.removeGroupApplicationSupport()
-            CCUtility.removeDocumentsDirectory()
-            CCUtility.removeTemporaryDirectory()
+            NCUtilityFileSystem.shared.removeGroupDirectoryProviderStorage()
+            NCUtilityFileSystem.shared.removeGroupApplicationSupport()
+            NCUtilityFileSystem.shared.removeDocumentsDirectory()
+            NCUtilityFileSystem.shared.removeTemporaryDirectory()
 
             NCKeychain().removeAll()
             NCManageDatabase.shared.removeDB()

+ 0 - 12
iOSClient/Utility/CCUtility.h

@@ -46,16 +46,6 @@
 + (NSString *)createFileNameDate:(NSString *)fileName extension:(NSString *)extension;
 + (NSString *)createFileName:(NSString *)fileName fileDate:(NSDate *)fileDate fileType:(PHAssetMediaType)fileType keyFileName:(NSString *)keyFileName keyFileNameType:(NSString *)keyFileNameType keyFileNameOriginal:(NSString *)keyFileNameOriginal forcedNewFileName:(BOOL)forcedNewFileName;
 
-+ (void)createDirectoryStandard;
-
-
-+ (void)removeGroupApplicationSupport;
-+ (void)removeGroupLibraryDirectory;
-+ (void)removeGroupDirectoryProviderStorage;
-+ (void)removeDocumentsDirectory;
-+ (void)removeTemporaryDirectory;
-+ (void)emptyTemporaryDirectory;
-
 + (NSString *)getTitleSectionDate:(NSDate *)date;
 
 + (void)moveFileAtPath:(NSString *)atPath toPath:(NSString *)toPath;
@@ -66,8 +56,6 @@
 + (NSString *)returnPathfromServerUrl:(NSString *)serverUrl urlBase:(NSString *)urlBase userId:(NSString *)userId account:(NSString *)account;
 + (NSString *)returnFileNamePathFromFileName:(NSString *)metadataFileName serverUrl:(NSString *)serverUrl urlBase:(NSString *)urlBase userId:(NSString *)userId account:(NSString *)account;
 
-+ (NSString *)getDirectoryScan;
-
 + (NSString *)getMimeType:(NSString *)fileNameView;
 
 // ===== Share Permissions =====

+ 0 - 249
iOSClient/Utility/CCUtility.m

@@ -42,19 +42,6 @@
 #pragma mark ===== Various =====
 #pragma --------------------------------------------------------------------------------------------
 
-+ (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
-{
-    NSError *error = nil;
-    BOOL success = [URL setResourceValue:[NSNumber numberWithBool: YES] forKey: NSURLIsExcludedFromBackupKey error: &error];
-    if(success) {
-        NSLog(@"Excluding %@ from backup", [URL lastPathComponent]);
-    } else {
-        NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
-    }
-
-    return success;
-}
-
 + (NSString *)dateDiff:(NSDate *) convertedDate
 {
     NSDate *todayDate = [NSDate date];
@@ -251,233 +238,6 @@
     return fileName;
 }
 
-+ (void)createDirectoryStandard
-{
-    NSString *path;
-    NSURL *dirGroup = [CCUtility getDirectoryGroup];
-
-    NSLog(@"[LOG] Dir Group");
-    NSLog(@"%@", [dirGroup path]);
-    NSLog(@"[LOG] Program application ");
-    NSLog(@"%@", [[CCUtility getDirectoryDocuments] stringByDeletingLastPathComponent]);
-
-    // create Directory Documents
-    path = [CCUtility getDirectoryDocuments];
-    if (![[NSFileManager defaultManager] fileExistsAtPath: path])
-        [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
-
-    // create Directory audio => Library, Application Support, audio
-    path = [CCUtility getDirectoryAudio];
-    if (![[NSFileManager defaultManager] fileExistsAtPath: path])
-        [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
-
-    // create Directory database Nextcloud
-    path = [[dirGroup URLByAppendingPathComponent:[[NCGlobal shared] appDatabaseNextcloud]] path];
-    if (![[NSFileManager defaultManager] fileExistsAtPath:path])
-        [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
-
-    // create Directory User Data
-    path = [[dirGroup URLByAppendingPathComponent:NCGlobal.shared.appUserData] path];
-    if (![[NSFileManager defaultManager] fileExistsAtPath:path])
-        [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
-
-    // create Directory Provider Storage
-    path = [CCUtility getDirectoryProviderStorage];
-    if (![[NSFileManager defaultManager] fileExistsAtPath: path])
-        [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
-
-    // create Directory Scan
-    path = [[dirGroup URLByAppendingPathComponent:NCGlobal.shared.appScan] path];
-    if (![[NSFileManager defaultManager] fileExistsAtPath:path])
-        [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
-
-    // create Directory Temp
-    path = NSTemporaryDirectory();
-    if (![[NSFileManager defaultManager] fileExistsAtPath:path])
-        [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
-
-    // Directory Excluded From Backup
-    [CCUtility addSkipBackupAttributeToItemAtURL:[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]];
-    [CCUtility addSkipBackupAttributeToItemAtURL:[[CCUtility getDirectoryGroup] URLByAppendingPathComponent:NCGlobal.shared.directoryProviderStorage]];
-    [CCUtility addSkipBackupAttributeToItemAtURL:[[CCUtility getDirectoryGroup] URLByAppendingPathComponent:NCGlobal.shared.appApplicationSupport]];
-
-    [CCUtility addSkipBackupAttributeToItemAtURL:[[CCUtility getDirectoryGroup] URLByAppendingPathComponent:NCGlobal.shared.appCertificates]];
-    [CCUtility addSkipBackupAttributeToItemAtURL:[[CCUtility getDirectoryGroup] URLByAppendingPathComponent:NCGlobal.shared.appDatabaseNextcloud]];
-    [CCUtility addSkipBackupAttributeToItemAtURL:[[CCUtility getDirectoryGroup] URLByAppendingPathComponent:NCGlobal.shared.appScan]];
-    [CCUtility addSkipBackupAttributeToItemAtURL:[[CCUtility getDirectoryGroup] URLByAppendingPathComponent:NCGlobal.shared.appUserData]];
-}
-
-+ (NSURL *)getDirectoryGroup
-{
-    NSURL *path = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:[NCBrandOptions shared].capabilitiesGroups];
-    return path;
-}
-
-// Return the path of directory Documents -> NSDocumentDirectory
-+ (NSString *)getDirectoryDocuments
-{
-    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
-
-    return [paths objectAtIndex:0];
-}
-
-+ (NSString *)getDirectoryReaderMetadata
-{
-    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
-
-    return [NSString stringWithFormat:@"%@/Reader Metadata", [paths objectAtIndex:0]];
-}
-
-// Return the path of directory Audio
-+ (NSString *)getDirectoryAudio
-{
-    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
-
-    return [NSString stringWithFormat:@"%@/%@", [paths objectAtIndex:0], @"audio"];
-}
-
-// Return the path of directory Cetificates
-+ (NSString *)getDirectoryCerificates
-{
-    NSString *path = [[[CCUtility getDirectoryGroup] URLByAppendingPathComponent:NCGlobal.shared.appCertificates] path];
-
-    if (![[NSFileManager defaultManager] fileExistsAtPath:path])
-        [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
-
-    return path;
-}
-
-+ (NSString *)getDirectoryUserData
-{
-    NSString *path = [[[CCUtility getDirectoryGroup] URLByAppendingPathComponent:NCGlobal.shared.appUserData] path];
-
-    if (![[NSFileManager defaultManager] fileExistsAtPath:path])
-        [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
-
-    return path;
-}
-
-+ (NSString *)getDirectoryProviderStorage
-{
-    NSString *path = [[[CCUtility getDirectoryGroup] URLByAppendingPathComponent:NCGlobal.shared.directoryProviderStorage] path];
-
-    if (![[NSFileManager defaultManager] fileExistsAtPath:path])
-        [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
-
-    return path;
-}
-
-+ (NSString *)getDirectoryProviderStorageOcId:(NSString *)ocId
-{
-    NSString *path = [NSString stringWithFormat:@"%@/%@", [self getDirectoryProviderStorage], ocId];
-
-    if (![[NSFileManager defaultManager] fileExistsAtPath:path])
-        [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
-
-    return path;
-}
-
-+ (NSString *)getDirectoryProviderStorageOcId:(NSString *)ocId fileNameView:(NSString *)fileNameView
-{
-    NSString *fileNamePath = [NSString stringWithFormat:@"%@/%@", [self getDirectoryProviderStorageOcId:ocId], fileNameView];
-
-    // if do not exists create file 0 length
-    // causes files with lenth 0 to never be downloaded, because already exist
-    // also makes it impossible to delete any file with length 0 (from cache)
-    if ([[NSFileManager defaultManager] fileExistsAtPath:fileNamePath] == NO) {
-        [[NSFileManager defaultManager] createFileAtPath:fileNamePath contents:nil attributes:nil];
-    }
-
-    return fileNamePath;
-}
-
-+ (NSString *)getDirectoryProviderStorageIconOcId:(NSString *)ocId etag:(NSString *)etag
-{
-    return [NSString stringWithFormat:@"%@/%@.small.%@", [self getDirectoryProviderStorageOcId:ocId], etag, [NCGlobal shared].extensionPreview];
-}
-
-+ (NSString *)getDirectoryProviderStoragePreviewOcId:(NSString *)ocId etag:(NSString *)etag
-{
-    return [NSString stringWithFormat:@"%@/%@.preview.%@", [self getDirectoryProviderStorageOcId:ocId], etag, [NCGlobal shared].extensionPreview];
-}
-
-+ (BOOL)fileProviderStorageExists:(tableMetadata *)metadata
-{
-    NSString *fileNameViewPath = [self getDirectoryProviderStorageOcId:metadata.ocId fileNameView:metadata.fileNameView];
-    NSString *fileNamePath = [self getDirectoryProviderStorageOcId:metadata.ocId fileNameView:metadata.fileName];
-
-    unsigned long long fileNameViewSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:fileNameViewPath error:nil] fileSize];
-    unsigned long long fileNameSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:fileNamePath error:nil] fileSize];
-
-    if (metadata.isDirectoryE2EE == true) {
-        if ((fileNameSize == metadata.size || fileNameViewSize == metadata.size) && fileNameViewSize > 0) {
-            return true;
-        } else {
-            return false;
-        }
-    } else {
-        return fileNameViewSize == metadata.size;
-    }
-}
-
-+ (int64_t)fileProviderStorageSize:(NSString *)ocId fileNameView:(NSString *)fileNameView
-{
-    NSString *fileNamePath = [self getDirectoryProviderStorageOcId:ocId fileNameView:fileNameView];
-
-    int64_t fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:fileNamePath error:nil] fileSize];
-
-    return fileSize;
-}
-
-+ (BOOL)fileProviderStoragePreviewIconExists:(NSString *)ocId etag:(NSString *)etag
-{
-    NSString *fileNamePathPreview = [self getDirectoryProviderStoragePreviewOcId:ocId etag:etag];
-    NSString *fileNamePathIcon = [self getDirectoryProviderStorageIconOcId:ocId etag:etag];
-
-    unsigned long long fileSizePreview = [[[NSFileManager defaultManager] attributesOfItemAtPath:fileNamePathPreview error:nil] fileSize];
-    unsigned long long fileSizeIcon = [[[NSFileManager defaultManager] attributesOfItemAtPath:fileNamePathIcon error:nil] fileSize];
-
-    if (fileSizePreview > 0 && fileSizeIcon > 0) return true;
-    else return false;
-}
-
-+ (void)removeGroupApplicationSupport
-{
-    NSURL *dirGroup = [CCUtility getDirectoryGroup];
-    NSString *path = [[dirGroup URLByAppendingPathComponent:NCGlobal.shared.appApplicationSupport] path];
-
-    [[NSFileManager defaultManager] removeItemAtPath:path error:nil];
-}
-
-+ (void)removeGroupLibraryDirectory
-{
-    [[NSFileManager defaultManager] removeItemAtPath:[CCUtility getDirectoryScan] error:nil];
-    [[NSFileManager defaultManager] removeItemAtPath:[CCUtility getDirectoryUserData] error:nil];
-}
-
-+ (void)removeGroupDirectoryProviderStorage
-{
-    [[NSFileManager defaultManager] removeItemAtPath:[CCUtility getDirectoryProviderStorage] error:nil];
-}
-
-+ (void)removeDocumentsDirectory
-{
-    [[NSFileManager defaultManager] removeItemAtPath:[CCUtility getDirectoryDocuments] error:nil];
-}
-
-+ (void)removeTemporaryDirectory
-{
-    [[NSFileManager defaultManager] removeItemAtPath:NSTemporaryDirectory() error:nil];
-}
-
-+ (void)emptyTemporaryDirectory
-{
-    NSArray* tmpDirectory = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:NSTemporaryDirectory() error:NULL];
-    for (NSString *file in tmpDirectory) {
-        [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@%@", NSTemporaryDirectory(), file] error:NULL];
-    }
-}
-
 + (NSString *)getTitleSectionDate:(NSDate *)date
 {
     NSString *title;
@@ -570,15 +330,6 @@
     return returnFileUTI;
 }
 
-+ (NSString *)getDirectoryScan
-{
-    NSString *path = [[[CCUtility getDirectoryGroup] URLByAppendingPathComponent:NCGlobal.shared.appScan] path];
-
-    if (![[NSFileManager defaultManager] fileExistsAtPath:path])
-        [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
-
-    return path;
-}
 
 #pragma --------------------------------------------------------------------------------------------
 #pragma mark ===== Share Permissions =====

+ 5 - 5
iOSClient/Utility/NCUtility.swift

@@ -211,13 +211,13 @@ class NCUtility: NSObject {
 
         NCManageDatabase.shared.clearDatabase(account: nil, removeAccount: true)
 
-        CCUtility.removeGroupDirectoryProviderStorage()
-        CCUtility.removeGroupLibraryDirectory()
+        NCUtilityFileSystem.shared.removeGroupDirectoryProviderStorage()
+        NCUtilityFileSystem.shared.removeGroupLibraryDirectory()
 
-        CCUtility.removeDocumentsDirectory()
-        CCUtility.removeTemporaryDirectory()
+        NCUtilityFileSystem.shared.removeDocumentsDirectory()
+        NCUtilityFileSystem.shared.removeTemporaryDirectory()
 
-        CCUtility.createDirectoryStandard()
+        NCUtilityFileSystem.shared.createDirectoryStandard()
 
         NCKeychain().removeAll()
     }

+ 64 - 8
iOSClient/Utility/NCUtilityFileSystem.swift

@@ -64,6 +64,17 @@ class NCUtilityFileSystem: NSObject {
         return path
     }
 
+    var directoryScan: String {
+        guard let directoryGroup = fileManager.containerURL(forSecurityApplicationGroupIdentifier: NCBrandOptions.shared.capabilitiesGroups) else { return "" }
+        let path = directoryGroup.appendingPathComponent(NCGlobal.shared.appScan).path
+        if !fileManager.fileExists(atPath: path) {
+            do {
+                try fileManager.createDirectory(atPath: path, withIntermediateDirectories: true)
+            } catch { print("Error: \(error)") }
+        }
+        return path
+    }
+
     @objc var directoryProviderStorage: String {
         guard let directoryGroup = fileManager.containerURL(forSecurityApplicationGroupIdentifier: NCBrandOptions.shared.capabilitiesGroups) else { return "" }
         let path = directoryGroup.appendingPathComponent(NCGlobal.shared.directoryProviderStorage).path
@@ -86,21 +97,19 @@ class NCUtilityFileSystem: NSObject {
     }
 
     @objc func getDirectoryProviderStorageOcId(_ ocId: String, fileNameView: String) -> String {
-        let path = directoryProviderStorage + "/" + ocId + "/" + fileNameView
+        let path = getDirectoryProviderStorageOcId(ocId) + "/" + fileNameView
         if !fileManager.fileExists(atPath: path) {
-            do {
-                try fileManager.createDirectory(atPath: path, withIntermediateDirectories: true)
-            } catch { print("Error: \(error)") }
+            fileManager.createFile(atPath: path, contents: nil)
         }
         return path
     }
 
     func getDirectoryProviderStorageIconOcId(_ ocId: String, etag: String) -> String {
-        return directoryProviderStorage + "/" + ocId + "/" + etag + ".small." + NCGlobal.shared.extensionPreview
+        return getDirectoryProviderStorageOcId(ocId) + "/" + etag + ".small." + NCGlobal.shared.extensionPreview
     }
 
     func getDirectoryProviderStoragePreviewOcId(_ ocId: String, etag: String) -> String {
-        return directoryProviderStorage + "/" + ocId + "/" + etag + ".preview." + NCGlobal.shared.extensionPreview
+        return getDirectoryProviderStorageOcId(ocId) + "/" + etag + ".preview." + NCGlobal.shared.extensionPreview
     }
 
     func fileProviderStorageExists(_ metadata: tableMetadata) -> Bool {
@@ -151,9 +160,56 @@ class NCUtilityFileSystem: NSObject {
         return false
     }
 
-    func createDirectoryStandard() {
+    @objc func createDirectoryStandard() {
+        guard let directoryGroup = fileManager.containerURL(forSecurityApplicationGroupIdentifier: NCBrandOptions.shared.capabilitiesGroups)?.path else { return }
+        if !fileManager.fileExists(atPath: directoryDocuments) { try? fileManager.createDirectory(atPath: directoryDocuments, withIntermediateDirectories: true) }
+        let appDatabaseNextcloud = directoryGroup + "/" + NCGlobal.shared.appDatabaseNextcloud
+        if !fileManager.fileExists(atPath: appDatabaseNextcloud) { try? fileManager.createDirectory(atPath: appDatabaseNextcloud, withIntermediateDirectories: true) }
+        if !fileManager.fileExists(atPath: directoryUserData) { try? fileManager.createDirectory(atPath: directoryUserData, withIntermediateDirectories: true) }
+        if !fileManager.fileExists(atPath: directoryProviderStorage) { try? fileManager.createDirectory(atPath: directoryProviderStorage, withIntermediateDirectories: true) }
+        let appScan = directoryGroup + "/" + NCGlobal.shared.appScan
+        if !fileManager.fileExists(atPath: appScan) { try? fileManager.createDirectory(atPath: appScan, withIntermediateDirectories: true) }
+        if !fileManager.fileExists(atPath: NSTemporaryDirectory()) { try? fileManager.createDirectory(atPath: NSTemporaryDirectory(), withIntermediateDirectories: true) }
+        // Directory Excluded From Backup
+        if let url = NSURL(string: directoryDocuments) {
+            try? url.setResourceValue(true, forKey: URLResourceKey.isExcludedFromBackupKey)
+        }
+        if let url = NSURL(string: directoryGroup) {
+            try? url.setResourceValue(true, forKey: URLResourceKey.isExcludedFromBackupKey)
+        }
+    }
+
+    @objc func removeGroupApplicationSupport() {
+        let path = directoryGroup + "/" + NCGlobal.shared.appApplicationSupport
+        try? fileManager.removeItem(atPath: path)
+    }
+
+    @objc func removeGroupLibraryDirectory() {
+        try? fileManager.removeItem(atPath: directoryScan)
+        try? fileManager.removeItem(atPath: directoryUserData)
+    }
+
+    @objc func removeGroupDirectoryProviderStorage() {
+        try? fileManager.removeItem(atPath: directoryProviderStorage)
+    }
+
+    @objc func removeDocumentsDirectory() {
+        try? fileManager.removeItem(atPath: directoryDocuments)
+    }
+
+    @objc func removeTemporaryDirectory() {
+        try? fileManager.removeItem(atPath: NSTemporaryDirectory())
+    }
 
-        guard let directoryGroup = fileManager.containerURL(forSecurityApplicationGroupIdentifier: NCBrandOptions.shared.capabilitiesGroups) else { return }
+    @objc func emptyTemporaryDirectory() {
+        do {
+            let files = try fileManager.contentsOfDirectory(atPath: NSTemporaryDirectory())
+            for file in files {
+                do {
+                    try fileManager.removeItem(atPath: NSTemporaryDirectory() + "/" + file)
+                } catch { print("Error: \(error)") }
+            }
+        } catch { print("Error: \(error)") }
     }
 
     // MARK: -