From 398d4eb63ceb338130db7c48dfcdea79a30b1449 Mon Sep 17 00:00:00 2001 From: Miodec Date: Fri, 3 Jun 2022 17:46:04 +0200 Subject: [PATCH] showing discord avatar in menu if avatar hash is saved in the db --- frontend/src/styles/nav.scss | 41 +++++++++++++++++-- .../src/ts/controllers/account-controller.ts | 3 +- frontend/src/ts/elements/account-button.ts | 21 +++++++++- frontend/static/html/top.html | 1 + 4 files changed, 60 insertions(+), 6 deletions(-) diff --git a/frontend/src/styles/nav.scss b/frontend/src/styles/nav.scss index 1d5dd6fc7..88b5b843c 100644 --- a/frontend/src/styles/nav.scss +++ b/frontend/src/styles/nav.scss @@ -17,10 +17,39 @@ margin-left: 0.25rem; } - // &:hover { - // cursor: pointer; - // color: var(--main-color); - // } + .icon { + width: 1.25rem; + height: 1.25rem; + // background: red; + display: grid; + place-content: center center; + } + + &.account { + .icon, + .avatar { + grid-column: 1/2; + grid-row: 1/2; + } + + .avatar { + transition: opacity 0.125s, filter 0.125s, webkit-filter 0.125s; + width: 1.25rem; + height: 1.25rem; + background: var(--sub-color); + border-radius: 100%; + background-position: center center; + background-size: contain; + background-repeat: no-repeat; + filter: saturate(0); + -webkit-filter: saturate(0); + } + } + + &:hover.account .avatar { + filter: saturate(1); + -webkit-filter: saturate(1); + } } .separator { @@ -42,6 +71,10 @@ color: transparent !important; } +#top.focus #menu .text-button.account .avatar { + opacity: 0 !important; +} + #top { grid-template-areas: "logo menu config"; line-height: 2.3rem; diff --git a/frontend/src/ts/controllers/account-controller.ts b/frontend/src/ts/controllers/account-controller.ts index 4a405a923..956b3b4ff 100644 --- a/frontend/src/ts/controllers/account-controller.ts +++ b/frontend/src/ts/controllers/account-controller.ts @@ -228,11 +228,12 @@ export async function loadUser(user: UserType): Promise { ); } PageTransition.set(false); - AccountButton.update(); AccountButton.loading(true); if ((await getDataAndInit()) === false) { signOut(); } + const { discordId, discordAvatar } = DB.getSnapshot(); + AccountButton.update(discordId, discordAvatar); // var displayName = user.displayName; // var email = user.email; // var emailVerified = user.emailVerified; diff --git a/frontend/src/ts/elements/account-button.ts b/frontend/src/ts/elements/account-button.ts index a6fca5406..321d39322 100644 --- a/frontend/src/ts/elements/account-button.ts +++ b/frontend/src/ts/elements/account-button.ts @@ -1,20 +1,39 @@ import { Auth } from "../firebase"; import * as Misc from "../utils/misc"; +let usingAvatar = false; + export function loading(truefalse: boolean): void { if (truefalse) { + if (usingAvatar) { + $("#top #menu .account .avatar").addClass("hidden"); + $("#top #menu .account .icon").removeClass("hidden"); + } $("#top #menu .account .icon").html( '' ); $("#top #menu .account").css("opacity", 1).css("pointer-events", "none"); } else { + if (usingAvatar) { + $("#top #menu .account .avatar").removeClass("hidden"); + $("#top #menu .account .icon").addClass("hidden"); + } $("#top #menu .account .icon").html(''); $("#top #menu .account").css("opacity", 1).css("pointer-events", "auto"); } } -export function update(): void { +export function update(discordId?: string, discordAvatar?: string): void { if (Auth.currentUser != null) { + if (discordAvatar && discordId) { + usingAvatar = true; + $("#top #menu .account .avatar").css( + "background-image", + `url(https://cdn.discordapp.com/avatars/${discordId}/${discordAvatar}.png)` + ); + $("#top #menu .account .avatar").removeClass("hidden"); + $("#top #menu .account .icon").addClass("hidden"); + } Misc.swapElements( $("#menu .text-button.login"), $("#menu .text-button.account"), diff --git a/frontend/static/html/top.html b/frontend/static/html/top.html index 6b3bfeb5f..5ec41f09e 100644 --- a/frontend/static/html/top.html +++ b/frontend/static/html/top.html @@ -105,6 +105,7 @@
+