Merge "Use single member REST calls when updating a group"
This commit is contained in:
@@ -39,24 +39,46 @@ public class GroupApi {
|
||||
|
||||
/** Add members to a group. */
|
||||
public static void addMembers(AccountGroup.UUID groupUUID,
|
||||
Set<String> members, AsyncCallback<NativeList<MemberInfo>> cb) {
|
||||
RestApi call = new RestApi(membersBase(groupUUID));
|
||||
MemberInput input = MemberInput.create();
|
||||
for (String member : members) {
|
||||
input.add_member(member);
|
||||
Set<String> members,
|
||||
final AsyncCallback<NativeList<MemberInfo>> cb) {
|
||||
if (members.size() == 1) {
|
||||
addMember(groupUUID,
|
||||
members.iterator().next(),
|
||||
new AsyncCallback<MemberInfo>() {
|
||||
@Override
|
||||
public void onSuccess(MemberInfo result) {
|
||||
cb.onSuccess(NativeList.of(result));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
cb.onFailure(caught);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
RestApi call = new RestApi(membersBase(groupUUID));
|
||||
MemberInput input = MemberInput.create();
|
||||
for (String member : members) {
|
||||
input.add_member(member);
|
||||
}
|
||||
call.data(input).put(cb);
|
||||
}
|
||||
call.data(input).put(cb);
|
||||
}
|
||||
|
||||
/** Remove members from a group. */
|
||||
public static void removeMembers(AccountGroup.UUID groupUUID,
|
||||
Set<Account.Id> ids, AsyncCallback<VoidResult> cb) {
|
||||
RestApi call = new RestApi(membersBase(groupUUID));
|
||||
MemberInput input = MemberInput.create();
|
||||
for (Account.Id id : ids) {
|
||||
input.add_member(id.toString());
|
||||
if (ids.size() == 1) {
|
||||
Account.Id u = ids.iterator().next();
|
||||
new RestApi(membersBase(groupUUID) + "/" + u).delete(cb);
|
||||
} else {
|
||||
RestApi call = new RestApi(membersBase(groupUUID));
|
||||
MemberInput input = MemberInput.create();
|
||||
for (Account.Id id : ids) {
|
||||
input.add_member(id.toString());
|
||||
}
|
||||
call.data(input).delete(cb);
|
||||
}
|
||||
call.data(input).delete(cb);
|
||||
}
|
||||
|
||||
private static String membersBase(AccountGroup.UUID groupUUID) {
|
||||
|
@@ -21,6 +21,12 @@ import java.util.List;
|
||||
|
||||
/** A read-only list of native JavaScript objects stored in a JSON array. */
|
||||
public class NativeList<T extends JavaScriptObject> extends JavaScriptObject {
|
||||
public static <T extends JavaScriptObject> NativeList<T> of(T a) {
|
||||
NativeList<T> list = createArray().cast();
|
||||
list.add(a);
|
||||
return list;
|
||||
}
|
||||
|
||||
protected NativeList() {
|
||||
}
|
||||
|
||||
@@ -51,5 +57,6 @@ public class NativeList<T extends JavaScriptObject> extends JavaScriptObject {
|
||||
|
||||
public final native int size() /*-{ return this.length; }-*/;
|
||||
public final native T get(int i) /*-{ return this[i]; }-*/;
|
||||
public final native void add(T v) /*-{ this.push(v); }-*/;
|
||||
private final native void set0(int i, T v) /*-{ this[i] = v; }-*/;
|
||||
}
|
||||
|
Reference in New Issue
Block a user