Эх сурвалжийг харах

optimization 1/3 + fix activity

marinofaggiana 5 жил өмнө
parent
commit
3fbad2dde8

+ 160 - 156
iOSClient/Library/OCCommunicationLib/OCCommunication.m

@@ -439,23 +439,23 @@
     OCWebDAVClient *request = [OCWebDAVClient new];
     request = [self getRequestWithCredentials:request];
     
-    
     [request listPath:path depth:depth onCommunication:sharedOCCommunication withUserSessionToken:token success:^(NSHTTPURLResponse *response, id responseObject, NSString *token) {
         if (successRequest) {
-            NSData *responseData = (NSData*) responseObject;
-            
-//            NSString* newStr = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
-//            NSLog(@"newStrReadFolder: %@", newStr);
-            
-            
-            NCXMLListParser *parser = [NCXMLListParser new];
-            [parser initParserWithData:responseData controlFirstFileOfList:true];
-            NSMutableArray *list = [parser.list mutableCopy];
+            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                NSData *responseData = (NSData*) responseObject;
+                
+                //            NSString* newStr = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
+                //            NSLog(@"newStrReadFolder: %@", newStr);
+                
+                NCXMLListParser *parser = [NCXMLListParser new];
+                [parser initParserWithData:responseData controlFirstFileOfList:true];
+                NSMutableArray *list = [parser.list mutableCopy];
 
-            //Return success
-            successRequest(response, list, request.redirectedServer, token);
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    successRequest(response, list, request.redirectedServer, token);
+                });
+            });
         }
-        
     } failure:^(NSHTTPURLResponse *response, id responseData, NSError *error, NSString *token) {
         NSLog(@"Failure");
         failureRequest(response, error, token, request.redirectedServer);
@@ -475,23 +475,25 @@
     OCWebDAVClient *request = [OCWebDAVClient new];
     request = [self getRequestWithCredentials:request];
     
-    
     [request propertiesOfPath:path onCommunication:sharedOCCommunication success:^(NSHTTPURLResponse *response, id responseObject) {
-        
         if (successRequest) {
-            NSData *responseData = (NSData*) responseObject;
-            
-            //            NSString* newStr = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
-            //            NSLog(@"newStrReadFile: %@", newStr);
-            
-            NCXMLListParser *parser = [NCXMLListParser new];
-            [parser initParserWithData:responseData controlFirstFileOfList:true];
-            NSMutableArray *list = [parser.list mutableCopy];
-            
-            //Return success
-            successRequest(response, list, request.redirectedServer);
+            if (successRequest) {
+                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                    NSData *responseData = (NSData*) responseObject;
+                    
+                    //            NSString* newStr = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
+                    //            NSLog(@"newStrReadFolder: %@", newStr);
+                    
+                    NCXMLListParser *parser = [NCXMLListParser new];
+                    [parser initParserWithData:responseData controlFirstFileOfList:true];
+                    NSMutableArray *list = [parser.list mutableCopy];
+                    
+                    dispatch_async(dispatch_get_main_queue(), ^{
+                        successRequest(response, list, request.redirectedServer);
+                    });
+                });
+            }
         }
-        
     } failure:^(NSHTTPURLResponse *response, NSData *responseData, NSError *error) {
         failureRequest(response, error, request.redirectedServer);
         
@@ -514,24 +516,19 @@
     request = [self getRequestWithCredentials:request];
     
     [request search:path folder:folder fileName:fileName depth:depth lteDateLastModified:lteDateLastModified gteDateLastModified:gteDateLastModified contentType:contentType user:_user userID:_userID onCommunication:sharedOCCommunication withUserSessionToken:token success:^(NSHTTPURLResponse *response, id responseObject, NSString *token) {
-        
         if (successRequest) {
-            
             dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
-                
                 NSData *responseData = (NSData*) responseObject;
                 
                 NCXMLListParser *parser = [NCXMLListParser new];
                 [parser initParserWithData:responseData controlFirstFileOfList:false];
                 NSMutableArray *list = [parser.list mutableCopy];
                 
-                //Return success
                 dispatch_async(dispatch_get_main_queue(), ^{
                     successRequest(response, list, request.redirectedServer, token);
                 });
             });
         }
-        
     } failure:^(NSHTTPURLResponse *response, id responseData, NSError *error, NSString *token) {
         
         failureRequest(response, error, token, request.redirectedServer);
@@ -551,14 +548,17 @@
     
     [request search:path folder:folder fileName:fileName dateLastModified:dateLastModified numberOfItem:numberOfItem userID:_userID onCommunication:sharedOCCommunication withUserSessionToken:token success:^(NSHTTPURLResponse *response, id responseObject, NSString *token) {
         if (successRequest) {
-            
-            NSData *responseData = (NSData*) responseObject;
-            
-            NCXMLListParser *parser = [NCXMLListParser new];
-            [parser initParserWithData:responseData controlFirstFileOfList:false];
-            NSMutableArray *list = [parser.list mutableCopy];
-            
-            successRequest(response, list, request.redirectedServer, token);
+            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
+                NSData *responseData = (NSData*) responseObject;
+                
+                NCXMLListParser *parser = [NCXMLListParser new];
+                [parser initParserWithData:responseData controlFirstFileOfList:false];
+                NSMutableArray *list = [parser.list mutableCopy];
+                
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    successRequest(response, list, request.redirectedServer, token);
+                });
+            });
         }
     } failure:^(NSHTTPURLResponse *response, id responseData, NSError *error, NSString *token) {
         failureRequest(response, error, token, request.redirectedServer);
@@ -609,21 +609,20 @@
     request = [self getRequestWithCredentials:request];
     
     [request listingFavorites:path folder:folder user:_user userID:_userID onCommunication:sharedOCCommunication withUserSessionToken:token success:^(NSHTTPURLResponse *response, id responseObject, NSString *token) {
-        
         if (successRequest) {
+            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
+                NSData *responseData = (NSData*) responseObject;
+                
+                NCXMLListParser *parser = [NCXMLListParser new];
+                [parser initParserWithData:responseData controlFirstFileOfList:false];
+                NSMutableArray *list = [parser.list mutableCopy];
             
-            NSData *responseData = (NSData*) responseObject;
-            
-            NCXMLListParser *parser = [NCXMLListParser new];
-            [parser initParserWithData:responseData controlFirstFileOfList:false];
-            NSMutableArray *list = [parser.list mutableCopy];
-            
-            //Return success
-            successRequest(response, list, request.redirectedServer, token);
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    successRequest(response, list, request.redirectedServer, token);
+                });
+            });
         }
