From defa9a3f5542a92d5f031fd9f07743f5a125edb9 Mon Sep 17 00:00:00 2001 From: Bruce Berrios <58147810+Bruception@users.noreply.github.com> Date: Wed, 1 Jun 2022 15:36:22 -0400 Subject: [PATCH] Save discord avatar uri on link (#3059) * Initial avatars * Only store hash * avatarHash -> discordAvatar --- backend/src/api/controllers/user.ts | 4 ++-- backend/src/dal/user.ts | 10 +++++++--- backend/src/types/types.d.ts | 1 + frontend/src/ts/db.ts | 1 + frontend/src/ts/types/types.d.ts | 1 + 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/backend/src/api/controllers/user.ts b/backend/src/api/controllers/user.ts index a6783171d..2e31a48f2 100644 --- a/backend/src/api/controllers/user.ts +++ b/backend/src/api/controllers/user.ts @@ -137,7 +137,7 @@ export async function linkDiscord( throw new MonkeyError(403, "Banned accounts cannot link with Discord"); } - const { id: discordId } = await linkAccount(tokenType, accessToken); + const { id: discordId, avatar } = await linkAccount(tokenType, accessToken); if (!discordId) { throw new MonkeyError( @@ -155,7 +155,7 @@ export async function linkDiscord( ); } - await UserDAL.linkDiscord(uid, discordId); + await UserDAL.linkDiscord(uid, discordId, avatar); George.linkDiscord(discordId, uid); Logger.logToDb("user_discord_link", `linked to ${discordId}`, uid); diff --git a/backend/src/dal/user.ts b/backend/src/dal/user.ts index 0ecca51ef..472c467ac 100644 --- a/backend/src/dal/user.ts +++ b/backend/src/dal/user.ts @@ -389,10 +389,14 @@ export async function updateTypingStats( export async function linkDiscord( uid: string, - discordId: string + discordId: string, + discordAvatar?: string ): Promise { await getUser(uid, "link discord"); - return await getUsersCollection().updateOne({ uid }, { $set: { discordId } }); + + const updates = _.pickBy({ discordId, discordAvatar }, _.identity); + + return await getUsersCollection().updateOne({ uid }, { $set: updates }); } export async function unlinkDiscord(uid: string): Promise { @@ -400,7 +404,7 @@ export async function unlinkDiscord(uid: string): Promise { return await getUsersCollection().updateOne( { uid }, - { $set: { discordId: undefined } } + { $unset: { discordId: "", discordAvatar: "" } } ); } diff --git a/backend/src/types/types.d.ts b/backend/src/types/types.d.ts index c698e7f00..1d9d9601f 100644 --- a/backend/src/types/types.d.ts +++ b/backend/src/types/types.d.ts @@ -92,6 +92,7 @@ declare namespace MonkeyTypes { canManageApeKeys?: boolean; favoriteQuotes?: Record; needsToChangeName?: boolean; + discordAvatar?: string; } type UserQuoteRatings = Record>; diff --git a/frontend/src/ts/db.ts b/frontend/src/ts/db.ts index 9c7d1c026..f6d9a72b7 100644 --- a/frontend/src/ts/db.ts +++ b/frontend/src/ts/db.ts @@ -80,6 +80,7 @@ export async function initSnapshot(): Promise< snap.banned = userData.banned; snap.verified = userData.verified; snap.discordId = userData.discordId; + snap.discordAvatar = userData.discordAvatar; snap.needsToChangeName = userData.needsToChangeName; snap.globalStats = { time: userData.timeTyping, diff --git a/frontend/src/ts/types/types.d.ts b/frontend/src/ts/types/types.d.ts index fffe2710d..8eeca3dee 100644 --- a/frontend/src/ts/types/types.d.ts +++ b/frontend/src/ts/types/types.d.ts @@ -463,6 +463,7 @@ declare namespace MonkeyTypes { config?: Config; favoriteQuotes: FavoriteQuotes; needsToChangeName?: boolean; + discordAvatar?: string; } type FavoriteQuotes = Record;