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(),