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))}> -