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];