-        
     } failure:^(NSHTTPURLResponse *response, id responseData, NSError *error, NSString *token) {
-        
         failureRequest(response, error, token, request.redirectedServer);
     }];
 }
@@ -1646,122 +1645,126 @@
     request = [self getRequestWithCredentials:request];
     
     [request getNotificationServer:serverPath onCommunication:sharedOCComunication success:^(NSHTTPURLResponse *response, id responseObject) {
-        
-        NSData *responseData = (NSData*) responseObject;
-        NSMutableArray *listOfNotifications = [NSMutableArray new];
+        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+            NSData *responseData = (NSData*) responseObject;
+            NSMutableArray *listOfNotifications = [NSMutableArray new];
 
-        //Parse
-        NSError *error;
-        NSDictionary *jsongParsed = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:&error];
-        NSLog(@"[LOG] Notifications : %@",jsongParsed);
-        
-        if (jsongParsed && jsongParsed.allKeys > 0) {
-        
-            NSDictionary *ocs = [jsongParsed valueForKey:@"ocs"];
-            NSDictionary *meta = [ocs valueForKey:@"meta"];
-            NSDictionary *datas = [ocs valueForKey:@"data"];
-        
-            NSInteger statusCode = [[meta valueForKey:@"statuscode"] integerValue];
-                        
-            if (statusCode == kOCNotificationAPINoContent || statusCode == kOCNotificationAPISuccessful) {
-                
-                for (NSDictionary *data in datas) {
+            //Parse
+            NSError *error;
+            NSDictionary *jsongParsed = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:&error];
+            NSLog(@"[LOG] Notifications : %@",jsongParsed);
+            
+            if (jsongParsed && jsongParsed.allKeys > 0) {
+            
+                NSDictionary *ocs = [jsongParsed valueForKey:@"ocs"];
+                NSDictionary *meta = [ocs valueForKey:@"meta"];
+                NSDictionary *datas = [ocs valueForKey:@"data"];
+            
+                NSInteger statusCode = [[meta valueForKey:@"statuscode"] integerValue];
                 
-                    OCNotifications *notification = [OCNotifications new];
+                if (statusCode == kOCNotificationAPINoContent || statusCode == kOCNotificationAPISuccessful) {
                     
-                    if ([data valueForKey:@"notification_id"] && ![[data valueForKey:@"notification_id"] isEqual:[NSNull null]])
-                        notification.idNotification = [[data valueForKey:@"notification_id"] integerValue];
+                    for (NSDictionary *data in datas) {
                     
-                    if ([data valueForKey:@"app"] && ![[data valueForKey:@"app"] isEqual:[NSNull null]])
-                        notification.application = [data valueForKey:@"app"];
-                    
-                    if ([data valueForKey:@"user"] && ![[data valueForKey:@"user"] isEqual:[NSNull null]])
-                        notification.user = [data valueForKey:@"user"];
-                    
-                    if ([data valueForKey:@"datetime"] && ![[data valueForKey:@"datetime"] isEqual:[NSNull null]]) {
+                        OCNotifications *notification = [OCNotifications new];
                         
-                        NSString *dateString = [data valueForKey:@"datetime"];
+                        if ([data valueForKey:@"notification_id"] && ![[data valueForKey:@"notification_id"] isEqual:[NSNull null]])
+                            notification.idNotification = [[data valueForKey:@"notification_id"] integerValue];
                         
-                        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
-                        NSLocale *enUSPOSIXLocale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
-                        [dateFormatter setLocale:enUSPOSIXLocale];
-                        [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];
+                        if ([data valueForKey:@"app"] && ![[data valueForKey:@"app"] isEqual:[NSNull null]])
+                            notification.application = [data valueForKey:@"app"];
                         
-                        notification.date = [dateFormatter dateFromString:dateString];
-                    }
-                    
-                    if ([data valueForKey:@"object_type"] && ![[data valueForKey:@"object_type"] isEqual:[NSNull null]])
-                        notification.typeObject = [data valueForKey:@"object_type"];
-                    
-                    if ([data valueForKey:@"object_id"] && ![[data valueForKey:@"object_id"] isEqual:[NSNull null]])
-                        notification.idObject = [data valueForKey:@"object_id"];
-                    
-                    if ([data valueForKey:@"subject"] && ![[data valueForKey:@"subject"] isEqual:[NSNull null]])
-                        notification.subject = [data valueForKey:@"subject"];
-                    
-                    if ([data valueForKey:@"subjectRich"] && ![[data valueForKey:@"subjectRich"] isEqual:[NSNull null]])
-                        notification.subjectRich = [data valueForKey:@"subjectRich"];
-                    
-                    if ([data valueForKey:@"subjectRichParameters"] && ![[data valueForKey:@"subjectRichParameters"] isEqual:[NSNull null]] && [[data valueForKey:@"subjectRichParameters"] count] > 0)
-                        notification.subjectRichParameters = [data valueForKey:@"subjectRichParameters"];
-                    
-                    if ([data valueForKey:@"message"] && ![[data valueForKey:@"message"] isEqual:[NSNull null]])
-                        notification.message = [data valueForKey:@"message"];
-                    
-                    if ([data valueForKey:@"messageRich"] && ![[data valueForKey:@"messageRich"] isEqual:[NSNull null]])
-                        notification.messageRich = [data valueForKey:@"messageRich"];
-                    
-                    if ([data valueForKey:@"messageRichParameters"] && ![[data valueForKey:@"messageRichParameters"] isEqual:[NSNull null]] && [[data valueForKey:@"messageRichParameters"] count] > 0)
-                        notification.messageRichParameters = [data valueForKey:@"messageRichParameters"];
-                    
-                    if ([data valueForKey:@"link"] && ![[data valueForKey:@"link"] isEqual:[NSNull null]])
-                        notification.link = [data valueForKey:@"link"];
-                    
-                    if ([data valueForKey:@"icon"] && ![[data valueForKey:@"icon"] isEqual:[NSNull null]])
-                        notification.icon = [data valueForKey:@"icon"];
-                    
-                    /* ACTION */
-                    
-                    NSMutableArray *actionsArr = [NSMutableArray new];
-                    NSDictionary *actions = [data valueForKey:@"actions"];
-                    
-                    for (NSDictionary *action in actions) {
+                        if ([data valueForKey:@"user"] && ![[data valueForKey:@"user"] isEqual:[NSNull null]])
+                            notification.user = [data valueForKey:@"user"];
+                        
+                        if ([data valueForKey:@"datetime"] && ![[data valueForKey:@"datetime"] isEqual:[NSNull null]]) {
+                            
+                            NSString *dateString = [data valueForKey:@"datetime"];
+                            
+                            NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
+                            NSLocale *enUSPOSIXLocale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
+                            [dateFormatter setLocale:enUSPOSIXLocale];
+                            [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];
+                            
+                            notification.date = [dateFormatter dateFromString:dateString];
+                        }
+                        
+                        if ([data valueForKey:@"object_type"] && ![[data valueForKey:@"object_type"] isEqual:[NSNull null]])
+                            notification.typeObject = [data valueForKey:@"object_type"];
+                        
+                        if ([data valueForKey:@"object_id"] && ![[data valueForKey:@"object_id"] isEqual:[NSNull null]])
+                            notification.idObject = [data valueForKey:@"object_id"];
+                        
+                        if ([data valueForKey:@"subject"] && ![[data valueForKey:@"subject"] isEqual:[NSNull null]])
+                            notification.subject = [data valueForKey:@"subject"];
+                        
+                        if ([data valueForKey:@"subjectRich"] && ![[data valueForKey:@"subjectRich"] isEqual:[NSNull null]])
+                            notification.subjectRich = [data valueForKey:@"subjectRich"];
                         
-                        OCNotificationsAction *notificationAction = [OCNotificationsAction new];
+                        if ([data valueForKey:@"subjectRichParameters"] && ![[data valueForKey:@"subjectRichParameters"] isEqual:[NSNull null]] && [[data valueForKey:@"subjectRichParameters"] count] > 0)
+                            notification.subjectRichParameters = [data valueForKey:@"subjectRichParameters"];
                         
-                        if ([action valueForKey:@"label"] && ![[action valueForKey:@"label"] isEqual:[NSNull null]])
-                            notificationAction.label = [action valueForKey:@"label"];
+                        if ([data valueForKey:@"message"] && ![[data valueForKey:@"message"] isEqual:[NSNull null]])
+                            notification.message = [data valueForKey:@"message"];
                         
-                        if ([action valueForKey:@"link"] && ![[action valueForKey:@"link"] isEqual:[NSNull null]])
-                            notificationAction.link = [action valueForKey:@"link"];
+                        if ([data valueForKey:@"messageRich"] && ![[data valueForKey:@"messageRich"] isEqual:[NSNull null]])
+                            notification.messageRich = [data valueForKey:@"messageRich"];
                         
-                        if ([action valueForKey:@"primary"] && ![[action valueForKey:@"primary"] isEqual:[NSNull null]])
-                            notificationAction.primary = [[action valueForKey:@"primary"] boolValue];
+                        if ([data valueForKey:@"messageRichParameters"] && ![[data valueForKey:@"messageRichParameters"] isEqual:[NSNull null]] && [[data valueForKey:@"messageRichParameters"] count] > 0)
+                            notification.messageRichParameters = [data valueForKey:@"messageRichParameters"];
                         
-                        if ([action valueForKey:@"type"] && ![[action valueForKey:@"type"] isEqual:[NSNull null]])
-                            notificationAction.type = [action valueForKey:@"type"];
+                        if ([data valueForKey:@"link"] && ![[data valueForKey:@"link"] isEqual:[NSNull null]])
+                            notification.link = [data valueForKey:@"link"];
+                        
+                        if ([data valueForKey:@"icon"] && ![[data valueForKey:@"icon"] isEqual:[NSNull null]])
+                            notification.icon = [data valueForKey:@"icon"];
+                        
+                        /* ACTION */
+                        
+                        NSMutableArray *actionsArr = [NSMutableArray new];
+                        NSDictionary *actions = [data valueForKey:@"actions"];
+                        
+                        for (NSDictionary *action in actions) {
+                            
+                            OCNotificationsAction *notificationAction = [OCNotificationsAction new];
+                            
+                            if ([action valueForKey:@"label"] && ![[action valueForKey:@"label"] isEqual:[NSNull null]])
+                                notificationAction.label = [action valueForKey:@"label"];
+                            
+                            if ([action valueForKey:@"link"] && ![[action valueForKey:@"link"] isEqual:[NSNull null]])
+                                notificationAction.link = [action valueForKey:@"link"];
+                            
+                            if ([action valueForKey:@"primary"] && ![[action valueForKey:@"primary"] isEqual:[NSNull null]])
+                                notificationAction.primary = [[action valueForKey:@"primary"] boolValue];
+                            
+                            if ([action valueForKey:@"type"] && ![[action valueForKey:@"type"] isEqual:[NSNull null]])
+                                notificationAction.type = [action valueForKey:@"type"];
 
-                        [actionsArr addObject:notificationAction];
+                            [actionsArr addObject:notificationAction];
+                        }
+                        
+                        notification.actions = [[NSArray alloc] initWithArray:actionsArr];
+                        [listOfNotifications addObject:notification];
                     }
+                    dispatch_async(dispatch_get_main_queue(), ^{
+                        successRequest(response, listOfNotifications, request.redirectedServer);
+                    });
+                } else {
                     
-                    notification.actions = [[NSArray alloc] initWithArray:actionsArr];
-                    [listOfNotifications addObject:notification];
+                    NSString *message = (NSString *)[meta objectForKey:@"message"];
+                    if ([message isKindOfClass:[NSNull class]]) {
+                        message = NSLocalizedString(@"_server_response_error_", nil);
+                    }
+                    dispatch_async(dispatch_get_main_queue(), ^{
+                        failureRequest(response, [UtilsFramework getErrorWithCode:statusCode andCustomMessageFromTheServer:message], request.redirectedServer);
+                    });
                 }
-                
-                successRequest(response, listOfNotifications, request.redirectedServer);
-                
             } else {
-                
-                NSString *message = (NSString *)[meta objectForKey:@"message"];
-                if ([message isKindOfClass:[NSNull class]]) {
-                    message = NSLocalizedString(@"_server_response_error_", nil);
-                }
-                failureRequest(response, [UtilsFramework getErrorWithCode:statusCode andCustomMessageFromTheServer:message], request.redirectedServer);
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    failureRequest(response, [UtilsFramework getErrorWithCode:k_CCErrorWebdavResponseError andCustomMessageFromTheServer:NSLocalizedString(@"_server_response_error_", nil)], request.redirectedServer);
+                });
             }
-        } else {
-            failureRequest(response, [UtilsFramework getErrorWithCode:k_CCErrorWebdavResponseError andCustomMessageFromTheServer:NSLocalizedString(@"_server_response_error_", nil)], request.redirectedServer);
-        }
-    
+        });
     } failure:^(NSHTTPURLResponse *response, NSData *responseData, NSError *error) {
         failureRequest(response, error, request.redirectedServer);
     }];
