Add getDiff() method to gr-rest-api-interface
+ Replace use of gr-ajax for retrieving the diff in gr-diff.
+ Add opt_params to fetchJSON so that query parameters can be
passed.
Change-Id: Iaa77c4082d6e83099e23f49205d859a5c938dd31
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.html b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.html
index 21ee076..a1a5c02 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.html
@@ -20,6 +20,7 @@
<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-overlay/gr-overlay.html">
<link rel="import" href="../../shared/gr-request/gr-request.html">
+<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../gr-diff-preferences/gr-diff-preferences.html">
<link rel="import" href="../gr-diff-side/gr-diff-side.html">
@@ -57,11 +58,6 @@
border-right: 1px solid #ddd;
}
</style>
- <gr-ajax id="diffXHR"
- url="[[_computeDiffPath(changeNum, patchRange.patchNum, path)]]"
- params="[[_computeDiffQueryParams(patchRange.basePatchNum)]]"
- last-response="{{_diffResponse}}"
- loading="{{_loading}}"></gr-ajax>
<gr-ajax id="baseCommentsXHR"
url="[[_computeCommentsPath(changeNum, patchRange.basePatchNum)]]"></gr-ajax>
<gr-ajax id="commentsXHR"
@@ -118,6 +114,7 @@
on-remove-thread="_handleRemoveThread"></gr-diff-side>
</div>
</div>
+ <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
</template>
<script src="gr-diff.js"></script>
</dom-module>
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
index 485e2cc..f91785d 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
@@ -126,7 +126,8 @@
this.$.rightDiff.scrollToPreviousCommentThread();
},
- reload: function(changeNum, patchRange, path) {
+ reload: function() {
+ this._loading = true;
// If a diff takes a considerable amount of time to render, the previous
// diff can end up showing up while the DOM is constructed. Clear the
// content on a reload to prevent this.
@@ -135,9 +136,17 @@
rightSide: [],
};
+ var diffLoaded = this.$.restAPI.getDiff(
+ this.changeNum,
+ this.patchRange.basePatchNum,
+ this.patchRange.patchNum,
+ this.path).then(function(diff) {
+ this._diffResponse = diff;
+ }.bind(this));
+
var promises = [
this._prefsReady,
- this.$.diffXHR.generateRequest().completes
+ diffLoaded,
];
var basePatchNum = this.patchRange.basePatchNum;
@@ -146,11 +155,13 @@
promises.push(this._getCommentsAndDrafts(basePatchNum, app.loggedIn));
this._diffRequestsPromise = Promise.all(promises).then(function() {
this._render();
+ this._loading = false;
}.bind(this)).catch(function(err) {
+ this._loading = false;
alert('Oops. Something went wrong. Check the console and bug the ' +
'PolyGerrit team for assistance.');
throw err;
- });
+ }.bind(this));
}.bind(this));
},
@@ -225,11 +236,6 @@
return Promise.all(promises);
},
- _computeDiffPath: function(changeNum, patchNum, path) {
- return this.changeBaseURL(changeNum, patchNum) + '/files/' +
- encodeURIComponent(path) + '/diff';
- },
-
_computeCommentsPath: function(changeNum, patchNum) {
return this.changeBaseURL(changeNum, patchNum) + '/comments';
},
@@ -238,17 +244,6 @@
return this.changeBaseURL(changeNum, patchNum) + '/drafts';
},
- _computeDiffQueryParams: function(basePatchNum) {
- var params = {
- context: 'ALL',
- intraline: null
- };
- if (basePatchNum != 'PARENT') {
- params.base = basePatchNum;
- }
- return params;
- },
-
_handlePrefsTap: function(e) {
e.preventDefault();
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html
index 9a8cb81..c7f12e6 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html
@@ -36,6 +36,7 @@
suite('gr-diff tests', function() {
var element;
var server;
+ var getDiffStub;
setup(function() {
element = fixture('basic');
@@ -46,56 +47,50 @@
tab_size: 8,
};
+ getDiffStub = sinon.stub(element.$.restAPI, 'getDiff', function() {
+ return Promise.resolve({
+ change_type: 'MODIFIED',
+ content: [
+ {
+ ab: [
+ '<!DOCTYPE html>',
+ '<meta charset="utf-8">',
+ '<title>My great page</title>',
+ '<style>',
+ ' *,',
+ ' *:before,',
+ ' *:after {',
+ ' box-sizing: border-box;',
+ ' }',
+ '</style>',
+ '<header>',
+ ]
+ },
+ {
+ a: [
+ ' Welcome ',
+ ' to the wooorld of tomorrow!',
+ ],
+ b: [
+ ' Hello, world!',
+ ],
+ },
+ {
+ ab: [
+ '</header>',
+ '<body>',
+ 'Leela: This is the only place the ship can’t hear us, so ',
+ 'everyone pretend to shower.',
+ 'Fry: Same as every day. Got it.',
+ ]
+ },
+ ]
+ });
+ });
+
server = sinon.fakeServer.create();
server.respondWith(
'GET',
- /\/changes\/42\/revisions\/(1|2)\/files\/sieve\.go\/diff(.*)/,
- [
- 200,
- {'Content-Type': 'application/json'},
- ')]}\'\n' +
- JSON.stringify({
- change_type: 'MODIFIED',
- content: [
- {
- ab: [
- '<!DOCTYPE html>',
- '<meta charset="utf-8">',
- '<title>My great page</title>',
- '<style>',
- ' *,',
- ' *:before,',
- ' *:after {',
- ' box-sizing: border-box;',
- ' }',
- '</style>',
- '<header>',
- ]
- },
- {
- a: [
- ' Welcome ',
- ' to the wooorld of tomorrow!',
- ],
- b: [
- ' Hello, world!',
- ],
- },
- {
- ab: [
- '</header>',
- '<body>',
- 'Leela: This is the only place the ship can’t hear us, so ',
- 'everyone pretend to shower.',
- 'Fry: Same as every day. Got it.',
- ]
- },
- ]
- }),
- ]
- );
- server.respondWith(
- 'GET',
'/changes/42/revisions/1/comments',
[
200,