Browse Source

New Reload data source

Marino Faggiana 6 years ago
parent
commit
12d0c774f9

+ 6 - 1
iOSClient/CCGlobal.h

@@ -297,9 +297,14 @@
 // Flow Version
 #define k_flow_version_available                        12
 
-//
+// Directory File Provider Storage
 #define k_DirectoryProviderStorage                      @"File Provider Storage"
 
+// Cell Reload Data Source
+#define k_action_NULL                                   0
+#define k_action_ADD                                    1
+#define k_action_MOD                                    2
+#define k_action_DEL                                    3
 
 // -----------------------------------------------------------------------------------------------------------
 // -----------------------------------------------------------------------------------------------------------

+ 1 - 1
iOSClient/Create/CCCreateCloud.swift

@@ -631,7 +631,7 @@ class CreateFormUploadFile: XLFormViewController, CCMoveDelegate {
                 _ = NCManageDatabase.sharedInstance.addMetadata(metadataForUpload)
                 self.appDelegate.perform(#selector(self.appDelegate.loadAutoDownloadUpload), on: Thread.main, with: nil, waitUntilDone: true)
                 
-                self.appDelegate.activeMain.reloadDatasource(self.serverUrl)
+                NCMainCommon.sharedInstance.reloadDatasource(ServerUrl: self.serverUrl, fileID: fileID, action: Int32(k_action_ADD))
                 
             } else {
                 

+ 1 - 1
iOSClient/Favorites/CCFavorites.h

@@ -46,7 +46,7 @@
 
 @property (nonatomic, weak) CCDetail *detailViewController;
 
-- (void)reloadDatasource;
+- (void)reloadDatasource:(NSString *)fileID action:(NSInteger)action;
 - (void)listingFavorites;
 - (void)addFavoriteFolder:(NSString *)serverUrl;
 

+ 9 - 14
iOSClient/Favorites/CCFavorites.m

@@ -99,7 +99,7 @@
     // Plus Button
     [appDelegate plusButtonVisibile:true];
     
-    [self reloadDatasource];
+    [self reloadDatasource:nil action:k_action_NULL];
 }
 
 // E' arrivato
@@ -194,7 +194,7 @@
     [ocNetworking settingFavorite:fileNameServerUrl favorite:favorite completion:^(NSString *message, NSInteger errorCode) {
         if (errorCode == 0) {
             [[NCManageDatabase sharedInstance] setMetadataFavoriteWithFileID:metadata.fileID favorite:favorite];
-            [self reloadDatasource];
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:metadata.fileID action:k_action_MOD];
         } else {
             if (errorCode == kOCErrorServerUnauthorized)
                 [appDelegate openLoginView:self loginType:k_login_Modify_Password selector:k_intro_login];
@@ -292,8 +292,8 @@
 
 - (void)downloadStart:(NSString *)fileID account:(NSString *)account task:(NSURLSessionDownloadTask *)task serverUrl:(NSString *)serverUrl
 {
-    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl];
-        
+    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:fileID action:k_action_MOD];
+    
     [appDelegate updateApplicationIconBadgeNumber];
 }
 
@@ -326,7 +326,7 @@
         }
     }
     
-    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl];
+    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:fileID action:k_action_MOD];
 }
 
 - (void)openIn:(tableMetadata *)metadata
@@ -446,16 +446,16 @@
 - (void)actionDelete:(NSIndexPath *)indexPath
 {
     tableMetadata *metadata = [[NCMainCommon sharedInstance] getMetadataFromSectionDataSourceIndexPath:indexPath sectionDataSource:sectionDataSource];
+    NSString *serverUrl = [[NCManageDatabase sharedInstance] getServerUrl:metadata.directoryID];
     tableLocalFile *localFile = [[NCManageDatabase sharedInstance] getTableLocalFileWithPredicate:[NSPredicate predicateWithFormat:@"fileID == %@", metadata.fileID]];
     UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
     
     [alertController addAction: [UIAlertAction actionWithTitle:NSLocalizedString(@"_delete_", nil) style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
         
-        NSString *serverUrl = [[NCManageDatabase sharedInstance] getServerUrl:metadata.directoryID];
         tableDirectory *tableDirectory = [[NCManageDatabase sharedInstance] getTableDirectoryWithPredicate:[NSPredicate predicateWithFormat:@"account == %@ AND e2eEncrypted == 1 AND serverUrl == %@", appDelegate.activeAccount, serverUrl]];
         
         [[NCMainCommon sharedInstance ] deleteFileWithMetadatas:[[NSArray alloc] initWithObjects:metadata, nil] e2ee:tableDirectory.e2eEncrypted serverUrl:serverUrl folderFileID:tableDirectory.fileID completion:^(NSInteger errorCode, NSString *message) {
-            [self reloadDatasource];
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:metadata.fileID action:k_action_DEL];
         }];
     }]];
     