@@ -3045,15 +3048,16 @@
     path = [path encodeString:NSUTF8StringEncoding];
 
     [request listTrash:path depth:depth onCommunication:sharedOCCommunication success:^(NSHTTPURLResponse *response, id responseObject) {
+        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
+            NCXMLListParser *parser = [NCXMLListParser new];
+            [parser initParserWithData:responseObject controlFirstFileOfList:true];
+            NSMutableArray *list = [parser.list mutableCopy];
         
-        NCXMLListParser *parser = [NCXMLListParser new];
-        [parser initParserWithData:responseObject controlFirstFileOfList:true];
-        NSMutableArray *list = [parser.list mutableCopy];
-        
-        successRequest(response, list, request.redirectedServer);
-        
+            dispatch_async(dispatch_get_main_queue(), ^{
+                successRequest(response, list, request.redirectedServer);
+            });
+        });
     } failure:^(NSHTTPURLResponse *response, id responseData, NSError *error) {
-        
         failureRequest(response, error, request.redirectedServer);
     }];
 }

+ 1 - 1
iOSClient/Library/OCCommunicationLib/OCFrameworkConstants.h

@@ -60,7 +60,7 @@
 #define k_url_acces_remote_subscribing_nextcloud_server_api @"/ocs/v2.php/apps/notifications/api/v2/push"
 
 //Url to access to Remote Activity API
