diff options
| author | Adam Soltys <[email protected]> | 2024-11-07 21:16:25 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-11-08 09:27:40 -0800 |
| commit | 32fcc461cd43c8907df5e306d520bb671307eab1 (patch) | |
| tree | 0253780c569998b6c1a5f43026586e94916c3fee /src/components/Avatar.svelte | |
| parent | be5aa52cea1d57c875cfb22d25c6a866b8de2239 (diff) | |
| download | coinos-ui-32fcc461cd43c8907df5e306d520bb671307eab1.tar.gz coinos-ui-32fcc461cd43c8907df5e306d520bb671307eab1.zip | |
svelte 5
Diffstat (limited to 'src/components/Avatar.svelte')
| -rw-r--r-- | src/components/Avatar.svelte | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/src/components/Avatar.svelte b/src/components/Avatar.svelte index a088c4ee..3007c3e7 100644 --- a/src/components/Avatar.svelte +++ b/src/components/Avatar.svelte @@ -1,20 +1,29 @@ -<script> +<script lang="ts"> + import { run } from 'svelte/legacy'; + import { avatar, banner } from "$lib/store"; import Icon from "$comp/Icon.svelte"; import { punk } from "$lib/utils"; - export let user; - export let size = 32; - export let disabled = false; + interface Props { + user: any; + size?: number; + disabled?: boolean; + } + + let { user, size = 32, disabled = false }: Props = $props(); - $: s = size.toString(); - $: link = user?.anon ? `/${user.pubkey}` : `/${user.username}`; + let s = $derived(size.toString()); + let link = $derived(user?.anon ? `/${user.pubkey}` : `/${user.username}`); let base = "/api/public"; - $: profile = user?.profile ? `${base}/${user.profile}.webp` : user?.picture; - $: fallback = `${base}/punks/` + punk(user.pubkey || user.id || "aa"); - $: tmp = $avatar?.id && $avatar.id === user.id && $avatar.src; - $: src = tmp || profile || fallback; + let profile = $derived(user?.profile ? `${base}/${user.profile}.webp` : user?.picture); + let fallback = $derived(`${base}/punks/` + punk(user.pubkey || user.id || "aa")); + let tmp = $derived($avatar?.id && $avatar.id === user.id && $avatar.src); + let src; + run(() => { + src = tmp || profile || fallback; + }); let handle = () => (src = fallback); </script> @@ -27,7 +36,7 @@ {src} class="w-full h-full object-cover object-center overflow-hidden" alt={user.username} - on:error={handle} + onerror={handle} /> </div> </a> |
