diff --git a/keyserver/src/fetchers/user-fetchers.js b/keyserver/src/fetchers/user-fetchers.js --- a/keyserver/src/fetchers/user-fetchers.js +++ b/keyserver/src/fetchers/user-fetchers.js @@ -1,6 +1,7 @@ // @flow import { hasMinCodeVersion } from 'lib/shared/version-utils.js'; +import type { AvatarDBContent, ClientAvatar } from 'lib/types/avatar-types.js'; import { undirectedStatus, directedStatus, @@ -31,18 +32,33 @@ } const query = SQL` - SELECT id, username FROM users WHERE id IN (${userIDs}) + SELECT id, username, avatar + FROM users + WHERE id IN (${userIDs}) `; const [result] = await dbQuery(query); const userInfos = {}; for (const row of result) { const id = row.id.toString(); - userInfos[id] = { - id, - username: row.username, - }; + const avatar: ?AvatarDBContent = row.avatar ? JSON.parse(row.avatar) : null; + + // TODO: Handle construction of `ClientImageAvatar` when `type === 'image'` + const clientAvatar: ?ClientAvatar = + avatar && avatar.type !== 'image' ? avatar : null; + + userInfos[id] = avatar + ? { + id, + username: row.username, + avatar: clientAvatar, + } + : { + id, + username: row.username, + }; } + for (const userID of userIDs) { if (!userInfos[userID]) { userInfos[userID] = {