Browse Source

Add / Modify listingFavorites

Marino Faggiana 6 years ago
parent
commit
9518101e4f
3 changed files with 92 additions and 76 deletions
  1. 1 0
      iOSClient/CCGlobal.h
  2. 1 0
      iOSClient/Networking/OCNetworking.h
  3. 90 76
      iOSClient/Networking/OCNetworking.m

+ 1 - 0
iOSClient/CCGlobal.h

@@ -265,6 +265,7 @@ extern NSString *const flowEndpoint;
 #define k_activityDebugActionUploadShare                @"Upload Share"
 #define k_activityDebugActionAutoUpload                 @"Auto Upload"
 #define k_activityDebugActionReadFolder                 @"Read Folder"
+#define k_activityDebugActionListingFavorites           @"Listing Favorites"
 #define k_activityDebugActionCreateFolder               @"Create Folder"
 #define k_activityDebugActionDeleteFileFolder           @"Delete File-Folder"
 #define k_activityDebugActionGetNotification            @"Get Notification Server"

+ 1 - 0
iOSClient/Networking/OCNetworking.h

@@ -52,6 +52,7 @@
 - (void)createFolder:(NSString *)fileName serverUrl:(NSString *)serverUrl account:(NSString *)account success:(void(^)(NSString *fileID, NSDate *date))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;
 - (void)moveFileOrFolder:(NSString *)fileName fileNameTo:(NSString *)fileNameTo success:(void (^)(void))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;
 - (void)settingFavorite:(NSString *)fileName favorite:(BOOL)favorite success:(void (^)(void))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;
+- (void)listingFavorites:(NSString *)serverUrl account:(NSString *)account success:(void(^)(NSArray *metadatas))success failure:(void (^)(NSString *message, NSInteger errorCode))failure;
 
 @end
 

+ 90 - 76
iOSClient/Networking/OCNetworking.m

@@ -799,6 +799,24 @@
 #pragma --------------------------------------------------------------------------------------------
 
 - (void)listingFavorites
