Merge "Extend isDetailedAccount to check for accountId only accounts"
diff --git a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.ts b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.ts
index 2001d6d..acd1755 100644
--- a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.ts
+++ b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog_test.ts
@@ -90,7 +90,10 @@
let lastId = 1;
const makeAccount = function () {
- return {_account_id: lastId++ as AccountId};
+ return {
+ _account_id: lastId++ as AccountId,
+ email: `${lastId}.com` as EmailAddress,
+ };
};
const makeGroup = function () {
return {id: `${lastId++}` as GroupId};
@@ -113,6 +116,7 @@
owner: {
_account_id: 999 as AccountId,
display_name: 'Kermit',
+ email: 'abcd' as EmailAddress,
},
labels: {
Verified: {
diff --git a/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_test.ts b/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_test.ts
index b1e74c1..16fa813 100644
--- a/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_test.ts
+++ b/polygerrit-ui/app/elements/change/gr-thread-list/gr-thread-list_test.ts
@@ -56,6 +56,7 @@
_account_id: 1000001 as AccountId,
name: 'user',
username: 'user',
+ email: 'abcd' as EmailAddress,
},
patch_set: 4 as RevisionPatchSetNum,
id: 'ecf0b9fa_fe1a5f62' as UrlEncodedCommentId,
@@ -90,6 +91,7 @@
_account_id: 1000002 as AccountId,
name: 'user',
username: 'user',
+ email: 'abcd' as EmailAddress,
},
patch_set: 3 as RevisionPatchSetNum,
id: '09a9fb0a_1484e6cf' as UrlEncodedCommentId,
@@ -111,6 +113,7 @@
_account_id: 1000002 as AccountId,
name: 'user',
username: 'user',
+ email: 'abcd' as EmailAddress,
},
patch_set: 2 as RevisionPatchSetNum,
id: '8caddf38_44770ec1' as UrlEncodedCommentId,
@@ -132,6 +135,7 @@
_account_id: 1000003 as AccountId,
name: 'user',
username: 'user',
+ email: 'abcd' as EmailAddress,
},
patch_set: 2 as RevisionPatchSetNum,
id: 'scaddf38_44770ec1' as UrlEncodedCommentId,
@@ -206,6 +210,7 @@
_account_id: 1000000 as AccountId,
name: 'user',
username: 'user',
+ email: 'abcd' as EmailAddress,
},
patch_set: 4 as RevisionPatchSetNum,
id: 'rc1' as UrlEncodedCommentId,
@@ -230,6 +235,7 @@
_account_id: 1000000 as AccountId,
name: 'user',
username: 'user',
+ email: 'abcd' as EmailAddress,
},
patch_set: 4 as RevisionPatchSetNum,
id: 'rc2' as UrlEncodedCommentId,
@@ -245,6 +251,7 @@
_account_id: 1000000 as AccountId,
name: 'user',
username: 'user',
+ email: 'abcd' as EmailAddress,
},
patch_set: 4 as RevisionPatchSetNum,
id: 'c2_1' as UrlEncodedCommentId,
diff --git a/polygerrit-ui/app/models/accounts-model/accounts-model.ts b/polygerrit-ui/app/models/accounts-model/accounts-model.ts
index 54aab24..3f35127 100644
--- a/polygerrit-ui/app/models/accounts-model/accounts-model.ts
+++ b/polygerrit-ui/app/models/accounts-model/accounts-model.ts
@@ -50,6 +50,8 @@
async fillDetails(account: AccountInfo) {
if (!isDetailedAccount(account)) {
if (account.email) return await this.getAccount({email: account.email});
+ else if (account._account_id)
+ return await this.getAccount({_account_id: account._account_id});
}
return account;
}
diff --git a/polygerrit-ui/app/test/test-data-generators.ts b/polygerrit-ui/app/test/test-data-generators.ts
index 3579bb3..9337500 100644
--- a/polygerrit-ui/app/test/test-data-generators.ts
+++ b/polygerrit-ui/app/test/test-data-generators.ts
@@ -184,6 +184,7 @@
export function createAccountWithId(id = 5): AccountInfo {
return {
_account_id: id as AccountId,
+ email: `${id}` as EmailAddress,
};
}
diff --git a/polygerrit-ui/app/utils/account-util.ts b/polygerrit-ui/app/utils/account-util.ts
index 6cc2e59..207152c 100644
--- a/polygerrit-ui/app/utils/account-util.ts
+++ b/polygerrit-ui/app/utils/account-util.ts
@@ -85,7 +85,11 @@
}
export function isDetailedAccount(account?: AccountInfo) {
- return account && account._account_id;
+ // In case ChangeInfo is requested without DetailedAccount option, the
+ // reviewer entry is returned as just {_account_id: 123}
+ // This object should also be treated as not detailed account if they have
+ // an AccountId and no email
+ return !!account?.email && !!account?._account_id;
}
/**
diff --git a/polygerrit-ui/app/utils/account-util_test.ts b/polygerrit-ui/app/utils/account-util_test.ts
index a307993..3e61255 100644
--- a/polygerrit-ui/app/utils/account-util_test.ts
+++ b/polygerrit-ui/app/utils/account-util_test.ts
@@ -9,6 +9,7 @@
extractMentionedUsers,
getAccountTemplate,
isAccountEmailOnly,
+ isDetailedAccount,
isServiceUser,
removeServiceUsers,
replaceTemplates,
@@ -255,6 +256,18 @@
);
});
+ test('isDetailedAccount', () => {
+ assert.isFalse(isDetailedAccount({_account_id: 12345 as AccountId}));
+ assert.isFalse(isDetailedAccount({email: 'abcd' as EmailAddress}));
+
+ assert.isTrue(
+ isDetailedAccount({
+ _account_id: 12345 as AccountId,
+ email: 'abcd' as EmailAddress,
+ })
+ );
+ });
+
test('fails gracefully when all is not included', async () => {
const change = {
...createChange(),