@@ -463,7 +463,7 @@
         [alertController addAction: [UIAlertAction actionWithTitle:NSLocalizedString(@"_remove_local_file_", nil) style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
             [[NCManageDatabase sharedInstance] deleteLocalFileWithPredicate:[NSPredicate predicateWithFormat:@"fileID == %@", metadata.fileID]];
             [[NSFileManager defaultManager] removeItemAtPath:[CCUtility getDirectoryProviderStorageFileID:metadata.fileID] error:nil];
-            [self reloadDatasource];
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:metadata.fileID action:k_action_MOD];
         }]];
     }
     
@@ -584,12 +584,7 @@
     return metadata;
 }
 
-- (void)readFolder:(NSString *)serverUrl
-{
-    [self reloadDatasource];
-}
-
-- (void)reloadDatasource
+- (void)reloadDatasource:(NSString *)fileID action:(NSInteger)action
 {
     NSArray *recordsTableMetadata ;
     

+ 4 - 4
iOSClient/Main/CCDetail.m

@@ -419,8 +419,8 @@
             [[NCManageDatabase sharedInstance] addLocalFileWithMetadata:self.metadataDetail];
             [KTVHTTPCache cacheDeleteCacheWithURL:videoURL];
             
-            // reload Main
-            [appDelegate.activeMain reloadDatasource];
+            // reload Data Source
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:[[NCManageDatabase sharedInstance] getServerUrl:self.metadataDetail.directoryID] fileID:self.metadataDetail.fileID action:k_action_MOD];
             
             // Enabled Button Action (the file is in local)
             buttonAction.enabled = true;
@@ -1058,8 +1058,8 @@
         
         if (errorCode == 0) {
             
-            // reload Main
-            [appDelegate.activeMain reloadDatasource];
+            // reload data source
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:metadata.fileID action:k_action_DEL];
             
             // Not image
             if ([self.metadataDetail.typeFile isEqualToString: k_metadataTypeFile_image] == NO) {

+ 1 - 2
iOSClient/Main/CCMain.h

@@ -77,8 +77,7 @@
 
 - (void)uploadFileAsset:(NSMutableArray *)assets serverUrl:(NSString *)serverUrl useSubFolder:(BOOL)useSubFolder session:(NSString *)session;
 
-- (void)reloadDatasource;
-- (void)reloadDatasource:(NSString *)serverUrl;
+- (void)reloadDatasource:(NSString *)serverUrl fileID:(NSString *)fileID action:(NSInteger)action;
 
 - (void)openWindowShare:(tableMetadata *)metadata;
 - (void)clearDateReadDataSource:(NSNotification *)notification;

+ 34 - 41
iOSClient/Main/CCMain.m

@@ -399,7 +399,7 @@
         [[NCService sharedInstance] startRequestServicesServer];
         
         // Clear datasorce
-        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:nil];
+        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:_serverUrl fileID:nil action:k_action_NULL];
         
         // Read this folder
         [self readFileReloadFolder];
@@ -407,7 +407,7 @@
     } else {
         
         // reload datasource
-        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:_serverUrl];
+        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:_serverUrl fileID:nil action:k_action_NULL];
     }
 }
 
@@ -796,7 +796,7 @@
 
 -(void)dismissFormUploadAssets
 {
-    [self reloadDatasource];
+    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
 }
 
 - (void)openAssetsPickerController
@@ -1098,7 +1098,7 @@
 
 - (void)downloadStart:(NSString *)fileID account:(NSString *)account task:(NSURLSessionDownloadTask *)task serverUrl:(NSString *)serverUrl
 {
-    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl];
+    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:fileID action:k_action_MOD];
     
     [appDelegate updateApplicationIconBadgeNumber];
 }
