Use Suggests CC rest API

In Reply dialog use CC for CC group and reviewers for reviewers group.

Change-Id: I2354a72f49988a411f528c11c207804735f14f46
This commit is contained in:
Milutin Kristofic
2019-09-15 09:23:03 +02:00
parent b45ac07f09
commit ade40e079d
6 changed files with 62 additions and 17 deletions

View File

@@ -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;
},

View File

@@ -184,7 +184,7 @@ limitations under the License.
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

View File

@@ -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;
},

View File

@@ -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,

View File

@@ -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) {

View File

@@ -109,8 +109,8 @@ limitations under the License.
});
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 @@ limitations under the License.
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);
});