Don't suggest inactive accounts
When, for example, adding accounts to a group the drop down list would also suggest inactive accounts. Exclude the inactive accounts from the suggestion. NOTE: suggesting of reviewers doesn't have this issue as this is a different code. Ideally, suggesting accounts and suggesting reviewers should be refactored to use the same suggestion algorithm. However, this would be a larger change and better suited for the master branch. Change-Id: I6bd22739c326a77dbf6fc3f36ee245d9e6939e34
This commit is contained in:
@@ -45,6 +45,7 @@ class SuggestAccounts implements RestReadView<TopLevelResource> {
|
|||||||
|
|
||||||
private final AccountControl accountControl;
|
private final AccountControl accountControl;
|
||||||
private final AccountLoader accountLoader;
|
private final AccountLoader accountLoader;
|
||||||
|
private final AccountCache accountCache;
|
||||||
private final ReviewDb db;
|
private final ReviewDb db;
|
||||||
private final boolean suggest;
|
private final boolean suggest;
|
||||||
private final int suggestFrom;
|
private final int suggestFrom;
|
||||||
@@ -68,10 +69,12 @@ class SuggestAccounts implements RestReadView<TopLevelResource> {
|
|||||||
@Inject
|
@Inject
|
||||||
SuggestAccounts(AccountControl.Factory accountControlFactory,
|
SuggestAccounts(AccountControl.Factory accountControlFactory,
|
||||||
AccountLoader.Factory accountLoaderFactory,
|
AccountLoader.Factory accountLoaderFactory,
|
||||||
|
AccountCache accountCache,
|
||||||
ReviewDb db,
|
ReviewDb db,
|
||||||
@GerritServerConfig Config cfg) {
|
@GerritServerConfig Config cfg) {
|
||||||
accountControl = accountControlFactory.get();
|
accountControl = accountControlFactory.get();
|
||||||
accountLoader = accountLoaderFactory.create(true);
|
accountLoader = accountLoaderFactory.create(true);
|
||||||
|
this.accountCache = accountCache;
|
||||||
this.db = db;
|
this.db = db;
|
||||||
this.suggestFrom = cfg.getInt("suggest", null, "from", 0);
|
this.suggestFrom = cfg.getInt("suggest", null, "from", 0);
|
||||||
|
|
||||||
@@ -108,12 +111,12 @@ class SuggestAccounts implements RestReadView<TopLevelResource> {
|
|||||||
Map<Account.Id, String> queryEmail = new HashMap<>();
|
Map<Account.Id, String> queryEmail = new HashMap<>();
|
||||||
|
|
||||||
for (Account p : db.accounts().suggestByFullName(a, b, limit)) {
|
for (Account p : db.accounts().suggestByFullName(a, b, limit)) {
|
||||||
addSuggestion(matches, p.getId());
|
addSuggestion(matches, p);
|
||||||
}
|
}
|
||||||
if (matches.size() < limit) {
|
if (matches.size() < limit) {
|
||||||
for (Account p : db.accounts()
|
for (Account p : db.accounts()
|
||||||
.suggestByPreferredEmail(a, b, limit - matches.size())) {
|
.suggestByPreferredEmail(a, b, limit - matches.size())) {
|
||||||
addSuggestion(matches, p.getId());
|
addSuggestion(matches, p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (matches.size() < limit) {
|
if (matches.size() < limit) {
|
||||||
@@ -146,11 +149,20 @@ class SuggestAccounts implements RestReadView<TopLevelResource> {
|
|||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean addSuggestion(Map<Account.Id, AccountInfo> map, Account.Id id) {
|
private boolean addSuggestion(Map<Account.Id, AccountInfo> map, Account a) {
|
||||||
|
if (!a.isActive()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Account.Id id = a.getId();
|
||||||
if (!map.containsKey(id) && accountControl.canSee(id)) {
|
if (!map.containsKey(id) && accountControl.canSee(id)) {
|
||||||
map.put(id, accountLoader.get(id));
|
map.put(id, accountLoader.get(id));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean addSuggestion(Map<Account.Id, AccountInfo> map, Account.Id id) {
|
||||||
|
Account a = accountCache.get(id).getAccount();
|
||||||
|
return addSuggestion(map, a);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user