Merge "Revert "Do not recreate change view if patchset or changeNum don't change""
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
index 4b2100a..a0fc175 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
@@ -1187,8 +1187,6 @@
if (value.basePatchNum === undefined)
value.basePatchNum = ParentPatchSetNum;
- if (value.patchNum === undefined && this._allPatchSets)
- value.patchNum = computeLatestPatchNum(this._allPatchSets);
const patchChanged =
this._patchRange &&
@@ -1196,7 +1194,7 @@
(this._patchRange.patchNum !== value.patchNum ||
this._patchRange.basePatchNum !== value.basePatchNum);
- const rightPatchNumChanged =
+ let rightPatchNumChanged =
this._patchRange &&
value.patchNum !== undefined &&
this._patchRange.patchNum !== value.patchNum;
@@ -1206,6 +1204,7 @@
basePatchNum: value.basePatchNum,
};
+ this.$.fileList.collapseAllDiffs();
this._patchRange = patchRange;
this.scrollCommentId = value.commentId;
@@ -1216,22 +1215,16 @@
// If the change has already been loaded and the parameter change is only
// in the patch range, then don't do a full reload.
if (this._changeNum !== undefined && patchChanged && patchKnown) {
- this.$.fileList.collapseAllDiffs();
+ if (!patchRange.patchNum) {
+ patchRange.patchNum = computeLatestPatchNum(this._allPatchSets);
+ rightPatchNumChanged = true;
+ }
this._reloadPatchNumDependentResources(rightPatchNumChanged).then(() => {
this._sendShowChangeEvent();
});
return;
}
- // If a new change is loaded, then isChangeObsolete() ensures a completely
- // new view is created and we will have this._changeNum to be undefined.
- // If there is no change in patchset or changeNum, such as when user goes
- // to the diff view and then comes back to change page then there is no need
- // to reload anything and we render the change view component as is.
- if (this._changeNum === value.changeNum) return;
-
- this.$.fileList.collapseAllDiffs();
-
this._initialLoadComplete = false;
this._changeNum = value.changeNum;
this.loadData(true).then(() => {
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts
index bf3cac1..6b63000 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.ts
@@ -555,7 +555,6 @@
const queryMap = new Map<string, string>();
queryMap.set('tab', PrimaryTab.FINDINGS);
// view is required
- element._changeNum = undefined;
element.params = {
...createAppElementChangeViewParams(),
...element.params,
@@ -1346,7 +1345,7 @@
const reloadPatchDependentStub = sinon
.stub(element, '_reloadPatchNumDependentResources')
.callsFake(() => Promise.resolve([undefined, undefined, undefined]));
- await flush();
+ flush();
const collapseStub = sinon.stub(element.$.fileList, 'collapseAllDiffs');
const value: AppElementChangeViewParams = {
@@ -1354,12 +1353,9 @@
view: GerritView.CHANGE,
patchNum: 1 as RevisionPatchSetNum,
};
- // change is already loaded
- assert.isOk(element._changeNum);
element.params = value;
await flush();
- // Reload is not triggered
- assert.isFalse(reloadStub.called);
+ assert.isTrue(reloadStub.calledOnce);
element._initialLoadComplete = true;
element._change = {
@@ -1374,9 +1370,9 @@
value.patchNum = 2 as RevisionPatchSetNum;
element.params = {...value};
await flush();
- assert.isFalse(reloadStub.called);
+ assert.isFalse(reloadStub.calledTwice);
assert.isTrue(reloadPatchDependentStub.calledOnce);
- assert.isTrue(collapseStub.calledOnce);
+ assert.isTrue(collapseStub.calledTwice);
});
test('reload ported comments when patchNum changes', async () => {
@@ -1414,7 +1410,7 @@
assert.isTrue(reloadPortedCommentsStub.calledOnce);
});
- test('do not reload entire page when patchRange doesnt change', async () => {
+ test('reload entire page when patchRange doesnt change', async () => {
const reloadStub = sinon
.stub(element, 'loadData')
.callsFake(() => Promise.resolve());
@@ -1422,15 +1418,13 @@
const value: AppElementChangeViewParams =
createAppElementChangeViewParams();
element.params = value;
- // change already loaded
- assert.isOk(element._changeNum);
await flush();
- assert.isFalse(reloadStub.calledOnce);
+ assert.isTrue(reloadStub.calledOnce);
element._initialLoadComplete = true;
element.params = {...value};
await flush();
- assert.isFalse(reloadStub.calledTwice);
- assert.isFalse(collapseStub.calledTwice);
+ assert.isTrue(reloadStub.calledTwice);
+ assert.isTrue(collapseStub.calledTwice);
});
test('do not handle new change numbers', async () => {
@@ -2303,8 +2297,6 @@
appContext.reportingService,
'changeFullyLoaded'
);
- // reset so reload is triggered
- element._changeNum = undefined;
element.params = {
...createAppElementChangeViewParams(),
changeNum: TEST_NUMERIC_CHANGE_ID,