diff --git a/src/routes/(main)/directory/[[id]]/DirectoryEntries/DirectoryEntries.svelte b/src/routes/(main)/directory/[[id]]/DirectoryEntries/DirectoryEntries.svelte
index ea8a984..0933650 100644
--- a/src/routes/(main)/directory/[[id]]/DirectoryEntries/DirectoryEntries.svelte
+++ b/src/routes/(main)/directory/[[id]]/DirectoryEntries/DirectoryEntries.svelte
@@ -1,11 +1,18 @@
-{#if info.subDirectoryIds.length + info.fileIds.length > 0}
+{#if subDirectories.length + files.length > 0}
- {#each subDirectoryInfos as subDirectory}
-
+ {#each subDirectories as { info }}
+
{/each}
- {#each fileInfos as file}
-
+ {#each files as file}
+ {#if file.type === "file"}
+
+ {:else}
+
+ {/if}
{/each}
{:else}
diff --git a/src/routes/(main)/directory/[[id]]/DirectoryEntries/UploadingFile.svelte b/src/routes/(main)/directory/[[id]]/DirectoryEntries/UploadingFile.svelte
new file mode 100644
index 0000000..e50d4bf
--- /dev/null
+++ b/src/routes/(main)/directory/[[id]]/DirectoryEntries/UploadingFile.svelte
@@ -0,0 +1,37 @@
+
+
+{#if $info.status !== "uploaded" && $info.status !== "canceled" && $info.status !== "error"}
+
+
+
+
+
+
+ {$info.name}
+
+
+ {#if $info.status === "encryption-pending"}
+ 준비 중
+ {:else if $info.status === "encrypting"}
+ 암호화하는 중
+ {:else if $info.status === "upload-pending"}
+ 업로드를 기다리는 중
+ {:else if $info.status === "uploading"}
+ 전송됨 {formatUploadProgress($info.progress)} · {formatUploadRate($info.rate)}
+ {/if}
+
+
+
+{/if}
diff --git a/src/routes/(main)/directory/[[id]]/DirectoryEntries/service.ts b/src/routes/(main)/directory/[[id]]/DirectoryEntries/service.ts
index a879d68..10f8e32 100644
--- a/src/routes/(main)/directory/[[id]]/DirectoryEntries/service.ts
+++ b/src/routes/(main)/directory/[[id]]/DirectoryEntries/service.ts
@@ -1,5 +1,4 @@
-import { get, type Writable } from "svelte/store";
-import type { DirectoryInfo, FileInfo } from "$lib/stores";
+import { formatFileSize } from "$lib/modules/util";
export { formatDateTime } from "$lib/modules/util";
@@ -8,17 +7,19 @@ export enum SortBy {
NAME_DESC,
}
-type SortFunc = (a: DirectoryInfo | FileInfo | null, b: DirectoryInfo | FileInfo | null) => number;
+type SortFunc = (a?: string, b?: string) => number;
const sortByNameAsc: SortFunc = (a, b) => {
- if (a && b) return a.name!.localeCompare(b.name!);
+ if (a && b) return a.localeCompare(b);
+ if (a) return -1;
+ if (b) return 1;
return 0;
};
const sortByNameDesc: SortFunc = (a, b) => -sortByNameAsc(a, b);
-export const sortEntries = (
- entries: Writable[],
+export const sortEntries = (
+ entries: T[],
sortBy: SortBy = SortBy.NAME_ASC,
) => {
let sortFunc: SortFunc;
@@ -28,5 +29,13 @@ export const sortEntries = (
sortFunc = sortByNameDesc;
}
- entries.sort((a, b) => sortFunc(get(a), get(b)));
+ entries.sort((a, b) => sortFunc(a.name, b.name));
+};
+
+export const formatUploadProgress = (progress?: number) => {
+ return `${Math.floor((progress ?? 0) * 100)}%`;
+};
+
+export const formatUploadRate = (rate?: number) => {
+ return `${formatFileSize((rate ?? 0) / 8)}/s`;
};