diff --git a/src/lib/cards/BaseCard/BaseEditingCard.svelte b/src/lib/cards/BaseCard/BaseEditingCard.svelte index 499d823..b816f11 100644 --- a/src/lib/cards/BaseCard/BaseEditingCard.svelte +++ b/src/lib/cards/BaseCard/BaseEditingCard.svelte @@ -57,11 +57,11 @@ const cardDef = $derived(CardDefinitionsByType[item.cardType]); - const minW = $derived(cardDef?.minW ?? (isMobile() ? 2 : 2)); - const minH = $derived(cardDef?.minH ?? (isMobile() ? 2 : 2)); + const minW = $derived(cardDef.minW ?? (isMobile() ? 2 : 2)); + const minH = $derived(cardDef.minH ?? (isMobile() ? 2 : 2)); - const maxW = $derived(cardDef?.maxW ?? COLUMNS); - const maxH = $derived(cardDef?.maxH ?? (isMobile() ? 12 : 6)); + const maxW = $derived(cardDef.maxW ?? COLUMNS); + const maxH = $derived(cardDef.maxH ?? (isMobile() ? 12 : 6)); // Resize handle state let isResizing = $state(false); diff --git a/src/lib/components/qr/QRCodeDisplay.svelte b/src/lib/components/qr/QRCodeDisplay.svelte index 9eadc79..4860d6c 100644 --- a/src/lib/components/qr/QRCodeDisplay.svelte +++ b/src/lib/components/qr/QRCodeDisplay.svelte @@ -1,51 +1,37 @@ diff --git a/src/lib/components/qr/QRCodeModal.svelte b/src/lib/components/qr/QRCodeModal.svelte index 75957e4..03202d5 100644 --- a/src/lib/components/qr/QRCodeModal.svelte +++ b/src/lib/components/qr/QRCodeModal.svelte @@ -28,8 +28,6 @@ toast.error('Failed to copy'); } } - - const logoUrl = $derived(context.avatar || context.favicon); @@ -54,7 +52,7 @@ {/if}
- +
diff --git a/src/lib/components/qr/qrOverlay.svelte.ts b/src/lib/components/qr/qrOverlay.svelte.ts index a4d7499..7487326 100644 --- a/src/lib/components/qr/qrOverlay.svelte.ts +++ b/src/lib/components/qr/qrOverlay.svelte.ts @@ -12,19 +12,23 @@ export function unregisterQRModal() { } export function qrOverlay( - node: HTMLAnchorElement, - params: { context?: QRContext; disabled?: boolean } = {} + node: HTMLElement, + params: { href?: string; context?: QRContext; disabled?: boolean } = {} ) { const LONG_PRESS_DURATION = 500; let longPressTimer: ReturnType | null = null; let isLongPress = false; + function getHref() { + return params.href || (node as HTMLAnchorElement).href || ''; + } + function startLongPress() { if (params.disabled) return; isLongPress = false; longPressTimer = setTimeout(() => { isLongPress = true; - openModal?.(node.href, params.context ?? {}); + openModal?.(getHref(), params.context ?? {}); }, LONG_PRESS_DURATION); } @@ -45,7 +49,7 @@ export function qrOverlay( function handleContextMenu(e: MouseEvent) { if (params.disabled) return; e.preventDefault(); - openModal?.(node.href, params.context ?? {}); + openModal?.(getHref(), params.context ?? {}); } node.addEventListener('pointerdown', startLongPress); @@ -56,7 +60,7 @@ export function qrOverlay( node.addEventListener('contextmenu', handleContextMenu); return { - update(newParams: { context?: QRContext; disabled?: boolean }) { + update(newParams: { href?: string; context?: QRContext; disabled?: boolean }) { params = newParams; }, destroy() { diff --git a/src/lib/website/Profile.svelte b/src/lib/website/Profile.svelte index ae94f9c..6561b78 100644 --- a/src/lib/website/Profile.svelte +++ b/src/lib/website/Profile.svelte @@ -8,7 +8,7 @@ import { getDescription, getName } from '$lib/helper'; import { page } from '$app/state'; import type { ActorIdentifier } from '@atcute/lexicons'; - import QRCodeModal from '$lib/components/qr/QRCodeModal.svelte'; + import { qrOverlay } from '$lib/components/qr/qrOverlay.svelte'; let { data, @@ -22,28 +22,7 @@ renderer.link = ({ href, title, text }) => `${text}`; - let qrOpen = $state(false); - let longPressTimer: ReturnType | null = null; - - const profileUrl = $derived(`${page.url}/${data.handle}`); - - function startLongPress() { - longPressTimer = setTimeout(() => { - qrOpen = true; - }, 500); - } - - function cancelLongPress() { - if (longPressTimer) { - clearTimeout(longPressTimer); - longPressTimer = null; - } - } - - function handleContextMenu(e: MouseEvent) { - e.preventDefault(); - qrOpen = true; - } + const profileUrl = $derived(`${page.url.origin}/${data.handle}`); @@ -51,14 +30,15 @@ class="mx-auto flex max-w-lg flex-col justify-between px-8 @5xl/wrapper:fixed @5xl/wrapper:h-screen @5xl/wrapper:w-1/4 @5xl/wrapper:max-w-none @5xl/wrapper:px-12" >
- -
{#if data.profile.avatar}
{/if} -
- +
{getName(data)}