Use reviewers from ChangeInfo when rendering reviewers
We have been populating this map using logic on the server side for a while, but the UI was never updated to avoid duplicating this logic on the client. Change-Id: I3a40f9d9a7d726f9ab3522e62d484924337dc4b5
This commit is contained in:
parent
5abe28c4f9
commit
21545a6d9b
@ -19,6 +19,7 @@ import com.google.gerrit.client.rpc.NativeString;
|
||||
import com.google.gerrit.client.rpc.Natives;
|
||||
import com.google.gerrit.common.data.LabelValue;
|
||||
import com.google.gerrit.common.data.SubmitRecord;
|
||||
import com.google.gerrit.extensions.client.ReviewerState;
|
||||
import com.google.gerrit.extensions.client.SubmitType;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||
@ -29,10 +30,13 @@ import com.google.gwt.core.client.JsArrayString;
|
||||
import com.google.gwtjsonrpc.client.impl.ser.JavaSqlTimestamp_JsonSerializer;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.SortedSet;
|
||||
import java.util.TreeSet;
|
||||
@ -133,6 +137,23 @@ public class ChangeInfo extends JavaScriptObject {
|
||||
public final native JsArray<AccountInfo> removableReviewers()
|
||||
/*-{ return this.removable_reviewers; }-*/;
|
||||
|
||||
private final native NativeMap<JsArray<AccountInfo>> _reviewers()
|
||||
/*-{ return this.reviewers; }-*/;
|
||||
public final Map<ReviewerState, List<AccountInfo>> reviewers() {
|
||||
NativeMap<JsArray<AccountInfo>> reviewers = _reviewers();
|
||||
Map<ReviewerState, List<AccountInfo>> result = new HashMap<>();
|
||||
for (String k : reviewers.keySet()) {
|
||||
ReviewerState state = ReviewerState.valueOf(k.toUpperCase());
|
||||
List<AccountInfo> accounts = result.get(state);
|
||||
if (accounts == null) {
|
||||
accounts = new ArrayList<>();
|
||||
result.put(state, accounts);
|
||||
}
|
||||
accounts.addAll(Natives.asList(reviewers.get(k)));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public final native boolean hasActions() /*-{ return this.hasOwnProperty('actions') }-*/;
|
||||
public final native NativeMap<ActionInfo> actions() /*-{ return this.actions; }-*/;
|
||||
|
||||
|
@ -29,6 +29,7 @@ import com.google.gerrit.client.rpc.NativeMap;
|
||||
import com.google.gerrit.client.rpc.NativeString;
|
||||
import com.google.gerrit.client.rpc.Natives;
|
||||
import com.google.gerrit.client.ui.RemoteSuggestBox;
|
||||
import com.google.gerrit.extensions.client.ReviewerState;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.core.client.JavaScriptObject;
|
||||
@ -52,7 +53,9 @@ import com.google.gwt.user.client.ui.UIObject;
|
||||
import com.google.gwtexpui.safehtml.client.SafeHtml;
|
||||
import com.google.gwtexpui.safehtml.client.SafeHtmlBuilder;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@ -205,15 +208,9 @@ public class Reviewers extends Composite {
|
||||
}
|
||||
|
||||
private void display(ChangeInfo info) {
|
||||
Map<Integer, AccountInfo> r = new HashMap<>();
|
||||
Map<Integer, AccountInfo> cc = new HashMap<>();
|
||||
for (LabelInfo label : Natives.asList(info.allLabels().values())) {
|
||||
if (label.all() != null) {
|
||||
for (ApprovalInfo ai : Natives.asList(label.all())) {
|
||||
(ai.value() != 0 ? r : cc).put(ai._accountId(), ai);
|
||||
}
|
||||
}
|
||||
}
|
||||
Map<ReviewerState, List<AccountInfo>> reviewers = info.reviewers();
|
||||
Map<Integer, AccountInfo> r = byAccount(reviewers, ReviewerState.REVIEWER);
|
||||
Map<Integer, AccountInfo> cc = byAccount(reviewers, ReviewerState.CC);
|
||||
for (Integer i : r.keySet()) {
|
||||
cc.remove(i);
|
||||
}
|
||||
@ -237,6 +234,19 @@ public class Reviewers extends Composite {
|
||||
}
|
||||
}
|
||||
|
||||
private static Map<Integer, AccountInfo> byAccount(
|
||||
Map<ReviewerState, List<AccountInfo>> reviewers, ReviewerState state) {
|
||||
List<AccountInfo> accounts = reviewers.get(state);
|
||||
if (accounts == null) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
Map<Integer, AccountInfo> result = new HashMap<>();
|
||||
for (AccountInfo a : accounts) {
|
||||
result.put(a._accountId(), a);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static Map<Integer, VotableInfo> votable(ChangeInfo change) {
|
||||
Map<Integer, VotableInfo> d = new HashMap<>();
|
||||
for (String name : change.labels()) {
|
||||
|
Loading…
Reference in New Issue
Block a user