@@ -1113,13 +1113,13 @@
         
         // Synchronized
         if ([selector isEqualToString:selectorDownloadSynchronize]) {
-            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl];
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:fileID action:k_action_MOD];
         }
         
         // open View File
         if ([selector isEqualToString:selectorLoadFileView] && [[UIApplication sharedApplication] applicationState] == UIApplicationStateActive) {
             
-            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl];
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:fileID action:k_action_MOD];
 
             if ([metadata.typeFile isEqualToString: k_metadataTypeFile_compress] || [metadata.typeFile isEqualToString: k_metadataTypeFile_unknown]) {
                 
@@ -1137,7 +1137,7 @@
         // Open with...
         if ([selector isEqualToString:selectorOpenIn] && [[UIApplication sharedApplication] applicationState] == UIApplicationStateActive) {
 
-            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl];
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:fileID action:k_action_MOD];
 
             NSURL *url = [NSURL fileURLWithPath:[CCUtility getDirectoryProviderStorageFileID:metadata.fileID fileNameView:metadata.fileNameView]];
             
@@ -1189,13 +1189,13 @@
                 [self presentViewController:alertController animated:YES completion:nil];
             }
             
-            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl];
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:fileID action:k_action_MOD];
         }
         
         // Copy File
         if ([selector isEqualToString:selectorLoadCopy]) {
             
-            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl];
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:fileID action:k_action_MOD];
 
             [self copyFileToPasteboard:metadata];
         }
@@ -1211,7 +1211,7 @@
             if (appDelegate.activeMedia)
                 [appDelegate.activeMedia downloadFileSuccessFailure:metadata.fileName fileID:metadata.fileID serverUrl:serverUrl selector:selector errorMessage:errorMessage errorCode:errorCode];
             
-            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl];
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:fileID action:k_action_MOD];
         }
         
         // Auto Download Upload
@@ -1244,7 +1244,7 @@
             
         }
         
-        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl];
+        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:fileID action:k_action_MOD];
     }
 }
 
@@ -1290,7 +1290,7 @@
 
 - (void)uploadStart:(NSString *)fileID account:(NSString *)account task:(NSURLSessionUploadTask *)task serverUrl:(NSString *)serverUrl
 {
-    [self reloadDatasource:serverUrl];
+    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:fileID action:k_action_ADD];
     
     [appDelegate updateApplicationIconBadgeNumber];
 }
@@ -1311,7 +1311,7 @@
             [appDelegate messageNotification:@"_upload_file_" description:errorMessage visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
     }
     
-    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl];
+    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:fileID action:k_action_DEL];
 }
 
 //
@@ -1452,7 +1452,7 @@
         return;
     
     // Load Datasource
-    [self reloadDatasource];
+    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
     
     CCMetadataNet *metadataNet = [[CCMetadataNet alloc] initWithAccount:appDelegate.activeAccount];
 
@@ -1497,7 +1497,7 @@
             
             [appDelegate messageNotification:@"_error_" description:message visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:errorCode];
             
-            [self reloadDatasource:metadataNet.serverUrl];
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:metadataNet.serverUrl fileID:nil action:k_action_NULL];
         }
         
         return;
@@ -1538,14 +1538,14 @@
         if (metadatasToInsertInDB)
             _searchResultMetadatas = [[NSMutableArray alloc] initWithArray:metadatasToInsertInDB];
         
-        [self reloadDatasource:metadataNet.serverUrl];
+        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:metadataNet.serverUrl fileID:nil action:k_action_NULL];
     }
     
     // this is the same directory
     if ([metadataNet.serverUrl isEqualToString:_serverUrl] && !_isSearchMode) {
         
         // reload
-        [self reloadDatasource:metadataNet.serverUrl];
+        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:metadataNet.serverUrl fileID:nil action:k_action_NULL];
     
         // Enable change user
         [_ImageTitleHomeCryptoCloud setUserInteractionEnabled:YES];
@@ -1570,7 +1570,7 @@
                         if ([[NCEndToEndMetadata sharedInstance] decoderMetadata:metadata privateKey:[CCUtility getEndToEndPrivateKey:appDelegate.activeAccount] serverUrl:self.serverUrl account:appDelegate.activeAccount url:appDelegate.activeUrl] == false)
                             [appDelegate messageNotification:@"_error_e2ee_" description:@"_e2e_error_decode_metadata_" visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:error.code];
                         else