+{
+    [self listingFavorites:_metadataNet.serverUrl account:_metadataNet.account success:^(NSArray *metadatas) {
+    
+        if ([self.delegate respondsToSelector:@selector(listingFavoritesSuccessFailure:metadatas:message:errorCode:)])
+            [self.delegate listingFavoritesSuccessFailure:_metadataNet metadatas:metadatas message:nil errorCode:0];
+        
+        [self complete];
+        
+    } failure:^(NSString *message, NSInteger errorCode) {
+        
+        if ([self.delegate respondsToSelector:@selector(listingFavoritesSuccessFailure:metadatas:message:errorCode:)])
+            [self.delegate listingFavoritesSuccessFailure:_metadataNet metadatas:nil message:message errorCode:errorCode];
+        
+        [self complete];
+    }];
+}
+
+- (void)listingFavorites:(NSString *)serverUrl account:(NSString *)account success:(void(^)(NSArray *metadatas))success failure:(void (^)(NSString *message, NSInteger errorCode))failure
 {
     OCCommunication *communication = [CCNetworking sharedNetworking].sharedOCCommunication;
     
@@ -813,107 +831,103 @@
         // Test active account
         tableAccount *recordAccount = [[NCManageDatabase sharedInstance] getAccountActive];
         if (![recordAccount.account isEqualToString:_metadataNet.account]) {
-            if ([self.delegate respondsToSelector:@selector(listingFavoritesSuccessFailure:metadatas:message:errorCode:)])
-                [self.delegate listingFavoritesSuccessFailure:_metadataNet metadatas:nil message:NSLocalizedStringFromTable(@"_error_user_not_available_", @"Error", nil) errorCode:k_CCErrorUserNotAvailble];
             
-            [self complete];
-            return;
-        }
+            failure(NSLocalizedStringFromTable(@"_error_user_not_available_", @"Error", nil), k_CCErrorUserNotAvailble);
+            
+        } else {
         
-        NSMutableArray *metadatas = [NSMutableArray new];
-        BOOL showHiddenFiles = [CCUtility getShowHiddenFiles];
+            NSMutableArray *metadatas = [NSMutableArray new];
+            BOOL showHiddenFiles = [CCUtility getShowHiddenFiles];
 
-        NSString *autoUploadFileName = [[NCManageDatabase sharedInstance] getAccountAutoUploadFileName];
-        NSString *autoUploadDirectory = [[NCManageDatabase sharedInstance] getAccountAutoUploadDirectory:_activeUrl];
+            NSString *autoUploadFileName = [[NCManageDatabase sharedInstance] getAccountAutoUploadFileName];
+            NSString *autoUploadDirectory = [[NCManageDatabase sharedInstance] getAccountAutoUploadDirectory:_activeUrl];
 
-        NSString *directoryUser = [CCUtility getDirectoryActiveUser:_activeUser activeUrl:_activeUrl];
+            NSString *directoryUser = [CCUtility getDirectoryActiveUser:_activeUser activeUrl:_activeUrl];
         
-        // Order by fileNamePath
-        items = [items sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
-            
-            OCFileDto *record1 = obj1, *record2 = obj2;
-            
-            NSString *path1 = [[record1.filePath stringByAppendingString:record1.fileName] lowercaseString];
-            NSString *path2 = [[record2.filePath stringByAppendingString:record2.fileName] lowercaseString];
-            
-            return [path1 compare:path2];
-            
-        }];
-        
-        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
-       
-            for(OCFileDto *itemDto in items) {
-                
-                NSString *serverUrl, *directoryID;
-                BOOL isFolderEncrypted;
+            // Order by fileNamePath
+            items = [items sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
                 
-                NSString *fileName = [itemDto.fileName stringByReplacingOccurrencesOfString:@"/" withString:@""];
-                
-                // Skip hidden files
-                if (fileName.length > 0) {
-                    if (!showHiddenFiles && [[fileName substringToIndex:1] isEqualToString:@"."])
-                        continue;
-                } else
-                    continue;
+                OCFileDto *record1 = obj1, *record2 = obj2;
                 
-                // ----- BUG #942 ---------
-                if ([itemDto.etag length] == 0) {
-#ifndef EXTENSION
-                    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
-                    [appDelegate messageNotification:@"Server error" description:@"Metadata fileID absent, record excluded, please fix" visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:k_CCErrorInternalError];
-#endif
-                    continue;
-                }
-                // ------------------------
+                NSString *path1 = [[record1.filePath stringByAppendingString:record1.fileName] lowercaseString];
+                NSString *path2 = [[record2.filePath stringByAppendingString:record2.fileName] lowercaseString];
                 
-                serverUrl = [itemDto.filePath stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@/files/%@", dav, _activeUserID] withString:@""];
-                if ([serverUrl hasPrefix:@"/"])
-                    serverUrl = [serverUrl substringFromIndex:1];
-                if ([serverUrl hasSuffix:@"/"])
-                    serverUrl = [serverUrl substringToIndex:[serverUrl length] - 1];
-                serverUrl = [CCUtility stringAppendServerUrl:[_activeUrl stringByAppendingString:webDAV] addFileName:serverUrl];
+                return [path1 compare:path2];
                 
-                if (itemDto.isDirectory) {
-                    (void)[[NCManageDatabase sharedInstance] addDirectoryWithEncrypted:itemDto.isEncrypted favorite:itemDto.isFavorite fileID:itemDto.ocId permissions:itemDto.permissions serverUrl:[NSString stringWithFormat:@"%@/%@", serverUrl, fileName]];
+            }];
+        
+            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
+           
+                for(OCFileDto *itemDto in items) {
+                    
+                    NSString *serverUrl, *directoryID;
+                    BOOL isFolderEncrypted;
+                    
+                    NSString *fileName = [itemDto.fileName stringByReplacingOccurrencesOfString:@"/" withString:@""];
+                    
+                    // Skip hidden files
+                    if (fileName.length > 0) {
+                        if (!showHiddenFiles && [[fileName substringToIndex:1] isEqualToString:@"."])
+                            continue;
+                    } else
+                        continue;
+                    
+                    // ----- BUG #942 ---------
+                    if ([itemDto.etag length] == 0) {
+    #ifndef EXTENSION
+                        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+                        [appDelegate messageNotification:@"Server error" description:@"Metadata fileID absent, record excluded, please fix" visible:YES delay:k_dismissAfterSecond type:TWMessageBarMessageTypeError errorCode:k_CCErrorInternalError];
+    #endif
+                        continue;
+                    }
+                    // ------------------------
+                    
+                    serverUrl = [itemDto.filePath stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@/files/%@", dav, _activeUserID] withString:@""];
+                    if ([serverUrl hasPrefix:@"/"])
+                        serverUrl = [serverUrl substringFromIndex:1];
+                    if ([serverUrl hasSuffix:@"/"])
+                        serverUrl = [serverUrl substringToIndex:[serverUrl length] - 1];
+                    serverUrl = [CCUtility stringAppendServerUrl:[_activeUrl stringByAppendingString:webDAV] addFileName:serverUrl];
+                    
+                    if (itemDto.isDirectory) {
+                        (void)[[NCManageDatabase sharedInstance] addDirectoryWithEncrypted:itemDto.isEncrypted favorite:itemDto.isFavorite fileID:itemDto.ocId permissions:itemDto.permissions serverUrl:[NSString stringWithFormat:@"%@/%@", serverUrl, fileName]];
+                    }
+                    
+                    directoryID = [[NCManageDatabase sharedInstance] getDirectoryID:serverUrl];
+                    
+                    isFolderEncrypted = [CCUtility isFolderEncrypted:serverUrl account:_metadataNet.account];
+                    
+                    [metadatas addObject:[CCUtility trasformedOCFileToCCMetadata:itemDto fileName:itemDto.fileName serverUrl:serverUrl directoryID:directoryID autoUploadFileName:autoUploadFileName autoUploadDirectory:autoUploadDirectory activeAccount:_metadataNet.account directoryUser:directoryUser isFolderEncrypted:isFolderEncrypted]];
                 }
                 
-                directoryID = [[NCManageDatabase sharedInstance] getDirectoryID:serverUrl];
-                
-                isFolderEncrypted = [CCUtility isFolderEncrypted:serverUrl account:_metadataNet.account];
-                
-                [metadatas addObject:[CCUtility trasformedOCFileToCCMetadata:itemDto fileName:itemDto.fileName serverUrl:serverUrl directoryID:directoryID autoUploadFileName:autoUploadFileName autoUploadDirectory:autoUploadDirectory activeAccount:_metadataNet.account directoryUser:directoryUser isFolderEncrypted:isFolderEncrypted]];
-            }
-            
-            dispatch_async(dispatch_get_main_queue(), ^{
-                if ([self.delegate respondsToSelector:@selector(listingFavoritesSuccessFailure:metadatas:message:errorCode:)])
-                    [self.delegate listingFavoritesSuccessFailure:_metadataNet metadatas:metadatas message:nil errorCode:0];
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    success(metadatas);
+                });
             });