-#define k_url_acces_remote_activity_api @"ocs/v2.php/apps/activity/api/v2/activity/all"
+#define k_url_acces_remote_activity_api @"ocs/v2.php/apps/activity/api/v2/activity"
 
 //Url to access to External sites API
 #define k_url_acces_external_sites_api @"ocs/v2.php/apps/external/api/v1"

+ 4 - 4
iOSClient/Library/OCCommunicationLib/OCWebDavClient/OCWebDAVClient.m

@@ -993,10 +993,10 @@ NSString *const NCResource = @"<d:displayname/>"
     
     _requestMethod = @"GET";
     
-    serverPath = [serverPath stringByAppendingString:[NSString stringWithFormat:@"?format=json&since=%ld&limit=%ld", (long)since, (long)limit]];
-
-    if (objectId.length > 0) {
-        serverPath = [serverPath stringByAppendingString:[NSString stringWithFormat:@"&=object_id=%@&object_type=%@", objectId, objectType]];
+    if (objectId.length == 0) {
+        serverPath = [serverPath stringByAppendingString:[NSString stringWithFormat:@"/all?format=json&since=%ld&limit=%ld", (long)since, (long)limit]];
+    } else {
+        serverPath = [serverPath stringByAppendingString:[NSString stringWithFormat:@"/filter?format=json&since=%ld&limit=%ld&object_id=%@&object_type=%@",(long)since, (long)limit, objectId, objectType]];
     }
     if (previews) {
         serverPath = [serverPath stringByAppendingString:[NSString stringWithFormat:@"&previews=true"]];

+ 199 - 190
iOSClient/Networking/OCNetworking.m

@@ -185,46 +185,47 @@
     
     NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error) {
         
-        dispatch_sync(dispatch_get_main_queue(), ^{
-            
-            if (error) {
-                
-                NSString *message;
-                NSInteger errorCode;
+        if (error) {
                 
-                NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
-                errorCode = httpResponse.statusCode;
+            NSString *message;
+            NSInteger errorCode;
                 
-                if (errorCode == 0 || (errorCode >= 200 && errorCode < 300))
-                    errorCode = error.code;
+            NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
+            errorCode = httpResponse.statusCode;
                 
-                // Error
-                if (errorCode == 503)
-                    message = NSLocalizedString(@"_server_error_retry_", nil);
-                else
-                    message = [error.userInfo valueForKey:@"NSLocalizedDescription"];
+            if (errorCode == 0 || (errorCode >= 200 && errorCode < 300))
+                errorCode = error.code;
                 
+            // Error
+            if (errorCode == 503)
+                message = NSLocalizedString(@"_server_error_retry_", nil);
+            else
+                message = [error.userInfo valueForKey:@"NSLocalizedDescription"];
+            
+            dispatch_sync(dispatch_get_main_queue(), ^{
                 completion(nil, 0, 0, 0, false, message, errorCode);
+            });
+            
+        } else {
                 
-            } else {
-                
-                NSString *serverProductName = @"";
-                NSString *serverVersion = @"0.0.0";
-                NSString *serverVersionString = @"0.0.0";
+            NSString *serverProductName = @"";
+            NSString *serverVersion = @"0.0.0";
+            NSString *serverVersionString = @"0.0.0";
                 
-                NSInteger versionMajor = 0;
-                NSInteger versionMicro = 0;
-                NSInteger versionMinor = 0;
+            NSInteger versionMajor = 0;
+            NSInteger versionMicro = 0;
+            NSInteger versionMinor = 0;
                 
-                BOOL extendedSupport = FALSE;
+            BOOL extendedSupport = FALSE;
                 
-                NSError *error;
-                NSDictionary *jsongParsed = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
+            NSError *error;
+            NSDictionary *jsongParsed = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
                 
-                if (error) {
+            if (error) {
+                dispatch_sync(dispatch_get_main_queue(), ^{
                     completion(nil, 0, 0, 0, extendedSupport, NSLocalizedString(@"_no_nextcloud_found_", nil), k_CCErrorInternalError);
-                    return;
-                }
+                });
+            } else {
                 
                 serverProductName = [[jsongParsed valueForKey:@"productname"] lowercaseString];
                 serverVersion = [jsongParsed valueForKey:@"version"];
@@ -244,11 +245,11 @@
                 }
                 
                 extendedSupport = [[jsongParsed valueForKey:@"extendedSupport"] boolValue];
-
-                completion(serverProductName, versionMajor, versionMicro, versionMinor, extendedSupport, nil, 0);
+                dispatch_sync(dispatch_get_main_queue(), ^{
+                    completion(serverProductName, versionMajor, versionMicro, versionMinor, extendedSupport, nil, 0);
+                });
             }
-        });
-        
+        }
     }];
     
     [task resume];