-                            [self reloadDatasource];
+                            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
                     }
                 });
             });
@@ -1715,7 +1715,7 @@
     
     if (_searchResultMetadatas.count == 0 && fileName.length == 0) {
 
-        [self reloadDatasource];
+        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
     }
 }
 
@@ -1761,7 +1761,7 @@
         _dateReadDataSource = nil;
         _searchResultMetadatas = [NSMutableArray new];
         
-        [self reloadDatasource];
+        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
     }
     
     //[self setNeedsStatusBarAppearanceUpdate];
@@ -1793,7 +1793,7 @@
         if (_isSearchMode)
             [self readFolder:self.serverUrl];
         else
-            [self reloadDatasource:self.serverUrl];
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
     }];
     
     // End Select Table View
@@ -1806,7 +1806,7 @@
 
 - (void)renameSuccess:(CCMetadataNet *)metadataNet
 {
-    [self reloadDatasource:metadataNet.serverUrl];
+    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:metadataNet.serverUrl fileID:metadataNet.fileID action:k_action_MOD];
 }
 
 - (void)renameFile:(NSArray *)arguments
@@ -1852,7 +1852,7 @@
                 }
             }
             dispatch_async(dispatch_get_main_queue(), ^{
-                [self reloadDatasource];
+                [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
             });
         });
         
@@ -1879,7 +1879,7 @@
         if (_isSearchMode)
             [self readFolder:metadataNet.serverUrl];
         else
-            [self reloadDatasource];
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
     }
 }
 
@@ -1933,7 +1933,7 @@
             if (_isSearchMode)
                 [self readFolder:metadataNet.serverUrl];
             else
-                [self reloadDatasource];
+                [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
         }
     }
 }
@@ -1995,8 +1995,7 @@
 // DELEGATE : Move
 - (void)dismissMove
 {
-    [self reloadDatasource];
-
+    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
 }
 
 // DELEGATE : Move
@@ -2064,7 +2063,7 @@
     (void)[[NCManageDatabase sharedInstance] addMetadata:metadata];
     
     [[NCManageDatabase sharedInstance] clearDateReadWithServerUrl:serverUrl directoryID:nil];
-    [self reloadDatasource];
+    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
     
     // Creeate folder Networking
     OCnetworking *ocNetworking = [[OCnetworking alloc] initWithDelegate:nil metadataNet:nil withUser:appDelegate.activeUser withUserID:appDelegate.activeUserID withPassword:appDelegate.activePassword withUrl:appDelegate.activeUrl];
@@ -2104,7 +2103,7 @@
         // Delete Temp Dir
         [[NCManageDatabase sharedInstance] deleteMetadataWithPredicate:[NSPredicate predicateWithFormat:@"fileID == %@", fileIDTemp] clearDateReadDirectoryID:nil];
         
-        [self reloadDatasource];
+        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
         
         // We are in directory fail ?
         CCMain *vc = [appDelegate.listMainVC objectForKey:[CCUtility stringAppendServerUrl:_serverUrl addFileName:fileNameFolder]];
@@ -2432,7 +2431,7 @@
             if (_isSearchMode)
                 [self readFolder:self.serverUrl];
             else
-                [self reloadDatasource:self.serverUrl];
+                [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:metadata.fileID action:k_action_MOD];
             
             if (metadata.directory && favorite) {
                 NSString *dir = [CCUtility stringAppendServerUrl:self.serverUrl addFileName:metadata.fileName];
@@ -3283,7 +3282,7 @@
     
     [appDelegate performSelectorOnMainThread:@selector(loadAutoDownloadUpload) withObject:nil waitUntilDone:YES];
 
-    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:nil];
+    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
 }
 
 #pragma --------------------------------------------------------------------------------------------
@@ -3500,8 +3499,7 @@
         [alertController addAction: [UIAlertAction actionWithTitle:NSLocalizedString(@"_remove_local_file_", nil) style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
             [[NCManageDatabase sharedInstance] deleteLocalFileWithPredicate:[NSPredicate predicateWithFormat:@"fileID == %@", metadata.fileID]];
             [[NSFileManager defaultManager] removeItemAtPath:[CCUtility getDirectoryProviderStorageFileID:metadata.fileID] error:nil];
-            [self reloadDatasource];
-            
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
         }]];
     }
     
