perf(ui): lazy-load user info in channel profile previews on hover

This commit is contained in:
silentoplayz 2026-06-11 10:35:36 -04:00
parent b1d40f3409
commit 7b848defac
2 changed files with 13 additions and 8 deletions

View file

@ -28,5 +28,5 @@
</button>
</LinkPreview.Trigger>
<UserStatusLinkPreview id={user?.id} {side} {align} {sideOffset} />
<UserStatusLinkPreview id={user?.id} open={openPreview} {side} {align} {sideOffset} />
</LinkPreview.Root>

View file

@ -1,5 +1,5 @@
<script lang="ts">
import { getContext, onMount } from 'svelte';
import { getContext } from 'svelte';
import { LinkPreview } from 'bits-ui';
const i18n = getContext('i18n');
@ -8,20 +8,25 @@
import UserStatus from './UserStatus.svelte';
export let id = null;
export let open = false;
export let side = 'top';
export let align = 'start';
export let sideOffset = 6;
let user = null;
onMount(async () => {
if (id) {
user = await getUserInfoById(localStorage.token, id).catch((error) => {
let fetched = false;
$: if (open && id && !fetched) {
fetched = true;
getUserInfoById(localStorage.token, id)
.then((res) => {
user = res;
})
.catch((error) => {
console.error('Error fetching user by ID:', error);
return null;
});
}
});
}
</script>
{#if user}