diff --git a/ios/cloudmine-ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/cloudmine-ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/ios/cloudmine-ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/ios/src/Users/CMUser.h b/ios/ios/src/Users/CMUser.h index be2dd5bc..6bdf443f 100644 --- a/ios/ios/src/Users/CMUser.h +++ b/ios/ios/src/Users/CMUser.h @@ -627,6 +627,8 @@ typedef void (^CMUserFetchWithMetaCallback)(CMObjectFetchResponse *response); + (void)searchUsers:(NSString *)query options:(CMStoreOptions *)options callback:(CMUserFetchWithMetaCallback)callback; ++ (void)searchUsersWithIdentifiers:(NSArray*)usersIdentifiers callback:(CMUserFetchCallback)callback; + /** * Asynchronously search all profiles of users of this app for matching fields. This will download the profiles of all matching users of your app, and is useful for displaying * and filtering lists of people to share with or running analytics on your users yourself. On completion, the callback block will be called with an array diff --git a/ios/ios/src/Users/CMUser.m b/ios/ios/src/Users/CMUser.m index 6f7b01ca..76adb599 100644 --- a/ios/ios/src/Users/CMUser.m +++ b/ios/ios/src/Users/CMUser.m @@ -769,6 +769,15 @@ + (void)searchUsers:(NSString *)query callback:(CMUserFetchCallback)callback { }]; } ++ (void)searchUsersWithIdentifiers:(NSArray*)usersIdentifiers callback:(CMUserFetchCallback)callback { + NSParameterAssert(callback); + [[CMWebService sharedWebService] searchUsersWithUsersIdentifiers:usersIdentifiers callback:^(NSDictionary *results, NSDictionary *errors, NSNumber *count) { + NSArray *users = [CMObjectDecoder decodeObjects:results]; + [self cacheMultipleUsers:users]; + callback(users, errors); + }]; +} + + (void)userWithIdentifier:(NSString *)identifier callback:(CMUserFetchCallback)callback { NSParameterAssert(callback); diff --git a/ios/ios/src/Web Services/CMWebService.h b/ios/ios/src/Web Services/CMWebService.h index 688cabd7..85173d36 100644 --- a/ios/ios/src/Web Services/CMWebService.h +++ b/ios/ios/src/Web Services/CMWebService.h @@ -560,6 +560,8 @@ typedef void (^CMWebServiceResultCallback)(id responseBody, NSError *errors, NSU */ - (void)searchUsers:(NSString *)query callback:(CMWebServiceUserFetchSuccessCallback)callback; +- (void)searchUsersWithUsersIdentifiers:(NSArray*)identifiersList callback:(CMWebServiceUserFetchSuccessCallback)callback; + - (void)getUsersWithIdentifier:(NSString *)identifier query:(NSString *)query diff --git a/ios/ios/src/Web Services/CMWebService.m b/ios/ios/src/Web Services/CMWebService.m index 00b1d4b2..1fc59dbf 100644 --- a/ios/ios/src/Web Services/CMWebService.m +++ b/ios/ios/src/Web Services/CMWebService.m @@ -1222,6 +1222,7 @@ - (void)resetForgottenPasswordForUser:(CMUser *)user callback:(CMWebServiceUserA - (void)getAllUsersWithCallback:(CMWebServiceUserFetchSuccessCallback)callback { NSMutableURLRequest *request = [self constructHTTPRequestWithVerb:@"GET" URL:[self constructAccountUrlWithUserIdentifier:nil + usersIdentifiers:nil function:nil paging:nil sorting:nil @@ -1229,6 +1230,7 @@ - (void)getAllUsersWithCallback:(CMWebServiceUserFetchSuccessCallback)callback { appSecret:_appSecret binaryData:NO user:nil]; + [self executeUserProfileFetchRequest:request callback:callback]; } @@ -1237,6 +1239,7 @@ - (void)getUserProfileWithIdentifier:(NSString *)identifier callback:(CMWebServiceUserFetchSuccessCallback)callback { NSMutableURLRequest *request = [self constructHTTPRequestWithVerb:@"GET" URL:[self constructAccountUrlWithUserIdentifier:identifier + usersIdentifiers:nil function:nil paging:nil sorting:nil @@ -1250,6 +1253,7 @@ - (void)getUserProfileWithIdentifier:(NSString *)identifier - (void)searchUsers:(NSString *)query callback:(CMWebServiceUserFetchSuccessCallback)callback { NSMutableURLRequest *request = [self constructHTTPRequestWithVerb:@"GET" URL:[self constructAccountUrlWithUserIdentifier:nil + usersIdentifiers:nil function:nil paging:nil sorting:nil @@ -1260,6 +1264,20 @@ - (void)searchUsers:(NSString *)query callback:(CMWebServiceUserFetchSuccessCall [self executeUserProfileFetchRequest:request callback:callback]; } +- (void)searchUsersWithUsersIdentifiers:(NSArray *)identifiersList callback:(CMWebServiceUserFetchSuccessCallback)callback { + NSMutableURLRequest *request = [self constructHTTPRequestWithVerb:@"GET" + URL:[self constructAccountUrlWithUserIdentifier:nil + usersIdentifiers:identifiersList + function:nil + paging:nil + sorting:nil + query:nil] + appSecret:_appSecret + binaryData:NO + user:nil]; + [self executeUserProfileFetchRequest:request callback:callback]; +} + - (void)getUsersWithIdentifier:(NSString *)identifier query:(NSString *)query ServerSideFunction:(CMServerFunction *)function @@ -1271,6 +1289,7 @@ - (void)getUsersWithIdentifier:(NSString *)identifier NSMutableURLRequest *request = [self constructHTTPRequestWithVerb:@"GET" URL:[self constructAccountUrlWithUserIdentifier:identifier + usersIdentifiers:nil function:function paging:paging sorting:sorting @@ -1283,6 +1302,8 @@ - (void)getUsersWithIdentifier:(NSString *)identifier [self executeUserProfileFetchRequestWithMeta:request callback:callback]; } + + #pragma - Request queueing and execution - (void)executeUserProfileFetchRequestWithMeta:(NSMutableURLRequest *)request @@ -2259,6 +2280,7 @@ - (NSURL *)constructDataUrlAtUserLevel:(BOOL)atUserLevel } - (NSURL *)constructAccountUrlWithUserIdentifier:(NSString *)userId + usersIdentifiers:(NSArray *)usersIdentifiers function:(CMServerFunction *)function paging:(CMPagingDescriptor *)paging sorting:(CMSortDescriptor *)sorting @@ -2270,6 +2292,10 @@ - (NSURL *)constructAccountUrlWithUserIdentifier:(NSString *)userId } else if (query) { url = [url URLByAppendingPathComponent:@"search"]; url = [url URLByAppendingAndEncodingQueryParameter:@"p" andValue:query]; + } else if (usersIdentifiers) { + NSString * userIdentifiersQuery = [usersIdentifiers componentsJoinedByString:@","]; + url = [url URLByAppendingPathComponent:@"/"]; + url = [url URLByAppendingAndEncodingQueryParameter:@"ids" andValue:userIdentifiersQuery]; } NSMutableArray *queryComponents = [NSMutableArray array];