@@ -3867,15 +3865,10 @@
 - (void)clearDateReadDataSource:(NSNotification *)notification
 {
     _dateReadDataSource = Nil;
-    [self reloadDatasource];
-}
-
-- (void)reloadDatasource
-{
-    [self reloadDatasource:_serverUrl];
+    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:self.serverUrl fileID:nil action:k_action_NULL];
 }
 
-- (void)reloadDatasource:(NSString *)serverUrl
+- (void)reloadDatasource:(NSString *)serverUrl fileID:(NSString *)fileID action:(NSInteger)action
 {
     // test
     if (appDelegate.activeAccount.length == 0 || serverUrl.length == 0 || serverUrl == nil)
@@ -3919,7 +3912,7 @@
         
         CCMain *main = [appDelegate.listMainVC objectForKey:serverUrl];
         if (main) {
-            [main reloadDatasource];
+            [self reloadDatasource:self.serverUrl fileID:nil action:k_action_NULL];
         } else {
             [self tableViewReloadData];
         }

+ 22 - 14
iOSClient/Main/NCMainCommon.swift

@@ -73,6 +73,8 @@ class NCMainCommon: NSObject {
     
     @objc func cancelTransferMetadata(_ metadata: tableMetadata, reloadDatasource: Bool) {
         
+        var actionReloadDatasource = k_action_NULL
+        
         if metadata.session.count == 0 {
             return
         }
@@ -81,6 +83,10 @@ class NCMainCommon: NSObject {
             return
         }
         
+        guard let serverUrl = NCManageDatabase.sharedInstance.getServerUrl(metadata.directoryID) else {
+            return
+        }
+        
         // SESSION EXTENSION
         if metadata.session == k_download_session_extension || metadata.session == k_upload_session_extension {
             
@@ -91,11 +97,17 @@ class NCMainCommon: NSObject {
                 } catch { }
                 
                 NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "fileID == %@", metadata.fileID), clearDateReadDirectoryID: metadata.directoryID)
+                
+                actionReloadDatasource = k_action_DEL
+                
             } else {
+                
                 NCManageDatabase.sharedInstance.setMetadataSession("", sessionError: "", sessionSelector: "", sessionTaskIdentifier: Int(k_taskIdentifierDone), status: Int(k_metadataStatusNormal), predicate: NSPredicate(format: "fileID == %@", metadata.fileID))
+                
+                actionReloadDatasource = k_action_MOD
             }
             
-            self.reloadDatasource(ServerUrl: nil)
+            self.reloadDatasource(ServerUrl: serverUrl, fileID: metadata.fileID, action: actionReloadDatasource)
             
             return
         }
@@ -115,6 +127,7 @@ class NCMainCommon: NSObject {
                 if cancel == false {
                     NCManageDatabase.sharedInstance.setMetadataSession("", sessionError: "", sessionSelector: "", sessionTaskIdentifier: Int(k_taskIdentifierDone), status: Int(k_metadataStatusNormal), predicate: NSPredicate(format: "fileID == %@", metadata.fileID))
                 }
+                actionReloadDatasource = k_action_MOD
             }
             
             // UPLOAD
@@ -132,10 +145,11 @@ class NCMainCommon: NSObject {
                     catch { }
                     NCManageDatabase.sharedInstance.deleteMetadata(predicate: NSPredicate(format: "fileID == %@", metadata.fileID), clearDateReadDirectoryID: metadata.directoryID)
                 }
+                actionReloadDatasource = k_action_DEL
             }
             
             if cancel == false {
-                self.reloadDatasource(ServerUrl: nil)
+                self.reloadDatasource(ServerUrl: serverUrl, fileID: metadata.fileID, action: actionReloadDatasource)
             }
         }
     }
@@ -165,7 +179,7 @@ class NCMainCommon: NSObject {
             }
         }
         
-        self.reloadDatasource(ServerUrl: nil)
+        self.reloadDatasource(ServerUrl: nil, fileID: nil, action: k_action_NULL)
     }
     
     //MARK: -
@@ -473,21 +487,17 @@ class NCMainCommon: NSObject {
         return metadata
     }
     
