Replace patchNum compare with utility function
In preparation for implementation of in-app editing, the instances of
parseInt(patchNum) must be swapped out, as a patchNum may now be either
a number or a string.
This change adds the patchNumEquals function to gr-patch-set-behavior,
and uses it everywhere patchNum is compared.
Bug: Issue 4437
Change-Id: Ib1176508cd88d60c79e952b99dd5f57b994baa77
diff --git a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js
index 32e14d2..3d5654e 100644
--- a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js
+++ b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.js
@@ -553,9 +553,8 @@
},
_getRevision(change, patchNum) {
- const num = window.parseInt(patchNum, 10);
for (const rev of Object.values(change.revisions)) {
- if (rev._number === num) {
+ if (this.patchNumEquals(rev._number, patchNum)) {
return rev;
}
}
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
index f3c7cb1..b8aec60 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
@@ -360,7 +360,7 @@
},
_handlePatchChange(e) {
- this._changePatchNum(parseInt(e.target.value, 10), true);
+ this._changePatchNum(e.target.value, true);
},
_handleReplyTap(e) {
@@ -595,7 +595,7 @@
/**
* Change active patch to the provided patch num.
- * @param {number} patchNum the patchn number to be viewed.
+ * @param {number|string} patchNum the patchn number to be viewed.
* @param {boolean} opt_forceParams When set to true, the resulting URL will
* always include the patch range, even if the requested patchNum is
* known to be the latest.
@@ -609,7 +609,7 @@
} else {
currentPatchNum = this.computeLatestPatchNum(this._allPatchSets);
}
- if (patchNum === currentPatchNum &&
+ if (this.patchNumEquals(patchNum, currentPatchNum) &&
this._patchRange.basePatchNum === 'PARENT') {
Gerrit.Nav.navigateToChange(this._change);
return;
@@ -674,8 +674,8 @@
},
_computePatchInfoClass(patchNum, allPatchSets) {
- if (parseInt(patchNum, 10) ===
- this.computeLatestPatchNum(allPatchSets)) {
+ const latestNum = this.computeLatestPatchNum(allPatchSets);
+ if (this.patchNumEquals(patchNum, latestNum)) {
return '';
}
return 'patchInfo--oldPatchSet';
@@ -931,8 +931,9 @@
this._change = change;
if (!this._patchRange || !this._patchRange.patchNum ||
- this._patchRange.patchNum === currentRevision._number) {
- // CommitInfo.commit is optional, and may need patching.
+ this.patchNumEquals(this._patchRange.patchNum,
+ currentRevision._number)) {
+ // CommitInfo.commit is optional, and may need patching.
if (!currentRevision.commit.commit) {
currentRevision.commit.commit = latestRevisionSha;
}
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html
index fb5d88b..db0a7c2 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html
@@ -543,12 +543,12 @@
numEvents++;
if (numEvents == 1) {
assert.isTrue(navigateToChangeStub.lastCall.calledWithExactly(
- element._change, 1, 'PARENT'));
+ element._change, '1', 'PARENT'));
selectEl.nativeSelect.value = '3';
element.fire('change', {}, {node: selectEl.nativeSelect});
} else if (numEvents == 2) {
assert.isTrue(navigateToChangeStub.lastCall.calledWithExactly(
- element._change, 3, 'PARENT'));
+ element._change, '3', 'PARENT'));
done();
}
});
@@ -592,12 +592,12 @@
numEvents++;
if (numEvents == 1) {
assert.isTrue(navigateToChangeStub.lastCall.calledWithExactly(
- element._change, 1, 'PARENT'));
+ element._change, '1', 'PARENT'));
selectEl.nativeSelect.value = '3';
element.fire('change', {}, {node: selectEl.nativeSelect});
} else if (numEvents == 2) {
assert.isTrue(navigateToChangeStub.lastCall.calledWithExactly(
- element._change, 3, 'PARENT'));
+ element._change, '3', 'PARENT'));
done();
}
});
diff --git a/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog.html b/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog.html
index 18e958f..1d07cfe 100644
--- a/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog.html
+++ b/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog.html
@@ -14,8 +14,10 @@
limitations under the License.
-->
-<link rel="import" href="../../../behaviors/rest-client-behavior/rest-client-behavior.html">
<link rel="import" href="../../../bower_components/polymer/polymer.html">
+
+<link rel="import" href="../../../behaviors/gr-patch-set-behavior/gr-patch-set-behavior.html">
+<link rel="import" href="../../../behaviors/rest-client-behavior/rest-client-behavior.html">
<link rel="import" href="../../shared/gr-download-commands/gr-download-commands.html">
<link rel="import" href="../../../styles/shared-styles.html">
diff --git a/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog.js b/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog.js
index 01a24c5..66ba86f 100644
--- a/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog.js
+++ b/polygerrit-ui/app/elements/change/gr-download-dialog/gr-download-dialog.js
@@ -42,6 +42,7 @@
},
behaviors: [
+ Gerrit.PatchSetBehavior,
Gerrit.RESTClientBehavior,
],
@@ -63,10 +64,10 @@
_computeDownloadCommands(change, patchNum, _selectedScheme) {
let commandObj;
- for (const rev in change.revisions) {
- if (change.revisions[rev]._number === parseInt(patchNum, 10) &&
- change.revisions[rev].fetch.hasOwnProperty(_selectedScheme)) {
- commandObj = change.revisions[rev].fetch[_selectedScheme].commands;
+ for (const rev of Object.values(change.revisions || {})) {
+ if (this.patchNumEquals(rev._number, patchNum) &&
+ rev.fetch.hasOwnProperty(_selectedScheme)) {
+ commandObj = rev.fetch[_selectedScheme].commands;
break;
}
}
@@ -97,7 +98,7 @@
_computeDownloadFilename(change, patchNum, zip) {
let shortRev;
for (const rev in change.revisions) {
- if (change.revisions[rev]._number === parseInt(patchNum, 10)) {
+ if (this.patchNumEquals(change.revisions[rev]._number, patchNum)) {
shortRev = rev.substr(0, 7);
break;
}
@@ -112,7 +113,7 @@
_computeSchemes(change, patchNum) {
for (const rev of Object.values(change.revisions || {})) {
- if (rev._number === parseInt(patchNum, 10)) {
+ if (this.patchNumEquals(rev._number, patchNum)) {
const fetch = rev.fetch;
if (fetch) {
return Object.keys(fetch).sort();
diff --git a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.js b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.js
index e86c088..1e9ec31 100644
--- a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.js
+++ b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.js
@@ -305,7 +305,7 @@
getCommentsForPath(comments, patchNum, path) {
return (comments[path] || []).filter(c => {
- return parseInt(c.patch_set, 10) === parseInt(patchNum, 10);
+ return this.patchNumEquals(c.patch_set, patchNum);
});
},
diff --git a/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list.html b/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list.html
index 4fa3e2a..8c02e65 100644
--- a/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list.html
+++ b/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list.html
@@ -13,10 +13,11 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+<link rel="import" href="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../../../behaviors/base-url-behavior/base-url-behavior.html">
+<link rel="import" href="../../../behaviors/gr-patch-set-behavior/gr-patch-set-behavior.html">
<link rel="import" href="../../../behaviors/rest-client-behavior/rest-client-behavior.html">
-<link rel="import" href="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../../../styles/shared-styles.html">
diff --git a/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list.js b/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list.js
index 01d7e8a..df2a5ed 100644
--- a/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list.js
+++ b/polygerrit-ui/app/elements/change/gr-related-changes-list/gr-related-changes-list.js
@@ -63,6 +63,7 @@
behaviors: [
Gerrit.BaseUrlBehavior,
+ Gerrit.PatchSetBehavior,
Gerrit.RESTClientBehavior,
],
@@ -246,7 +247,7 @@
const connected = [];
let changeRevision;
for (const rev in change.revisions) {
- if (change.revisions[rev]._number == patchNum) {
+ if (this.patchNumEquals(change.revisions[rev]._number, patchNum)) {
changeRevision = rev;
}
}
diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router.html b/polygerrit-ui/app/elements/core/gr-router/gr-router.html
index d311a6b..f07daa5 100644
--- a/polygerrit-ui/app/elements/core/gr-router/gr-router.html
+++ b/polygerrit-ui/app/elements/core/gr-router/gr-router.html
@@ -13,9 +13,11 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<link rel="import" href="../../../behaviors/base-url-behavior/base-url-behavior.html">
-<link rel="import" href="../../../behaviors/gr-url-encoding-behavior.html">
<link rel="import" href="../../../bower_components/polymer/polymer.html">
+
+<link rel="import" href="../../../behaviors/base-url-behavior/base-url-behavior.html">
+<link rel="import" href="../../../behaviors/gr-patch-set-behavior/gr-patch-set-behavior.html">
+<link rel="import" href="../../../behaviors/gr-url-encoding-behavior.html">
<link rel="import" href="../../core/gr-navigation/gr-navigation.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../gr-reporting/gr-reporting.html">
diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router.js b/polygerrit-ui/app/elements/core/gr-router/gr-router.js
index cc51d32..d3bdb89 100644
--- a/polygerrit-ui/app/elements/core/gr-router/gr-router.js
+++ b/polygerrit-ui/app/elements/core/gr-router/gr-router.js
@@ -38,6 +38,7 @@
});
const encode = window.Gerrit.URLEncodingBehavior.encodeURL;
+ const patchNumEquals = window.Gerrit.PatchSetBehavior.patchNumEquals;
function startRouter(generateUrl) {
const base = window.Gerrit.BaseUrlBehavior.getBaseUrl();
@@ -302,7 +303,8 @@
});
const normalizePatchRangeParams = params => {
- if (params.basePatchNum && params.basePatchNum === params.patchNum) {
+ if (params.basePatchNum &&
+ patchNumEquals(params.basePatchNum, params.patchNum)) {
params.basePatchNum = null;
history.replaceState(null, null, generateUrl(params));
} else if (params.basePatchNum && !params.patchNum) {
@@ -416,6 +418,7 @@
Polymer({
is: 'gr-router',
+ behaviors: [Gerrit.PatchSetBehavior],
start() {
if (!app) { return; }
startRouter(this._generateUrl.bind(this));
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
index 70772b8..8bbb5c2 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
@@ -15,6 +15,7 @@
-->
<link rel="import" href="../../../bower_components/polymer/polymer.html">
+<link rel="import" href="../../../behaviors/gr-patch-set-behavior/gr-patch-set-behavior.html">
<link rel="import" href="../../../behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html">
<link rel="import" href="../../../behaviors/rest-client-behavior/rest-client-behavior.html">
<link rel="import" href="../../../bower_components/iron-dropdown/iron-dropdown.html">
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
index 168ec57..7181270 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
@@ -115,6 +115,7 @@
behaviors: [
Gerrit.KeyboardShortcutBehavior,
+ Gerrit.PatchSetBehavior,
Gerrit.RESTClientBehavior,
],
@@ -714,11 +715,10 @@
* @return {Promise} A promise that yields a comment map object.
*/
_loadCommentMap() {
- const filterByRange = comment => {
- const patchNum = comment.patch_set + '';
- return patchNum === this._patchRange.patchNum ||
- patchNum === this._patchRange.basePatchNum;
- };
+ const filterByRange = comment =>
+ this.patchNumEquals(comment.patch_set, this._patchRange.patchNum) ||
+ this.patchNumEquals(comment.patch_set,
+ this._patchRange.basePatchNum);
return Promise.all([
this.$.restAPI.getDiffComments(this._changeNum),
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.html b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.html
index 3cda49b..d8523cc 100644
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.html
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.html
@@ -14,6 +14,8 @@
limitations under the License.
-->
<link rel="import" href="../../../bower_components/polymer/polymer.html">
+
+<link rel="import" href="../../../behaviors/gr-patch-set-behavior/gr-patch-set-behavior.html">
<link rel="import" href="../../core/gr-reporting/gr-reporting.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../gr-rest-api-interface/gr-rest-api-interface.html">
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.js b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.js
index bcc764b..420d4af 100644
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.js
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.js
@@ -44,6 +44,8 @@
},
},
+ behaviors: [Gerrit.PatchSetBehavior],
+
Element,
EventType,
@@ -121,9 +123,9 @@
const change = detail.change;
const patchNum = detail.patchNum;
let revision;
- for (const rev in change.revisions) {
- if (change.revisions[rev]._number == patchNum) {
- revision = change.revisions[rev];
+ for (const rev of Object.values(change.revisions || {})) {
+ if (this.patchNumEquals(rev._number, patchNum)) {
+ revision = rev;
break;
}
}