diff --git a/src/routes/(main)/directory/[[id]]/+page.svelte b/src/routes/(main)/directory/[[id]]/+page.svelte index ee7e86e..c02d482 100644 --- a/src/routes/(main)/directory/[[id]]/+page.svelte +++ b/src/routes/(main)/directory/[[id]]/+page.svelte @@ -29,6 +29,7 @@ let info: Writable | undefined = $state(); let fileInput: HTMLInputElement | undefined = $state(); let resolveForDuplicateFileModal: ((res: boolean) => void) | undefined = $state(); + let duplicatedFile: File | undefined = $state(); let selectedEntry: SelectedDirectoryEntry | undefined = $state(); let isCreateBottomSheetOpen = $state(false); @@ -46,29 +47,32 @@ }; const uploadFile = () => { - const file = fileInput?.files?.[0]; - if (!file) return; + const files = fileInput?.files; + if (!files || files.length === 0) return; + + for (const file of files) { + requestFileUpload(file, data.id, $hmacSecretStore?.get(1)!, $masterKeyStore?.get(1)!, () => { + return new Promise((resolve) => { + resolveForDuplicateFileModal = resolve; + duplicatedFile = file; + isDuplicateFileModalOpen = true; + }); + }) + .then((res) => { + if (!res) return; + + // TODO: FIXME + info = getDirectoryInfo(data.id, $masterKeyStore?.get(1)?.key!); + window.alert(`'${file.name}' 파일이 업로드되었어요.`); + }) + .catch((e: Error) => { + // TODO: FIXME + console.error(e); + window.alert(`'${file.name}' 파일 업로드에 실패했어요.\n${e.message}`); + }); + } fileInput!.value = ""; - - requestFileUpload(file, data.id, $hmacSecretStore?.get(1)!, $masterKeyStore?.get(1)!, () => { - return new Promise((resolve) => { - resolveForDuplicateFileModal = resolve; - isDuplicateFileModalOpen = true; - }); - }) - .then((res) => { - if (!res) return; - - // TODO: FIXME - info = getDirectoryInfo(data.id, $masterKeyStore?.get(1)?.key!); - window.alert("파일이 업로드되었어요."); - }) - .catch((e: Error) => { - // TODO: FIXME - console.error(e); - window.alert(`파일 업로드에 실패했어요.\n${e.message}`); - }); }; onMount(async () => { @@ -86,7 +90,7 @@ 파일 - +
{#if data.id !== "root"} @@ -129,14 +133,17 @@ { resolveForDuplicateFileModal?.(false); resolveForDuplicateFileModal = undefined; + duplicatedFile = undefined; isDuplicateFileModalOpen = false; }} onDuplicateClick={() => { resolveForDuplicateFileModal?.(true); resolveForDuplicateFileModal = undefined; + duplicatedFile = undefined; isDuplicateFileModalOpen = false; }} /> diff --git a/src/routes/(main)/directory/[[id]]/DuplicateFileModal.svelte b/src/routes/(main)/directory/[[id]]/DuplicateFileModal.svelte index 277d8ce..6c9d9af 100644 --- a/src/routes/(main)/directory/[[id]]/DuplicateFileModal.svelte +++ b/src/routes/(main)/directory/[[id]]/DuplicateFileModal.svelte @@ -3,23 +3,28 @@ import { Button } from "$lib/components/buttons"; interface Props { + file: File | undefined; onclose: () => void; onDuplicateClick: () => void; isOpen: boolean; } - let { onclose, onDuplicateClick, isOpen = $bindable() }: Props = $props(); + let { file, onclose, onDuplicateClick, isOpen = $bindable() }: Props = $props(); -
-
-

이미 업로드된 파일이에요.

-

그래도 업로드할까요?

+ {#if file} + {@const { name } = file} + {@const nameShort = name.length > 20 ? `${name.slice(0, 20)}...` : name} +
+
+

'{nameShort}' 파일이 있어요.

+

예전에 이미 업로드된 파일이에요. 그래도 업로드할까요?

+
+
+ + +
-
- - -
-
+ {/if}