-    @objc func reloadDatasource(ServerUrl: String?) {
+    @objc func reloadDatasource(ServerUrl: String?, fileID: String?, action: Int32) {
         
         DispatchQueue.main.async {
             if self.appDelegate.activeMain != nil {
-                if ServerUrl == nil {
-                    self.appDelegate.activeMain.reloadDatasource()
-                } else {
-                    self.appDelegate.activeMain.reloadDatasource(ServerUrl)
-                }
+                self.appDelegate.activeMain.reloadDatasource(ServerUrl, fileID: fileID, action: Int(action))
             }
             if self.appDelegate.activeFavorites != nil {
-                self.appDelegate.activeFavorites.reloadDatasource()
+                self.appDelegate.activeFavorites.reloadDatasource(fileID, action: Int(action))
             }
             if self.appDelegate.activeTransfers != nil {
-                self.appDelegate.activeTransfers.reloadDatasource()
+                self.appDelegate.activeTransfers.reloadDatasource(fileID, action: Int(action))
             }
         }
     }
@@ -585,9 +595,7 @@ class NCMainCommon: NSObject {
             })
         }
         
-        // reload for filesID
-        self.appDelegate.activeMain.reloadDatasource()
-        self.appDelegate.activeMedia.reloadDatasource()
+        self.reloadDatasource(ServerUrl: serverUrl, fileID: nil, action: k_action_NULL)
     }
 }
     

+ 1 - 1
iOSClient/Media/CCMedia.h

@@ -46,7 +46,7 @@
 
 - (void)downloadFileSuccessFailure:(NSString *)fileName fileID:(NSString *)fileID serverUrl:(NSString *)serverUrl selector:(NSString *)selector errorMessage:(NSString *)errorMessage errorCode:(NSInteger)errorCode;
 
-- (void)reloadDatasource;
+- (void)reloadDatasource:(NSString *)fileID action:(NSInteger)action;
 - (void)searchPhotoVideo;
 
 @end

+ 11 - 10
iOSClient/Media/CCMedia.m

@@ -122,7 +122,7 @@
     // Plus Button
     [appDelegate plusButtonVisibile:true];
 
-    [self reloadDatasource];
+    [self reloadDatasource:nil action:k_action_NULL];
 }
 
 - (void)viewSafeAreaInsetsDidChange
@@ -418,7 +418,7 @@
 - (void)deleteFile:(NSArray *)metadatas e2ee:(BOOL)e2ee
 {
     [[NCMainCommon sharedInstance ] deleteFileWithMetadatas:metadatas e2ee:false serverUrl:@"" folderFileID:@"" completion:^(NSInteger errorCode, NSString *message) {
-        [self reloadDatasource];
+        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:nil fileID:nil action:k_action_NULL];
     }];
     
     [self editingModeNO];
@@ -523,7 +523,7 @@
 - (void)buttonImageFilterYes
 {
     filterTypeFileImage = !filterTypeFileImage;
-    [self reloadDatasource];
+    [self reloadDatasource:nil action:k_action_NULL];
 }
 
 - (void)buttonImageFilterNo
@@ -532,7 +532,8 @@
         filterTypeFileVideo = NO;
     } else {
         filterTypeFileImage = !filterTypeFileImage;
-    }    [self reloadDatasource];
+    }
+    [self reloadDatasource:nil action:k_action_NULL];
 }
 
 - (void)buttonVideoFilterYes
@@ -542,13 +543,13 @@
     } else {
         filterTypeFileVideo = !filterTypeFileVideo;
     }
-    [self reloadDatasource];
+    [self reloadDatasource:nil action:k_action_NULL];
 }
 
 - (void)buttonVideoFilterNo
 {
     filterTypeFileVideo = !filterTypeFileVideo;
-    [self reloadDatasource];
+    [self reloadDatasource:nil action:k_action_NULL];
 }
 
 