@@ -271,9 +272,7 @@
     NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
     
     NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error) {
-        
         dispatch_sync(dispatch_get_main_queue(), ^{
-            
             if (error) {
                 
                 NSString *message;
@@ -292,13 +291,10 @@
                     message = [error.userInfo valueForKey:@"NSLocalizedDescription"];
                 
                 completion(nil, message, errorCode);
-                
             } else {
-            
                 completion(data, nil, 0);
             }
         });
-        
     }];
     
     [task resume];
@@ -527,63 +523,66 @@
             completion(account, nil, nil, NSLocalizedString(@"Read Folder WebDAV : [items NULL] please fix", nil), k_CCErrorInternalError);
 
         } else {
+            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                BOOL showHiddenFiles = [CCUtility getShowHiddenFiles];
+                BOOL isFolderEncrypted = [CCUtility isFolderEncrypted:serverUrl account:account];
                 
-            BOOL showHiddenFiles = [CCUtility getShowHiddenFiles];
-            BOOL isFolderEncrypted = [CCUtility isFolderEncrypted:serverUrl account:account];
-            
-            // directory [0]
-            OCFileDto *itemDtoFolder = [items objectAtIndex:0];
-            //NSDate *date = [NSDate dateWithTimeIntervalSince1970:itemDtoDirectory.date];
-            
-            NSMutableArray *metadatas = [NSMutableArray new];
-            tableMetadata *metadataFolder = [tableMetadata new];
-            
-            NSString *serverUrlFolder;
-
-            // Metadata . (self Folder)
-            if ([serverUrl isEqualToString:[CCUtility getHomeServerUrlActiveUrl:url]]) {
-                
-                // root folder
-                serverUrlFolder = k_serverUrl_root;
-                metadataFolder = [CCUtility trasformedOCFileToCCMetadata:itemDtoFolder fileName:@"." serverUrl:serverUrlFolder autoUploadFileName:autoUploadFileName autoUploadDirectory:autoUploadDirectory account:account isFolderEncrypted:isFolderEncrypted];
+                // directory [0]
+                OCFileDto *itemDtoFolder = [items objectAtIndex:0];
+                //NSDate *date = [NSDate dateWithTimeIntervalSince1970:itemDtoDirectory.date];
                 
-            } else {
+                NSMutableArray *metadatas = [NSMutableArray new];
+                tableMetadata *metadataFolder = [tableMetadata new];
                 
-                serverUrlFolder = [CCUtility deletingLastPathComponentFromServerUrl:serverUrl];
-                metadataFolder = [CCUtility trasformedOCFileToCCMetadata:itemDtoFolder fileName:[serverUrl lastPathComponent] serverUrl:serverUrlFolder autoUploadFileName:autoUploadFileName autoUploadDirectory:autoUploadDirectory account:account isFolderEncrypted:isFolderEncrypted];
-            }
-            
-            // Add metadata folder
-            (void)[[NCManageDatabase sharedInstance] addDirectoryWithEncrypted:itemDtoFolder.isEncrypted favorite:itemDtoFolder.isFavorite ocId:itemDtoFolder.ocId permissions:itemDtoFolder.permissions serverUrl:serverUrl account:account];
+                NSString *serverUrlFolder;
 
-            NSArray *itemsSortedArray = [items sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
-                
-                NSString *first = [(OCFileDto*)a fileName];
-                NSString *second = [(OCFileDto*)b fileName];
-                return [[first lowercaseString] compare:[second lowercaseString]];
-            }];
-            
-            for (NSUInteger i=1; i < [itemsSortedArray count]; i++) {
-                
-                OCFileDto *itemDto = [itemsSortedArray objectAtIndex:i];
-                NSString *fileName = [itemDto.fileName stringByReplacingOccurrencesOfString:@"/" withString:@""];
-                
-                // Skip hidden files
-                if (fileName.length > 0) {
-                    if (!showHiddenFiles && [[fileName substringToIndex:1] isEqualToString:@"."])
-                        continue;
+                // Metadata . (self Folder)
+                if ([serverUrl isEqualToString:[CCUtility getHomeServerUrlActiveUrl:url]]) {
+                    
+                    // root folder
+                    serverUrlFolder = k_serverUrl_root;
+                    metadataFolder = [CCUtility trasformedOCFileToCCMetadata:itemDtoFolder fileName:@"." serverUrl:serverUrlFolder autoUploadFileName:autoUploadFileName autoUploadDirectory:autoUploadDirectory account:account isFolderEncrypted:isFolderEncrypted];
+                    
                 } else {
-                    continue;
+                    
+                    serverUrlFolder = [CCUtility deletingLastPathComponentFromServerUrl:serverUrl];
+                    metadataFolder = [CCUtility trasformedOCFileToCCMetadata:itemDtoFolder fileName:[serverUrl lastPathComponent] serverUrl:serverUrlFolder autoUploadFileName:autoUploadFileName autoUploadDirectory:autoUploadDirectory account:account isFolderEncrypted:isFolderEncrypted];
                 }
                 
-                if (itemDto.isDirectory) {
-                    (void)[[NCManageDatabase sharedInstance] addDirectoryWithEncrypted:itemDto.isEncrypted favorite:itemDto.isFavorite ocId:itemDto.ocId permissions:itemDto.permissions serverUrl:[CCUtility stringAppendServerUrl:serverUrl addFileName:fileName] account:account];
+                // Add metadata folder
+                (void)[[NCManageDatabase sharedInstance] addDirectoryWithEncrypted:itemDtoFolder.isEncrypted favorite:itemDtoFolder.isFavorite ocId:itemDtoFolder.ocId permissions:itemDtoFolder.permissions serverUrl:serverUrl account:account];
+
+                NSArray *itemsSortedArray = [items sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
+                    
+                    NSString *first = [(OCFileDto*)a fileName];
+                    NSString *second = [(OCFileDto*)b fileName];
+                    return [[first lowercaseString] compare:[second lowercaseString]];
+                }];
+                
+                for (NSUInteger i=1; i < [itemsSortedArray count]; i++) {
+                    
+                    OCFileDto *itemDto = [itemsSortedArray objectAtIndex:i];
+                    NSString *fileName = [itemDto.fileName stringByReplacingOccurrencesOfString:@"/" withString:@""];
+                    
+                    // Skip hidden files
+                    if (fileName.length > 0) {
+                        if (!showHiddenFiles && [[fileName substringToIndex:1] isEqualToString:@"."])
+                            continue;
+                    } else {
+                        continue;
+                    }
+                    
+                    if (itemDto.isDirectory) {
+                        (void)[[NCManageDatabase sharedInstance] addDirectoryWithEncrypted:itemDto.isEncrypted favorite:itemDto.isFavorite ocId:itemDto.ocId permissions:itemDto.permissions serverUrl:[CCUtility stringAppendServerUrl:serverUrl addFileName:fileName] account:account];
+                    }
+                    
+                    [metadatas addObject:[CCUtility trasformedOCFileToCCMetadata:itemDto fileName:itemDto.fileName serverUrl:serverUrl autoUploadFileName:autoUploadFileName autoUploadDirectory:autoUploadDirectory account:account isFolderEncrypted:isFolderEncrypted]];
                 }
                 
-                [metadatas addObject:[CCUtility trasformedOCFileToCCMetadata:itemDto fileName:itemDto.fileName serverUrl:serverUrl autoUploadFileName:autoUploadFileName autoUploadDirectory:autoUploadDirectory account:account isFolderEncrypted:isFolderEncrypted]];
-            }
-            
-            completion(account, metadatas, metadataFolder, nil, 0);
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    completion(account, metadatas, metadataFolder, nil, 0);
+                });
+            });
         }
     
     } failureRequest:^(NSHTTPURLResponse *response, NSError *error, NSString *token, NSString *redirectedServer) {
@@ -642,15 +641,17 @@
         BOOL isFolderEncrypted = [CCUtility isFolderEncrypted:serverUrl account:account];
             
         if ([items count] > 0) {
+            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                tableMetadata *metadata = [tableMetadata new];
                 
-            tableMetadata *metadata = [tableMetadata new];
+                OCFileDto *itemDto = [items objectAtIndex:0];
                 
-            OCFileDto *itemDto = [items objectAtIndex:0];
-            
-            metadata = [CCUtility trasformedOCFileToCCMetadata:itemDto fileName:fileName serverUrl:serverUrl autoUploadFileName:autoUploadFileName autoUploadDirectory:autoUploadDirectory account:account isFolderEncrypted:isFolderEncrypted];
-                    
-            completion(account, metadata, nil, 0);
-            
+                metadata = [CCUtility trasformedOCFileToCCMetadata:itemDto fileName:fileName serverUrl:serverUrl autoUploadFileName:autoUploadFileName autoUploadDirectory:autoUploadDirectory account:account isFolderEncrypted:isFolderEncrypted];
+                
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    completion(account, metadata, nil, 0);
+                });
+            });
         // BUG 1038 item == 0
         } else {
                 
@@ -902,39 +903,42 @@
     [communication setUserAgent:[CCUtility getUserAgent]];
     [communication search:path folder:folder fileName: [NSString stringWithFormat:@"%%%@%%", fileName] depth:depth lteDateLastModified:lteDateLastModifiedString gteDateLastModified:gteDateLastModifiedString contentType:contentType withUserSessionToken:nil onCommunication:communication successRequest:^(NSHTTPURLResponse *response, NSArray *items, NSString *redirectedServer, NSString *token) {
         
-        NSMutableArray *metadatas = [NSMutableArray new];
-        BOOL showHiddenFiles = [CCUtility getShowHiddenFiles];
-        
-        for (OCFileDto *itemDto in items) {
-            
-            NSString *serverUrl;
-            BOOL isFolderEncrypted;
-            
-            NSString *fileName = [itemDto.fileName stringByReplacingOccurrencesOfString:@"/" withString:@""];
+        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+            NSMutableArray *metadatas = [NSMutableArray new];
+            BOOL showHiddenFiles = [CCUtility getShowHiddenFiles];
             
-            // Skip hidden files
-            if (fileName.length > 0) {
-                if (!showHiddenFiles && [[fileName substringToIndex:1] isEqualToString:@"."])
+            for (OCFileDto *itemDto in items) {
+                
+                NSString *serverUrl;
+                BOOL isFolderEncrypted;
+                
+                NSString *fileName = [itemDto.fileName stringByReplacingOccurrencesOfString:@"/" withString:@""];
+                
+                // Skip hidden files
+                if (fileName.length > 0) {
+                    if (!showHiddenFiles && [[fileName substringToIndex:1] isEqualToString:@"."])
+                        continue;
+                } else
                     continue;
-            } else
-                continue;
-            
-            NSRange firstInstance = [itemDto.filePath rangeOfString:[NSString stringWithFormat:@"%@/files/%@", k_dav, userID]];
-            NSString *serverPath = [itemDto.filePath substringFromIndex:firstInstance.length+firstInstance.location+1];
-            if ([serverPath hasSuffix:@"/"]) serverPath = [serverPath substringToIndex:[serverPath length] - 1];
-            serverUrl = [CCUtility stringAppendServerUrl:[url stringByAppendingString:k_webDAV] addFileName:serverPath];
-            
-            if (itemDto.isDirectory) {
-                (void)[[NCManageDatabase sharedInstance] addDirectoryWithEncrypted:itemDto.isEncrypted favorite:itemDto.isFavorite ocId:itemDto.ocId permissions:itemDto.permissions serverUrl:[NSString stringWithFormat:@"%@/%@", serverUrl, fileName] account:account];
+                
+                NSRange firstInstance = [itemDto.filePath rangeOfString:[NSString stringWithFormat:@"%@/files/%@", k_dav, userID]];
+                NSString *serverPath = [itemDto.filePath substringFromIndex:firstInstance.length+firstInstance.location+1];
+                if ([serverPath hasSuffix:@"/"]) serverPath = [serverPath substringToIndex:[serverPath length] - 1];
+                serverUrl = [CCUtility stringAppendServerUrl:[url stringByAppendingString:k_webDAV] addFileName:serverPath];
+                
+                if (itemDto.isDirectory) {
+                    (void)[[NCManageDatabase sharedInstance] addDirectoryWithEncrypted:itemDto.isEncrypted favorite:itemDto.isFavorite ocId:itemDto.ocId permissions:itemDto.permissions serverUrl:[NSString stringWithFormat:@"%@/%@", serverUrl, fileName] account:account];
+                }
+                
+                isFolderEncrypted = [CCUtility isFolderEncrypted:serverUrl account:account];
+                
+                [metadatas addObject:[CCUtility trasformedOCFileToCCMetadata:itemDto fileName:itemDto.fileName serverUrl:serverUrl autoUploadFileName:autoUploadFileName autoUploadDirectory:autoUploadDirectory account:account isFolderEncrypted:isFolderEncrypted]];
             }
             
-            isFolderEncrypted = [CCUtility isFolderEncrypted:serverUrl account:account];
-            
-            [metadatas addObject:[CCUtility trasformedOCFileToCCMetadata:itemDto fileName:itemDto.fileName serverUrl:serverUrl autoUploadFileName:autoUploadFileName autoUploadDirectory:autoUploadDirectory account:account isFolderEncrypted:isFolderEncrypted]];
-        }
-        
-        completion(account, metadatas, nil, 0);
-        
+            dispatch_async(dispatch_get_main_queue(), ^{
+                completion(account, metadatas, nil, 0);
+            });
+        });
     } failureRequest:^(NSHTTPURLResponse *response, NSError *error, NSString *token, NSString *redirectedServer) {
         
         NSString *message;
@@ -1218,52 +1222,55 @@
     [communication setUserAgent:[CCUtility getUserAgent]];
     [communication listingFavorites:path folder:@"" withUserSessionToken:nil onCommunication:communication successRequest:^(NSHTTPURLResponse *response, NSArray *items, NSString *redirectedServer, NSString *token) {
         
-        NSMutableArray *metadatas = [NSMutableArray new];
-        BOOL showHiddenFiles = [CCUtility getShowHiddenFiles];
-        
-        // 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];
-            
-        }];
-        
-        for(OCFileDto *itemDto in items) {
-            
-            NSString *serverUrl;
-            BOOL isFolderEncrypted;
+        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+            NSMutableArray *metadatas = [NSMutableArray new];
+            BOOL showHiddenFiles = [CCUtility getShowHiddenFiles];
             
-            NSString *fileName = [itemDto.fileName stringByReplacingOccurrencesOfString:@"/" withString:@""];
+            // Order by fileNamePath
+            NSArray *itemsSortedArray = [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];
+                
+            }];
             
-            // Skip hidden files
-            if (fileName.length > 0) {
-                if (!showHiddenFiles && [[fileName substringToIndex:1] isEqualToString:@"."])
+            for(OCFileDto *itemDto in itemsSortedArray) {
+                
+                NSString *serverUrl;
+                BOOL isFolderEncrypted;
+                
+                NSString *fileName = [itemDto.fileName stringByReplacingOccurrencesOfString:@"/" withString:@""];
+                
+                // Skip hidden files
+                if (fileName.length > 0) {
+                    if (!showHiddenFiles && [[fileName substringToIndex:1] isEqualToString:@"."])
+                        continue;
+                } else
                     continue;
-            } else
-                continue;
-            
-            NSRange firstInstance = [itemDto.filePath rangeOfString:[NSString stringWithFormat:@"%@/files/%@", k_dav, userID]];
-            NSString *serverPath = [itemDto.filePath substringFromIndex:firstInstance.length+firstInstance.location+1];
-            if ([serverPath hasSuffix:@"/"])
-                serverPath = [serverPath substringToIndex:[serverPath length] - 1];
-            serverUrl = [CCUtility stringAppendServerUrl:[url stringByAppendingString:k_webDAV] addFileName:serverPath];
-            
-            if (itemDto.isDirectory) {
-                (void)[[NCManageDatabase sharedInstance] addDirectoryWithEncrypted:itemDto.isEncrypted favorite:itemDto.isFavorite ocId:itemDto.ocId permissions:itemDto.permissions serverUrl:[NSString stringWithFormat:@"%@/%@", serverUrl, fileName] account:account];
+                
+                NSRange firstInstance = [itemDto.filePath rangeOfString:[NSString stringWithFormat:@"%@/files/%@", k_dav, userID]];
+                NSString *serverPath = [itemDto.filePath substringFromIndex:firstInstance.length+firstInstance.location+1];
+                if ([serverPath hasSuffix:@"/"])
+                    serverPath = [serverPath substringToIndex:[serverPath length] - 1];
+                serverUrl = [CCUtility stringAppendServerUrl:[url stringByAppendingString:k_webDAV] addFileName:serverPath];
+                
+                if (itemDto.isDirectory) {
+                    (void)[[NCManageDatabase sharedInstance] addDirectoryWithEncrypted:itemDto.isEncrypted favorite:itemDto.isFavorite ocId:itemDto.ocId permissions:itemDto.permissions serverUrl:[NSString stringWithFormat:@"%@/%@", serverUrl, fileName] account:account];
+                }
+                
+                isFolderEncrypted = [CCUtility isFolderEncrypted:serverUrl account:account];
+                
+                [metadatas addObject:[CCUtility trasformedOCFileToCCMetadata:itemDto fileName:itemDto.fileName serverUrl:serverUrl autoUploadFileName:autoUploadFileName autoUploadDirectory:autoUploadDirectory account:account isFolderEncrypted:isFolderEncrypted]];
             }
             
-            isFolderEncrypted = [CCUtility isFolderEncrypted:serverUrl account:account];
-            
-            [metadatas addObject:[CCUtility trasformedOCFileToCCMetadata:itemDto fileName:itemDto.fileName serverUrl:serverUrl autoUploadFileName:autoUploadFileName autoUploadDirectory:autoUploadDirectory account:account isFolderEncrypted:isFolderEncrypted]];
-        }
-        
-        completion(account, metadatas, nil, 0);
-        
+            dispatch_async(dispatch_get_main_queue(), ^{
+                completion(account, metadatas, nil, 0);
+            });
+        });
     } failureRequest:^(NSHTTPURLResponse *response, NSError *error, NSString *token, NSString *redirectedServer) {
         
         NSString *message;
@@ -2442,40 +2449,42 @@
             completion(account, nil, NSLocalizedString(@"Read Folder WebDAV : [items NULL] please fix", nil), k_CCErrorInternalError);
                 
         } else {
+            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                NSMutableArray *listTrash = [NSMutableArray new];
                 
-            NSMutableArray *listTrash = [NSMutableArray new];
-                
-            //OCFileDto *itemDtoFolder = [items objectAtIndex:0];
+                //OCFileDto *itemDtoFolder = [items objectAtIndex:0];
 
-            if ([items count] > 1) {
-                for (NSUInteger i=1; i < [items count]; i++) {
+                if ([items count] > 1) {
+                    for (NSUInteger i=1; i < [items count]; i++) {
                         
-                    OCFileDto *itemDto = [items objectAtIndex:i];
-                    tableTrash *trash = [tableTrash new];
+                        OCFileDto *itemDto = [items objectAtIndex:i];
+                        tableTrash *trash = [tableTrash new];
                         
-                    trash.account = account;
-                    trash.date = [NSDate dateWithTimeIntervalSince1970:itemDto.date];
-                    trash.directory = itemDto.isDirectory;
-                    trash.fileId = itemDto.fileId;
-                    trash.fileName = itemDto.fileName;
-                    NSArray *array = [itemDto.filePath componentsSeparatedByString:path];
-                    long len = [[array objectAtIndex:0] length];
-                    trash.filePath = [itemDto.filePath substringFromIndex:len];
-                    trash.hasPreview = itemDto.hasPreview;
-                    trash.size = itemDto.size;
-                    trash.trashbinFileName = itemDto.trashbinFileName;
-                    trash.trashbinOriginalLocation = itemDto.trashbinOriginalLocation;
-                    trash.trashbinDeletionTime = [NSDate dateWithTimeIntervalSince1970:itemDto.trashbinDeletionTime];
-
-                    [CCUtility insertTypeFileIconName:trash.trashbinFileName metadata:(tableMetadata *)trash];
-
-                    [listTrash addObject:trash];
+                        trash.account = account;
+                        trash.date = [NSDate dateWithTimeIntervalSince1970:itemDto.date];
+                        trash.directory = itemDto.isDirectory;
+                        trash.fileId = itemDto.fileId;
+                        trash.fileName = itemDto.fileName;
+                        NSArray *array = [itemDto.filePath componentsSeparatedByString:path];
+                        long len = [[array objectAtIndex:0] length];
+                        trash.filePath = [itemDto.filePath substringFromIndex:len];
+                        trash.hasPreview = itemDto.hasPreview;
+                        trash.size = itemDto.size;
+                        trash.trashbinFileName = itemDto.trashbinFileName;
+                        trash.trashbinOriginalLocation = itemDto.trashbinOriginalLocation;
+                        trash.trashbinDeletionTime = [NSDate dateWithTimeIntervalSince1970:itemDto.trashbinDeletionTime];
+
+                        [CCUtility insertTypeFileIconName:trash.trashbinFileName metadata:(tableMetadata *)trash];
+
+                        [listTrash addObject:trash];
+                    }
                 }
-            }
                 
-            completion(account, listTrash, nil, 0);
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    completion(account, listTrash, nil, 0);
+                });
+            });
         }
-        
     } failureRequest:^(NSHTTPURLResponse *response, NSError *error, NSString *redirectedServer) {
         
         NSString *message;

+ 1 - 1
iOSClient/Share/NCSharePaging.swift

@@ -102,7 +102,7 @@ extension NCSharePaging: PagingViewControllerDataSource {
             viewController.insets = UIEdgeInsets(top: height, left: 0, bottom: 0, right: 0)
             viewController.didSelectItemEnable = false
             viewController.filterFileId = metadata!.fileId
-            viewController.objectType = "shared"
+            viewController.objectType = "files"
             return viewController
         case 1:
             let viewController = UIStoryboard(name: "NCShare", bundle: nil).instantiateViewController(withIdentifier: "comments") as! NCShareComments