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 @@ -105,7 +105,8 @@ const query = SQL` SELECT ru.user1, ru.user2, u.username, u.avatar, ru.status AS undirected_status, rd1.status AS user1_directed_status, rd2.status AS user2_directed_status, - up.id AS upload_id, up.secret AS upload_secret + up1.id AS user1_upload_id, up1.secret AS user1_upload_secret, + up2.id AS user2_upload_id, up2.secret AS user2_upload_secret FROM relationships_undirected ru LEFT JOIN relationships_directed rd1 ON rd1.user1 = ru.user1 AND rd1.user2 = ru.user2 @@ -113,9 +114,10 @@ ON rd2.user1 = ru.user2 AND rd2.user2 = ru.user1 LEFT JOIN users u ON u.id != ${viewer.userID} AND (u.id = ru.user1 OR u.id = ru.user2) - LEFT JOIN uploads up - ON up.container != ${viewer.userID} - AND (up.container = ru.user1 OR up.container = ru.user2) + LEFT JOIN uploads up1 + ON up1.container != ${viewer.userID} AND up1.container = ru.user1 + LEFT JOIN uploads up2 + ON up2.container != ${viewer.userID} AND up2.container = ru.user2 `; if (userIDs) { query.append(SQL` @@ -132,7 +134,8 @@ CAST(NULL AS UNSIGNED) AS undirected_status, CAST(NULL AS UNSIGNED) AS user1_directed_status, CAST(NULL AS UNSIGNED) AS user2_directed_status, - up.id AS upload_id, up.secret AS upload_secret + up.id AS user1_upload_id, up.secret AS user1_upload_secret, + NULL AS user2_upload_id, NULL AS user2_upload_secret FROM users u LEFT JOIN uploads up ON up.container = u.id @@ -154,17 +157,32 @@ } else if ( avatar && avatar.type === 'image' && - row.upload_id && - row.upload_secret + row.user1_upload_id && + row.user1_upload_secret ) { - const uploadID = row.upload_id.toString(); + const uploadID = row.user1_upload_id.toString(); invariant( uploadID === avatar.uploadID, 'uploadID of upload should match uploadID of image avatar', ); clientAvatar = { type: 'image', - uri: getUploadURL(uploadID, row.upload_secret), + uri: getUploadURL(uploadID, row.user1_upload_secret), + }; + } else if ( + avatar && + avatar.type === 'image' && + row.user2_upload_id && + row.user2_upload_secret + ) { + const uploadID = row.user2_upload_id.toString(); + invariant( + uploadID === avatar.uploadID, + 'uploadID of upload should match uploadID of image avatar', + ); + clientAvatar = { + type: 'image', + uri: getUploadURL(uploadID, row.user2_upload_secret), }; }