@@ -562,7 +563,7 @@
     
     if (![metadataNet.account isEqualToString:appDelegate.activeAccount] || errorCode != 0) {
         
-        [self reloadDatasource];
+        [self reloadDatasource:nil action:k_action_NULL];
         
     } else {
     
@@ -574,7 +575,7 @@
             [[NCManageDatabase sharedInstance] createTablePhotos:metadatas];
 
             dispatch_async(dispatch_get_main_queue(), ^{
-                [self reloadDatasource];
+                [self reloadDatasource:nil action:k_action_NULL];
             });
             
             // Update date
@@ -609,7 +610,7 @@
             [[CCActions sharedInstance] search:startDirectory fileName:@"" etag:metadata.etag depth:@"infinity" date:[NSDate distantPast] contenType:@[@"image/%", @"video/%"] selector:selectorSearchContentType delegate:self];
             
         } else {
-            [self reloadDatasource];
+            [self reloadDatasource:nil action:k_action_NULL];
         }
         
     } failure:^(NSString *message, NSInteger errorCode) {
@@ -620,7 +621,7 @@
 #pragma mark ==== Datasource ====
 #pragma --------------------------------------------------------------------------------------------
 
-- (void)reloadDatasource
+- (void)reloadDatasource:(NSString *)fileID action:(NSInteger)action
 {
     // test
     if (appDelegate.activeAccount.length == 0) {

+ 0 - 2
iOSClient/Networking/CCNetworking.h

@@ -66,8 +66,6 @@
 
 @protocol CCNetworkingDelegate <NSObject>
 
-@optional - (void)reloadDatasource:(NSString *)serverUrl;
-
 @optional - (void)downloadStart:(NSString *)fileID account:(NSString *)account task:(NSURLSessionDownloadTask *)task serverUrl:(NSString *)serverUrl;
 @optional  - (void)downloadFileSuccessFailure:(NSString *)fileName fileID:(NSString *)fileID serverUrl:(NSString *)serverUrl selector:(NSString *)selector errorMessage:(NSString *)errorMessage errorCode:(NSInteger)errorCode;
 

+ 0 - 1
iOSClient/Share/CCShareOC.h

@@ -63,7 +63,6 @@
 - (void)unShare:(NSString *)share metadata:(tableMetadata *)metadata serverUrl:(NSString *)serverUrl;
 - (void)updateShare:(NSString *)share metadata:(tableMetadata *)metadata serverUrl:(NSString *)serverUrl password:(NSString *)password expirationTime:(NSString *)expirationTime permission:(NSInteger)permission;
 
-- (void)reloadDatasource:(NSString *)serverUrl;
 - (void)getUserAndGroup:(NSString *)find;
 - (void)shareUserAndGroup:(NSString *)user shareeType:(NSInteger)shareeType permission:(NSInteger)permission metadata:(tableMetadata *)metadata directoryID:(NSString *)directoryID serverUrl:(NSString *)serverUrl;
 

+ 1 - 1
iOSClient/Share/CCShareOC.m

@@ -455,7 +455,7 @@
     [self.tableView endEditing:YES];
     
     // reload delegate
-    [self.delegate reloadDatasource:[[NCManageDatabase sharedInstance] getServerUrl:_metadata.directoryID]];
+    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:[[NCManageDatabase sharedInstance] getServerUrl:self.metadata.directoryID] fileID:self.metadata.fileID action:k_action_MOD];
     
     [self dismissViewControllerAnimated:YES completion:nil];
 }

+ 5 - 5
iOSClient/Synchronize/CCSynchronize.m

@@ -92,7 +92,7 @@
         if (errorCode == 404) {
             
             [[NCManageDatabase sharedInstance] deleteDirectoryAndSubDirectoryWithServerUrl:metadataNet.serverUrl];
-            [appDelegate.activeMain reloadDatasource:metadataNet.serverUrl];
+            [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:metadataNet.serverUrl fileID:nil action:k_action_NULL];
         }
         
         return;
@@ -109,7 +109,7 @@
     // reload folder ../ *
     NSString *serverUrlParent = [[NCManageDatabase sharedInstance] getServerUrl:metadataFolder.directoryID];
     if (serverUrlParent) {
-        [appDelegate.activeMain reloadDatasource:serverUrlParent];
+        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrlParent fileID:nil action:k_action_NULL];
     }
     
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
@@ -160,7 +160,7 @@
         
         dispatch_async(dispatch_get_main_queue(), ^{
             if ([metadatasNotPresents count] > 0)
-                [appDelegate.activeMain reloadDatasource:metadataNet.serverUrl];
+                [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:metadataNet.serverUrl fileID:nil action:k_action_NULL];
         });
         
         // ----- Test : (MODIFY) -----
