InlineEdit: Fix diff against revision feature
Since Iccbe4868 diff against revision for both review and edit mode was
broken. Call of REST endpoint to retrieve file list was erroneously
skipped for change edits. It was done to skip drafts and comments
retrieval. Which is safe thing to skip because comments cannot be added
and published for change edits.
Note, that diff against revsion feature is preserved in both modes:
review mode and edit mode. It was discussed in this thread: [1].
[1] https://groups.google.com/d/topic/repo-discuss/20ge_59v3WI/discussion
Bug: Issue 3142
Change-Id: I567a51ed5dca7774ef886b4c9953b14cafa84c46
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java
index e9fd4ba..88f8408 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java
@@ -770,16 +770,11 @@
final RevisionInfo b = resolveRevisionOrPatchSetId(info, base, null);
CallbackGroup group = new CallbackGroup();
+ Timestamp lastReply = myLastReply(info);
if (rev.is_edit()) {
- NativeMap<JsArray<CommentInfo>> emptyComment = NativeMap.create();
- files.set(
- b != null ? new PatchSet.Id(changeId, b._number()) : null,
- new PatchSet.Id(changeId, rev._number()),
- style, reply, fileTableMode, edit != null);
- files.setValue(info.edit().files(), myLastReply(info), emptyComment,
- emptyComment);
+ loadFileList(b, rev, lastReply, group, null, null);
} else {
- loadDiff(b, rev, myLastReply(info), group);
+ loadDiff(b, rev, lastReply, group);
}
loadCommit(rev, group);
@@ -819,23 +814,7 @@
final Timestamp myLastReply, CallbackGroup group) {
final List<NativeMap<JsArray<CommentInfo>>> comments = loadComments(rev, group);
final List<NativeMap<JsArray<CommentInfo>>> drafts = loadDrafts(rev, group);
- DiffApi.list(changeId.get(),
- base != null ? base.name() : null,
- rev.name(),
- group.add(new AsyncCallback<NativeMap<FileInfo>>() {
- @Override
- public void onSuccess(NativeMap<FileInfo> m) {
- files.set(
- base != null ? new PatchSet.Id(changeId, base._number()) : null,
- new PatchSet.Id(changeId, rev._number()),
- style, reply, fileTableMode, edit != null);
- files.setValue(m, myLastReply, comments.get(0), drafts.get(0));
- }
-
- @Override
- public void onFailure(Throwable caught) {
- }
- }));
+ loadFileList(base, rev, myLastReply, group, comments, drafts);
if (Gerrit.isSignedIn() && fileTableMode == FileTable.Mode.REVIEW) {
ChangeApi.revision(changeId.get(), rev.name())
@@ -854,6 +833,31 @@
}
}
+ private void loadFileList(final RevisionInfo base, final RevisionInfo rev,
+ final Timestamp myLastReply, CallbackGroup group,
+ final List<NativeMap<JsArray<CommentInfo>>> comments,
+ final List<NativeMap<JsArray<CommentInfo>>> drafts) {
+ DiffApi.list(changeId.get(),
+ base != null ? base.name() : null,
+ rev.name(),
+ group.add(new AsyncCallback<NativeMap<FileInfo>>() {
+ @Override
+ public void onSuccess(NativeMap<FileInfo> m) {
+ files.set(
+ base != null ? new PatchSet.Id(changeId, base._number()) : null,
+ new PatchSet.Id(changeId, rev._number()),
+ style, reply, fileTableMode, edit != null);
+ files.setValue(m, myLastReply,
+ comments != null ? comments.get(0) : null,
+ drafts != null ? drafts.get(0) : null);
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ }
+ }));
+ }
+
private List<NativeMap<JsArray<CommentInfo>>> loadComments(
RevisionInfo rev, CallbackGroup group) {
final int id = rev._number();
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/FileTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/FileTable.java
index 5dab3ac..d0038e3 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/FileTable.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/FileTable.java
@@ -29,6 +29,7 @@
import com.google.gerrit.client.rpc.Natives;
import com.google.gerrit.client.rpc.RestApi;
import com.google.gerrit.client.ui.NavigationTable;
+import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.PageLinks;
import com.google.gerrit.reviewdb.client.Patch;
import com.google.gerrit.reviewdb.client.Patch.ChangeType;
@@ -202,8 +203,8 @@
void setValue(NativeMap<FileInfo> fileMap,
Timestamp myLastReply,
- NativeMap<JsArray<CommentInfo>> comments,
- NativeMap<JsArray<CommentInfo>> drafts) {
+ @Nullable NativeMap<JsArray<CommentInfo>> comments,
+ @Nullable NativeMap<JsArray<CommentInfo>> drafts) {
JsArray<FileInfo> list = fileMap.values();
FileInfo.sortFileInfoByPath(list);
@@ -453,8 +454,8 @@
private DisplayCommand(NativeMap<FileInfo> map,
JsArray<FileInfo> list,
Timestamp myLastReply,
- NativeMap<JsArray<CommentInfo>> comments,
- NativeMap<JsArray<CommentInfo>> drafts) {
+ @Nullable NativeMap<JsArray<CommentInfo>> comments,
+ @Nullable NativeMap<JsArray<CommentInfo>> drafts) {
this.myTable = new MyTable(map, list);
this.list = list;
this.myLastReply = myLastReply;
@@ -707,7 +708,10 @@
}
private JsArray<CommentInfo> get(String p, NativeMap<JsArray<CommentInfo>> m) {
- JsArray<CommentInfo> r = m.get(p);
+ JsArray<CommentInfo> r = null;
+ if (m != null) {
+ r = m.get(p);
+ }
if (r == null) {
r = JsArray.createArray().cast();
}