diff --git a/keyserver/src/fetchers/message-fetchers.js b/keyserver/src/fetchers/message-fetchers.js --- a/keyserver/src/fetchers/message-fetchers.js +++ b/keyserver/src/fetchers/message-fetchers.js @@ -227,7 +227,9 @@ const messageSpec = messageSpecs[type]; if (type === messageTypes.IMAGES || type === messageTypes.MULTIMEDIA) { - const media = rows.filter(row => row.uploadID).map(mediaFromRow); + const media = await Promise.all( + rows.filter(row => row.uploadID).map(mediaFromRow), + ); const [row] = rows; const localID = localIDFromCreationString(viewer, row.creation); invariant( diff --git a/keyserver/src/fetchers/upload-fetchers.js b/keyserver/src/fetchers/upload-fetchers.js --- a/keyserver/src/fetchers/upload-fetchers.js +++ b/keyserver/src/fetchers/upload-fetchers.js @@ -79,7 +79,7 @@ return `${baseDomain}${basePath}upload/${id}/${secret}`; } -function mediaFromRow(row: Object): Media { +async function mediaFromRow(row: Object): Promise { const { uploadType: type, uploadSecret: secret } = row; const { width, height, loop } = row.uploadExtra; const id = row.uploadID.toString(); @@ -107,7 +107,7 @@ WHERE id IN (${mediaIDs}) AND uploader = ${viewer.id} AND container IS NULL `; const [result] = await dbQuery(query); - return result.map(mediaFromRow); + return await Promise.all(result.map(mediaFromRow)); } export {