From e575be921de02305256d8bb994eea91957e1e40e Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Thu, 2 Jul 2026 14:29:30 -0700 Subject: [PATCH] Compress base64 fallback --- src/app/components/InputProfilePicture.svelte | 43 +++++++++---------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/src/app/components/InputProfilePicture.svelte b/src/app/components/InputProfilePicture.svelte index 2f67adb5..9dd02e07 100644 --- a/src/app/components/InputProfilePicture.svelte +++ b/src/app/components/InputProfilePicture.svelte @@ -5,7 +5,9 @@ import AddCircle from "@assets/icons/add-circle.svg?dataurl" import GallerySend from "@assets/icons/gallery-send.svg?dataurl" import Icon from "@lib/components/Icon.svelte" + import Spinner from "@lib/components/Spinner.svelte" import {uploadFile} from "@app/uploads" + import {pushToast} from "@app/toast" interface Props { file?: File | undefined @@ -45,27 +47,23 @@ } let active = $state(false) + let loading = $state(false) let initialUrl = $state(url) $effect(() => { call(async () => { if (file) { - const {result} = await uploadFile(file) + loading = true + + const {error, result} = await uploadFile(file) + + loading = false if (result?.url) { url = result.url } else { - const reader = new FileReader() - - reader.addEventListener( - "load", - () => { - url = reader.result as string - }, - false, - ) - - reader.readAsDataURL(file) + file = undefined + pushToast({theme: "error", message: error || "Failed to upload image."}) } } else { url = initialUrl @@ -86,22 +84,21 @@ ondragover={stopPropagation(preventDefault(onDragOver))} ondragleave={stopPropagation(preventDefault(onDragLeave))} ondrop={stopPropagation(preventDefault(onDrop))}> -
{#if url} - - - + {:else} {/if} -
- {#if !url} + + {#if loading} +
+ +
+ {:else if !url} {/if}