For related changes do not rely on current revision being returned
In order to display the related changes we need to know the current revision. Although the current revision is requested it can happen that it is not returned by the server. In this case the UI failed to display the related changes for that tab (it showed the progress bar and the 'Working...' label never disappeared). Fix the code so that we can handle changes for which the current revision is not set. These changes will simply be ignored. Ie465a182267c39d7fed07921c2271fa5544a8ed2 is an example for a change which doesn't return a current revision for me although I requested it. For Id20e567e5c5d5b3d851ca5cda9bde01ac01c9967 it can be seen how the "Conflicts With" tab cannot display the conflicting changes due to that change. Change-Id: Icf32ce8df213beb7f15be1b318be025c7cc8e872 Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
@@ -105,10 +105,10 @@ class RelatedChanges extends TabPanel {
|
||||
new AsyncCallback<ChangeList>() {
|
||||
@Override
|
||||
public void onSuccess(ChangeList result) {
|
||||
if (result.length() > 0) {
|
||||
getTab().setTitle(Resources.M.cherryPicks(result.length()));
|
||||
getTab().setChanges(info.project(), revision,
|
||||
convertChangeList(result));
|
||||
JsArray<ChangeAndCommit> changes = convertChangeList(result);
|
||||
if (changes.length() > 0) {
|
||||
getTab().setTitle(Resources.M.cherryPicks(changes.length()));
|
||||
getTab().setChanges(info.project(), revision, changes);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,10 +141,10 @@ class RelatedChanges extends TabPanel {
|
||||
new AsyncCallback<ChangeList>() {
|
||||
@Override
|
||||
public void onSuccess(ChangeList result) {
|
||||
if (result.length() > 0) {
|
||||
getTab().setTitle(Resources.M.sameTopic(result.length()));
|
||||
getTab().setChanges(info.project(), revision,
|
||||
convertChangeList(result));
|
||||
JsArray<ChangeAndCommit> changes = convertChangeList(result);
|
||||
if (changes.length() > 0) {
|
||||
getTab().setTitle(Resources.M.sameTopic(changes.length()));
|
||||
getTab().setChanges(info.project(), revision, changes);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -196,10 +196,10 @@ class RelatedChanges extends TabPanel {
|
||||
new AsyncCallback<ChangeList>() {
|
||||
@Override
|
||||
public void onSuccess(ChangeList result) {
|
||||
if (result.length() > 0) {
|
||||
getTab().setTitle(Resources.M.conflictingChanges(result.length()));
|
||||
getTab().setChanges(info.project(), revision,
|
||||
convertChangeList(result));
|
||||
JsArray<ChangeAndCommit> changes = convertChangeList(result);
|
||||
if (changes.length() > 0) {
|
||||
getTab().setTitle(Resources.M.conflictingChanges(changes.length()));
|
||||
getTab().setChanges(info.project(), revision, changes);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -231,14 +231,16 @@ class RelatedChanges extends TabPanel {
|
||||
private JsArray<ChangeAndCommit> convertChangeList(ChangeList l) {
|
||||
JsArray<ChangeAndCommit> arr = JavaScriptObject.createArray().cast();
|
||||
for (ChangeInfo i : Natives.asList(l)) {
|
||||
RevisionInfo currentRevision = i.revision(i.current_revision());
|
||||
ChangeAndCommit c = ChangeAndCommit.create();
|
||||
c.set_id(i.id());
|
||||
c.set_commit(currentRevision.commit());
|
||||
c.set_change_number(i.legacy_id().get());
|
||||
c.set_revision_number(currentRevision._number());
|
||||
c.set_branch(i.branch());
|
||||
arr.push(c);
|
||||
if (i.current_revision() != null && i.revisions().containsKey(i.current_revision())) {
|
||||
RevisionInfo currentRevision = i.revision(i.current_revision());
|
||||
ChangeAndCommit c = ChangeAndCommit.create();
|
||||
c.set_id(i.id());
|
||||
c.set_commit(currentRevision.commit());
|
||||
c.set_change_number(i.legacy_id().get());
|
||||
c.set_revision_number(currentRevision._number());
|
||||
c.set_branch(i.branch());
|
||||
arr.push(c);
|
||||
}
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user