From 1777070694c8a17f1919874a90e1fca89829e2c1 Mon Sep 17 00:00:00 2001 From: Jake Fulmine Date: Thu, 21 Sep 2023 13:23:44 +0200 Subject: [PATCH] feat(dashboard): allow selecting which avatar to show in list --- .../src/components/common/CardsHeader.svelte | 18 +++++++++-- dashboard/src/components/list/CardView.svelte | 5 +-- .../src/components/list/ListControl.svelte | 11 ++++++- dashboard/src/components/list/ListView.svelte | 6 ++-- .../src/components/list/MemberList.svelte | 4 +-- .../src/components/list/PageControl.svelte | 31 +++++++++++++++++++ dashboard/src/components/list/TinyView.svelte | 5 +-- dashboard/src/components/list/types.ts | 4 ++- dashboard/src/components/member/Body.svelte | 13 ++++++++ .../src/components/member/CardView.svelte | 14 ++++++++- .../components/member/TinyMemberView.svelte | 15 ++++++++- dashboard/src/components/system/Main.svelte | 2 +- dashboard/src/routes/Dash/Group/Group.svelte | 8 ++--- .../src/routes/Dash/Member/Member.svelte | 8 ++--- 14 files changed, 120 insertions(+), 24 deletions(-) diff --git a/dashboard/src/components/common/CardsHeader.svelte b/dashboard/src/components/common/CardsHeader.svelte index 53b0f854..d1e54e6a 100644 --- a/dashboard/src/components/common/CardsHeader.svelte +++ b/dashboard/src/components/common/CardsHeader.svelte @@ -9,6 +9,8 @@ export let item: any; export let searchBy: string = null; + export let type: "member"|"group"|"system" + export let avatarUsed: "proxy"|"avatar"|"proxy_only"|"avatar_only" export let sortBy: string = null; let htmlNamePromise: Promise; @@ -24,8 +26,20 @@ if (nameElement) twemoji.parse(nameElement, { base: 'https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/' }); } - $: icon_url = item.avatar_url ? item.avatar_url : item.icon ? item.icon : default_avatar; - $: icon_url_resized = resizeMedia(icon_url) + let icon_url: string = default_avatar + $: if (type === "group") { + if (item.icon) icon_url = item.icon + } else if (avatarUsed === "proxy" || avatarUsed === "proxy_only") { + if (item.webhook_avatar_url) icon_url = item.webhook_avatar_url + else if (avatarUsed === "proxy_only") icon_url = default_avatar + else icon_url = item.avatar_url || default_avatar + } else { + if (item.avatar_url) icon_url = item.avatar_url + else if (avatarUsed === "avatar_only") icon_url = default_avatar + else icon_url = item.webhook_avatar_url ?? default_avatar + } + + $: icon_url_resized = icon_url ? resizeMedia(icon_url) : default_avatar let avatarOpen = false; const toggleAvatarModal = () => (avatarOpen = !avatarOpen); diff --git a/dashboard/src/components/list/CardView.svelte b/dashboard/src/components/list/CardView.svelte index 41181bc2..9c568d7b 100644 --- a/dashboard/src/components/list/CardView.svelte +++ b/dashboard/src/components/list/CardView.svelte @@ -7,10 +7,11 @@ import type { Member, Group } from '../../api/types'; import MemberCard from '../member/CardView.svelte'; import GroupCard from '../group/CardView.svelte'; - import type { PageOptions } from './types'; + import type { ListOptions, PageOptions } from './types'; export let pageOptions: PageOptions; export let currentList: Member[]|Group[]; + export let listOptions: ListOptions; let copiedItems = {}; @@ -50,7 +51,7 @@ {#if pageOptions.type === "member"} {#each currentList as item (item.uuid)}
- + - +