Browse Source

empty Trash API

Marino Faggiana 6 years ago
parent
commit
a4ca2f4485

+ 12 - 2
iOSClient/Database/NCManageDatabase.swift

@@ -2573,17 +2573,27 @@ class NCManageDatabase: NSObject {
         }
     }
     
-    @objc func deleteTrash(fileID: String) {
+    @objc func deleteTrash(fileID: String?) {
         
         guard let tableAccount = self.getAccountActive() else {
             return
         }
         
         let realm = try! Realm()
+        var filter = ""
         
         realm.beginWrite()
         
-        guard let result = realm.objects(tableTrash.self).filter("account = %@ AND fileID = %@", tableAccount.account, fileID).first else {
+        if fileID != nil {
+            
+            filter = "account =" + tableAccount.account
+            
+        } else {
+            
+            filter = "account =" + tableAccount.account + " AND fileID = " + fileID!
+        }
+        
+        guard let result = realm.objects(tableTrash.self).filter(filter).first else {
             realm.cancelWrite()
             return
         }

+ 2 - 0
iOSClient/Networking/OCNetworking.h

@@ -85,6 +85,8 @@
 
 - (void)listingTrash:(NSString *)serverUrl path:(NSString *)path account:(NSString *)account success:(void(^)(NSArray *items))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;
 
+- (void)emptyTrash:(void (^)(NSString *message, NSInteger errorCode))completion;
+
 @end
 
 @protocol OCNetworkingDelegate <NSObject>

+ 6 - 3
iOSClient/Networking/OCNetworking.m

@@ -2476,16 +2476,19 @@
     }];
 }
 
-- (void)emptyTrash:(NSString *)path account:(NSString *)account success:(void (^)(void))success failure:(void (^)(NSString *message, NSInteger errorCode))failure
+
+- (void)emptyTrash:(void (^)(NSString *message, NSInteger errorCode))completion
 {
     OCCommunication *communication = [CCNetworking sharedNetworking].sharedOCCommunication;
     
     [communication setCredentialsWithUser:_activeUser andUserID:_activeUserID andPassword:_activePassword];
     [communication setUserAgent:[CCUtility getUserAgent]];
     
+    NSString* path = [NSString stringWithFormat:@"%@/trashbin/%@/trash", _activeUrl, _activeUserID];
+    
     [communication emptyTrash:path onCommunication:communication successRequest:^(NSHTTPURLResponse *response, NSString *redirectedServer) {
         
-        success();
+        completion(nil, 0);
         
     } failureRequest:^(NSHTTPURLResponse *response, NSError *error, NSString *redirectedServer) {
         
@@ -2504,7 +2507,7 @@
         // Activity
         [[NCManageDatabase sharedInstance] addActivityClient:_activeUrl fileID:@"" action:k_activityDebugActionUnsubscribingServerPush selector:@"" note:[error.userInfo valueForKey:@"NSLocalizedDescription"] type:k_activityTypeFailure verbose:k_activityVerboseHigh activeUrl:_activeUrl];
         
-        failure(message, errorCode);
+        completion(message, errorCode);
     }];
 }
 

+ 12 - 1
iOSClient/Trash/NCTrash.swift

@@ -503,7 +503,18 @@ class NCTrash: UIViewController ,UICollectionViewDataSource, UICollectionViewDel
         
         let ocNetworking = OCnetworking.init(delegate: self, metadataNet: nil, withUser: appDelegate.activeUser, withUserID: appDelegate.activeUserID, withPassword: appDelegate.activePassword, withUrl: appDelegate.activeUrl)
         
-        
+        ocNetworking?.emptyTrash({ (message, errorCode) in
+            
+            if errorCode == 0 {
+                
+                NCManageDatabase.sharedInstance.deleteTrash(fileID: nil)
+                
+                self.loadDatasource()
+
+            } else {
+                self.appDelegate.messageNotification("_error_", description: message, visible: true, delay: TimeInterval(k_dismissAfterSecond), type: TWMessageBarMessageType.error, errorCode: errorCode)
+            }
+        });
     }
     
     func deleteItem(with fileID: String) {