diff --git a/src/lib/indexedDB/filesystem.ts b/src/lib/indexedDB/filesystem.ts index 1709033..87c0d70 100644 --- a/src/lib/indexedDB/filesystem.ts +++ b/src/lib/indexedDB/filesystem.ts @@ -96,6 +96,10 @@ export const deleteFileInfo = async (id: number) => { await filesystem.file.delete(id); }; +export const bulkDeleteFileInfos = async (ids: number[]) => { + await filesystem.file.bulkDelete(ids); +}; + export const deleteDanglingFileInfos = async (parentId: DirectoryId, validIds: Set) => { await filesystem.file .where({ parentId }) diff --git a/src/lib/modules/filesystem/file.ts b/src/lib/modules/filesystem/file.ts index 9f8827d..7d5feb9 100644 --- a/src/lib/modules/filesystem/file.ts +++ b/src/lib/modules/filesystem/file.ts @@ -126,12 +126,12 @@ const cache = new FilesystemCache({ ); const existingIds = new Set(filesRaw.map(({ id }) => id)); + const deletedIds = idsArray.filter((id) => !existingIds.has(id)); + void IndexedDB.bulkDeleteFileInfos(deletedIds); return new Map([ ...bulkStoreToIndexedDB(files), - ...idsArray - .filter((id) => !existingIds.has(id)) - .map((id) => [id, { id, exists: false }] as const), + ...deletedIds.map((id) => [id, { id, exists: false }] as const), ]); }, }); diff --git a/src/routes/(fullscreen)/gallery/+page.svelte b/src/routes/(fullscreen)/gallery/+page.svelte index e458a12..b27b15f 100644 --- a/src/routes/(fullscreen)/gallery/+page.svelte +++ b/src/routes/(fullscreen)/gallery/+page.svelte @@ -24,8 +24,9 @@ .filter((file) => file.exists) .filter( (file) => file.contentType.startsWith("image/") || file.contentType.startsWith("video/"), - ), - (file) => formatDateSortable(file.createdAt ?? file.lastModifiedAt), + ) + .map((file) => ({ ...file, date: file.createdAt ?? file.lastModifiedAt })), + (file) => formatDateSortable(file.date), ); return Array.from(groups.entries()) .sort(([dateA], [dateB]) => dateB.localeCompare(dateA)) @@ -34,7 +35,7 @@ return [ { type: "header", - label: formatDate(sortedEntries[0]!.createdAt ?? sortedEntries[0]!.lastModifiedAt), + label: formatDate(sortedEntries[0]!.date), }, ...Array.from({ length: Math.ceil(sortedEntries.length / 4) }, (_, i) => { const start = i * 4; diff --git a/src/routes/(main)/home/+page.svelte b/src/routes/(main)/home/+page.svelte index bd3d92d..32e5d31 100644 --- a/src/routes/(main)/home/+page.svelte +++ b/src/routes/(main)/home/+page.svelte @@ -2,22 +2,13 @@ import { onMount } from "svelte"; import { goto } from "$app/navigation"; import { EntryButton, FileThumbnailButton } from "$lib/components/atoms"; - import { bulkGetFileInfo, type MaybeFileInfo } from "$lib/modules/filesystem"; - import { masterKeyStore } from "$lib/stores"; + import { type SummarizedFileInfo } from "$lib/modules/filesystem"; import { requestFreshMediaFilesRetrieval } from "./service"; - let mediaFiles: MaybeFileInfo[] = $state([]); + let mediaFiles: SummarizedFileInfo[] = $state([]); onMount(async () => { - const files = await requestFreshMediaFilesRetrieval(); - mediaFiles = Array.from( - ( - await bulkGetFileInfo( - files.map(({ id }) => id), - $masterKeyStore?.get(1)?.key!, - ) - ).values(), - ); + mediaFiles = await requestFreshMediaFilesRetrieval(); }); @@ -34,9 +25,7 @@ {#if mediaFiles.length > 0}
{#each mediaFiles as file (file.id)} - {#if file.exists} - goto(`/file/${id}`)} /> - {/if} + goto(`/file/${id}`)} /> {/each}
{/if}