-        
-        });
-        
-        [self complete];
-        
+        }
         
     } failureRequest:^(NSHTTPURLResponse *response, NSError *error, NSString *token, NSString *redirectedServer) {
         
+        NSString *message;
+
         NSInteger errorCode = response.statusCode;
         if (errorCode == 0 || (errorCode >= 200 && errorCode < 300))
             errorCode = error.code;
         
         // Error
-        if ([self.delegate respondsToSelector:@selector(listingFavoritesSuccessFailure:metadatas:message:errorCode:)]) {
-            
-            if (errorCode == 503)
-                [self.delegate listingFavoritesSuccessFailure:_metadataNet metadatas:nil message:NSLocalizedStringFromTable(@"_server_error_retry_", @"Error", nil) errorCode:errorCode];
-            else
-                [self.delegate listingFavoritesSuccessFailure:_metadataNet metadatas:nil message:[error.userInfo valueForKey:@"NSLocalizedDescription"] errorCode:errorCode];
-        }
+        if (errorCode == 503)
+            message = NSLocalizedStringFromTable(@"_server_error_retry_", @"Error", nil);
+        else
+            message = [error.userInfo valueForKey:@"NSLocalizedDescription"];
 
         // Request trusted certificated
         if ([error code] == NSURLErrorServerCertificateUntrusted && self.delegate)
             [[CCCertificate sharedManager] presentViewControllerCertificateWithTitle:[error localizedDescription] viewController:(UIViewController *)self.delegate delegate:self];
         
-        [self complete];
+        // Activity
+        [[NCManageDatabase sharedInstance] addActivityClient:serverUrl fileID:@"" action:k_activityDebugActionListingFavorites selector:@"" note:[error.userInfo valueForKey:@"NSLocalizedDescription"] type:k_activityTypeFailure verbose:k_activityVerboseHigh activeUrl:_activeUrl];
+
+        failure(message, errorCode);
     }];
 }