Merge "Fix diffs with comments on start line 0" into stable-3.8
diff --git a/polygerrit-ui/app/elements/shared/gr-account-list/gr-account-list.ts b/polygerrit-ui/app/elements/shared/gr-account-list/gr-account-list.ts
index 8339df9..07209db 100644
--- a/polygerrit-ui/app/elements/shared/gr-account-list/gr-account-list.ts
+++ b/polygerrit-ui/app/elements/shared/gr-account-list/gr-account-list.ts
@@ -36,6 +36,7 @@
import {PaperInputElement} from '@polymer/paper-input/paper-input';
import {IronInputElement} from '@polymer/iron-input';
import {ReviewerState} from '../../../api/rest-api';
+import {repeat} from 'lit/directives/repeat.js';
const VALID_EMAIL_ALERT = 'Please input a valid email.';
const VALID_USER_GROUP_ALERT = 'Please input a valid user or group.';
@@ -186,7 +187,9 @@
override render() {
return html`<div class="list">
- ${this.accounts.map(
+ ${repeat(
+ this.accounts,
+ account => getUserId(account),
account => html`
<gr-account-chip
.account=${account}
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface-element.ts b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface-element.ts
index 386a166..46c759b 100644
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface-element.ts
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface-element.ts
@@ -7,6 +7,7 @@
import {
ChangeInfo,
LabelNameToValueMap,
+ PARENT,
ReviewInput,
RevisionInfo,
} from '../../../types/common';
@@ -98,20 +99,22 @@
return detail.info && detail.info.mergeable;
},
};
- const patchNum = detail.patchNum;
- const info = detail.info;
+ const {patchNum, info, basePatchNum} = detail;
let revision;
+ let baseRevision;
for (const rev of Object.values(change.revisions || {})) {
if (rev._number === patchNum) {
revision = rev;
- break;
+ }
+ if (rev._number === basePatchNum) {
+ baseRevision = rev;
}
}
for (const cb of this._getEventCallbacks(EventType.SHOW_CHANGE)) {
try {
- cb(change, revision, info);
+ cb(change, revision, info, baseRevision ?? PARENT);
} catch (err: unknown) {
this.reporting.error(
'GrJsApiInterface',
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-types.ts b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-types.ts
index a10beab..8e3a87d 100644
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-types.ts
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-types.ts
@@ -6,6 +6,7 @@
import {
ActionInfo,
ChangeInfo,
+ BasePatchSetNum,
PatchSetNum,
ReviewInput,
RevisionInfo,
@@ -17,6 +18,7 @@
export interface ShowChangeDetail {
change?: ParsedChangeInfo;
+ basePatchNum?: BasePatchSetNum;
patchNum?: PatchSetNum;
info: {mergeable: boolean | null};
}
diff --git a/polygerrit-ui/app/models/change/change-model.ts b/polygerrit-ui/app/models/change/change-model.ts
index 6d111aa..c7111f6 100644
--- a/polygerrit-ui/app/models/change/change-model.ts
+++ b/polygerrit-ui/app/models/change/change-model.ts
@@ -407,21 +407,24 @@
return combineLatest([
this.viewModel.childView$,
this.change$,
+ this.basePatchNum$,
this.patchNum$,
this.mergeable$,
])
.pipe(
filter(
- ([childView, change, patchNum, mergeable]) =>
+ ([childView, change, basePatchNum, patchNum, mergeable]) =>
childView === ChangeChildView.OVERVIEW &&
!!change &&
+ !!basePatchNum &&
!!patchNum &&
mergeable !== undefined
)
)
- .subscribe(([_, change, patchNum, mergeable]) => {
+ .subscribe(([_, change, basePatchNum, patchNum, mergeable]) => {
this.pluginLoader.jsApiService.handleShowChange({
change,
+ basePatchNum,
patchNum,
// `?? null` is for the TypeScript compiler only. We have a
// `mergeable !== undefined` filter above, so this cannot happen.
diff --git a/polygerrit-ui/app/models/change/change-model_test.ts b/polygerrit-ui/app/models/change/change-model_test.ts
index e5d2e36..dc7d9c3 100644
--- a/polygerrit-ui/app/models/change/change-model_test.ts
+++ b/polygerrit-ui/app/models/change/change-model_test.ts
@@ -222,6 +222,7 @@
});
test('fireShowChange', async () => {
+ await waitForLoadingStatus(LoadingStatus.NOT_LOADED);
const pluginLoader = testResolver(pluginLoaderToken);
const jsApiService = pluginLoader.jsApiService;
const showChangeStub = sinon.stub(jsApiService, 'handleShowChange');
@@ -239,6 +240,7 @@
const detail: ShowChangeDetail = showChangeStub.lastCall.firstArg;
assert.equal(detail.change?._number, createParsedChange()._number);
assert.equal(detail.patchNum, 1 as PatchSetNumber);
+ assert.equal(detail.basePatchNum, PARENT);
assert.equal(detail.info.mergeable, true);
});