@@ -318,7 +318,7 @@
                 
                 NSString *serverUrl = [[NCManageDatabase sharedInstance] getServerUrl:metadataNet.directoryID];
                 if (serverUrl)
-                    [appDelegate.activeMain reloadDatasource:serverUrl];
+                    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:nil action:k_action_NULL];
             }
         }
     }
@@ -401,7 +401,7 @@
     [appDelegate performSelectorOnMainThread:@selector(loadAutoDownloadUpload) withObject:nil waitUntilDone:YES];
     
     dispatch_async(dispatch_get_main_queue(), ^{
-        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl];
+        [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrl fileID:nil action:k_action_NULL];
     });
 }
 

+ 1 - 2
iOSClient/Transfers/CCTransfers.h

@@ -28,6 +28,5 @@
 
 @property (nonatomic, weak) IBOutlet UITableView *tableView;
 
-- (void)reloadDatasource;
-
+- (void)reloadDatasource:(NSString *)fileID action:(NSInteger)action;
 @end

+ 12 - 7
iOSClient/Transfers/CCTransfers.m

@@ -80,7 +80,7 @@
     
     self.title = NSLocalizedString(@"_transfers_", nil);
     
-    [self reloadDatasource];
+    [self reloadDatasource:nil action:k_action_NULL];
 }
 
 // Apparirà
@@ -92,7 +92,7 @@
     [appDelegate aspectNavigationControllerBar:self.navigationController.navigationBar online:[appDelegate.reachability isReachable] hidden:NO];
     [appDelegate aspectTabBar:self.tabBarController.tabBar hidden:NO];
     
-    [self reloadDatasource];
+    [self reloadDatasource:nil action:k_action_NULL];
 }
 
 - (void)changeTheming
@@ -211,17 +211,22 @@
 #pragma mark - ==== Datasource ====
 #pragma --------------------------------------------------------------------------------------------
 
-- (void)reloadDatasource
+- (void)reloadDatasource:(NSString *)fileID action:(NSInteger)action
 {
     // test
     if (appDelegate.activeAccount.length == 0 || !self.view.window)
         return;
     
-    NSArray *recordsTableMetadata = [[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND ((session CONTAINS 'upload') OR (session CONTAINS 'download'))", appDelegate.activeAccount] sorted:@"sessionTaskIdentifier" ascending:NO];
-    
-    sectionDataSource  = [CCSectionMetadata creataDataSourseSectionMetadata:recordsTableMetadata listProgressMetadata:appDelegate.listProgressMetadata groupByField:@"session" filterFileID:appDelegate.filterFileID filterTypeFileImage:NO filterTypeFileVideo:NO activeAccount:appDelegate.activeAccount];
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
         
-    [self.tableView reloadData];
+        NSArray *recordsTableMetadata = [[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND ((session CONTAINS 'upload') OR (session CONTAINS 'download'))", appDelegate.activeAccount] sorted:@"sessionTaskIdentifier" ascending:NO];
+    
+        sectionDataSource  = [CCSectionMetadata creataDataSourseSectionMetadata:recordsTableMetadata listProgressMetadata:appDelegate.listProgressMetadata groupByField:@"session" filterFileID:appDelegate.filterFileID filterTypeFileImage:NO filterTypeFileVideo:NO activeAccount:appDelegate.activeAccount];
+    
+        dispatch_async(dispatch_get_main_queue(), ^{
+            [self.tableView reloadData];
+        });
+    });
 }
 
 #pragma --------------------------------------------------------------------------------------------

+ 1 - 1
iOSClient/UploadFromOtherUpp/CCUploadFromOtherUpp.m

@@ -195,7 +195,7 @@
     (void)[[NCManageDatabase sharedInstance] addMetadata:metadataForUpload];
     [appDelegate performSelectorOnMainThread:@selector(loadAutoDownloadUpload) withObject:nil waitUntilDone:YES];
     
-    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrlLocal];
+    [[NCMainCommon sharedInstance] reloadDatasourceWithServerUrl:serverUrlLocal fileID:metadataForUpload.fileID action:k_action_ADD];
     
     [self dismissViewControllerAnimated:YES completion:nil];
 }