Use Suggests CC rest API
In Reply dialog use CC for CC group and reviewers for reviewers group.
Change-Id: I2354a72f49988a411f528c11c207804735f14f46
diff --git a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.js b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.js
index 62446e4..dbb41f6 100644
--- a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.js
+++ b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.js
@@ -473,8 +473,8 @@
},
_getReviewerSuggestionsProvider(change) {
- const provider = new GrReviewerSuggestionsProvider(this.$.restAPI,
- change._number, true);
+ const provider = GrReviewerSuggestionsProvider.create(this.$.restAPI,
+ change._number, Gerrit.SUGGESTIONS_PROVIDERS_USERS_TYPES.ANY);
provider.init();
return provider;
},
diff --git a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.html b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.html
index 38c4a96..12698fc 100644
--- a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.html
+++ b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.html
@@ -184,7 +184,7 @@
allow-any-input
placeholder="Add CC..."
on-account-text-changed="_handleAccountTextEntry"
- suggestions-provider="[[_getReviewerSuggestionsProvider(change)]]">
+ suggestions-provider="[[_getCcSuggestionsProvider(change)]]">
</gr-account-list>
</div>
<gr-overlay
diff --git a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.js b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.js
index 6b7359f..bc25c61 100644
--- a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.js
+++ b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.js
@@ -897,8 +897,15 @@
},
_getReviewerSuggestionsProvider(change) {
- const provider = new GrReviewerSuggestionsProvider(this.$.restAPI,
- change._number, false);
+ const provider = GrReviewerSuggestionsProvider.create(this.$.restAPI,
+ change._number, Gerrit.SUGGESTIONS_PROVIDERS_USERS_TYPES.REVIEWER);
+ provider.init();
+ return provider;
+ },
+
+ _getCcSuggestionsProvider(change) {
+ const provider = GrReviewerSuggestionsProvider.create(this.$.restAPI,
+ change._number, Gerrit.SUGGESTIONS_PROVIDERS_USERS_TYPES.CC);
provider.init();
return provider;
},
diff --git a/polygerrit-ui/app/elements/shared/gr-rest-api-interface/gr-rest-api-interface.js b/polygerrit-ui/app/elements/shared/gr-rest-api-interface/gr-rest-api-interface.js
index 417fa23..b63acda 100644
--- a/polygerrit-ui/app/elements/shared/gr-rest-api-interface/gr-rest-api-interface.js
+++ b/polygerrit-ui/app/elements/shared/gr-rest-api-interface/gr-rest-api-interface.js
@@ -1293,9 +1293,24 @@
* @param {function(?Response, string=)=} opt_errFn
*/
getChangeSuggestedReviewers(changeNum, inputVal, opt_errFn) {
+ return this._getChangeSuggestedGroup('REVIEWER', changeNum, inputVal,
+ opt_errFn);
+ },
+
+ /**
+ * @param {number|string} changeNum
+ * @param {string} inputVal
+ * @param {function(?Response, string=)=} opt_errFn
+ */
+ getChangeSuggestedCCs(changeNum, inputVal, opt_errFn) {
+ return this._getChangeSuggestedGroup('CC', changeNum, inputVal,
+ opt_errFn);
+ },
+
+ _getChangeSuggestedGroup(reviewerState, changeNum, inputVal, opt_errFn) {
// More suggestions may obscure content underneath in the reply dialog,
// see issue 10793.
- const params = {n: 6};
+ const params = {'n': 6, 'reviewer-state': reviewerState};
if (inputVal) { params.q = inputVal; }
return this._getChangeURLAndFetch({
changeNum,
diff --git a/polygerrit-ui/app/scripts/gr-reviewer-suggestions-provider/gr-reviewer-suggestions-provider.js b/polygerrit-ui/app/scripts/gr-reviewer-suggestions-provider/gr-reviewer-suggestions-provider.js
index 7f1a9b1..c83e5a2 100644
--- a/polygerrit-ui/app/scripts/gr-reviewer-suggestions-provider/gr-reviewer-suggestions-provider.js
+++ b/polygerrit-ui/app/scripts/gr-reviewer-suggestions-provider/gr-reviewer-suggestions-provider.js
@@ -21,10 +21,36 @@
return;
}
+ /**
+ * @enum {string}
+ */
+ Gerrit.SUGGESTIONS_PROVIDERS_USERS_TYPES = {
+ REVIEWER: 'reviewers',
+ CC: 'ccs',
+ ANY: 'any',
+ };
+
class GrReviewerSuggestionsProvider {
- constructor(restAPI, changeNumber, allowAnyUser) {
+ static create(restApi, changeNumber, usersType) {
+ switch (usersType) {
+ case Gerrit.SUGGESTIONS_PROVIDERS_USERS_TYPES.REVIEWER:
+ return new GrReviewerSuggestionsProvider(restApi, changeNumber,
+ input => restApi.getChangeSuggestedReviewers(changeNumber, input));
+ case Gerrit.SUGGESTIONS_PROVIDERS_USERS_TYPES.CC:
+ return new GrReviewerSuggestionsProvider(restApi, changeNumber,
+ input => restApi.getChangeSuggestedCCs(changeNumber, input));
+ case Gerrit.SUGGESTIONS_PROVIDERS_USERS_TYPES.ANY:
+ return new GrReviewerSuggestionsProvider(restApi, changeNumber,
+ input => restApi.getSuggestedAccounts(
+ `cansee:${changeNumber} ${input}`));
+ default:
+ throw new Error(`Unknown users type: ${usersType}`);
+ }
+ }
+
+ constructor(restAPI, changeNumber, apiCall) {
this._changeNumber = changeNumber;
- this._allowAnyUser = allowAnyUser;
+ this._apiCall = apiCall;
this._restAPI = restAPI;
}
@@ -49,12 +75,9 @@
if (!this._initialized || !this._loggedIn) {
return Promise.resolve([]);
}
- const api = this._restAPI;
- const xhr = this._allowAnyUser ?
- api.getSuggestedAccounts(`cansee:${this._changeNumber} ${input}`) :
- api.getChangeSuggestedReviewers(this._changeNumber, input);
- return xhr.then(reviewers => (reviewers || []));
+ return this._apiCall(input)
+ .then(reviewers => (reviewers || []));
}
makeSuggestionItem(suggestion) {
diff --git a/polygerrit-ui/app/scripts/gr-reviewer-suggestions-provider/gr-reviewer-suggestions-provider_test.html b/polygerrit-ui/app/scripts/gr-reviewer-suggestions-provider/gr-reviewer-suggestions-provider_test.html
index bb73520..ca3c277 100644
--- a/polygerrit-ui/app/scripts/gr-reviewer-suggestions-provider/gr-reviewer-suggestions-provider_test.html
+++ b/polygerrit-ui/app/scripts/gr-reviewer-suggestions-provider/gr-reviewer-suggestions-provider_test.html
@@ -109,8 +109,8 @@
});
suite('allowAnyUser set to false', () => {
setup(done => {
- provider = new GrReviewerSuggestionsProvider(restAPI, change._number,
- false);
+ provider = GrReviewerSuggestionsProvider.create(restAPI, change._number,
+ Gerrit.SUGGESTIONS_PROVIDERS_USERS_TYPES.REVIEWER);
provider.init().then(done);
});
suite('stubbed values for _getReviewerSuggestions', () => {
@@ -235,8 +235,8 @@
suite('allowAnyUser set to true', () => {
setup(done => {
- provider = new GrReviewerSuggestionsProvider(restAPI, change._number,
- true);
+ provider = GrReviewerSuggestionsProvider.create(restAPI, change._number,
+ Gerrit.SUGGESTIONS_PROVIDERS_USERS_TYPES.ANY);
provider.init().then(done);
});