mirror of
https://github.com/kmc7468/arkvault.git
synced 2026-02-04 08:06:56 +00:00
사소한 버그 수정
This commit is contained in:
@@ -96,6 +96,10 @@ export const deleteFileInfo = async (id: number) => {
|
|||||||
await filesystem.file.delete(id);
|
await filesystem.file.delete(id);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const bulkDeleteFileInfos = async (ids: number[]) => {
|
||||||
|
await filesystem.file.bulkDelete(ids);
|
||||||
|
};
|
||||||
|
|
||||||
export const deleteDanglingFileInfos = async (parentId: DirectoryId, validIds: Set<number>) => {
|
export const deleteDanglingFileInfos = async (parentId: DirectoryId, validIds: Set<number>) => {
|
||||||
await filesystem.file
|
await filesystem.file
|
||||||
.where({ parentId })
|
.where({ parentId })
|
||||||
|
|||||||
@@ -126,12 +126,12 @@ const cache = new FilesystemCache<number, MaybeFileInfo>({
|
|||||||
);
|
);
|
||||||
|
|
||||||
const existingIds = new Set(filesRaw.map(({ id }) => id));
|
const existingIds = new Set(filesRaw.map(({ id }) => id));
|
||||||
|
const deletedIds = idsArray.filter((id) => !existingIds.has(id));
|
||||||
|
|
||||||
|
void IndexedDB.bulkDeleteFileInfos(deletedIds);
|
||||||
return new Map<number, MaybeFileInfo>([
|
return new Map<number, MaybeFileInfo>([
|
||||||
...bulkStoreToIndexedDB(files),
|
...bulkStoreToIndexedDB(files),
|
||||||
...idsArray
|
...deletedIds.map((id) => [id, { id, exists: false }] as const),
|
||||||
.filter((id) => !existingIds.has(id))
|
|
||||||
.map((id) => [id, { id, exists: false }] as const),
|
|
||||||
]);
|
]);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -24,8 +24,9 @@
|
|||||||
.filter((file) => file.exists)
|
.filter((file) => file.exists)
|
||||||
.filter(
|
.filter(
|
||||||
(file) => file.contentType.startsWith("image/") || file.contentType.startsWith("video/"),
|
(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())
|
return Array.from(groups.entries())
|
||||||
.sort(([dateA], [dateB]) => dateB.localeCompare(dateA))
|
.sort(([dateA], [dateB]) => dateB.localeCompare(dateA))
|
||||||
@@ -34,7 +35,7 @@
|
|||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
type: "header",
|
type: "header",
|
||||||
label: formatDate(sortedEntries[0]!.createdAt ?? sortedEntries[0]!.lastModifiedAt),
|
label: formatDate(sortedEntries[0]!.date),
|
||||||
},
|
},
|
||||||
...Array.from({ length: Math.ceil(sortedEntries.length / 4) }, (_, i) => {
|
...Array.from({ length: Math.ceil(sortedEntries.length / 4) }, (_, i) => {
|
||||||
const start = i * 4;
|
const start = i * 4;
|
||||||
|
|||||||
@@ -2,22 +2,13 @@
|
|||||||
import { onMount } from "svelte";
|
import { onMount } from "svelte";
|
||||||
import { goto } from "$app/navigation";
|
import { goto } from "$app/navigation";
|
||||||
import { EntryButton, FileThumbnailButton } from "$lib/components/atoms";
|
import { EntryButton, FileThumbnailButton } from "$lib/components/atoms";
|
||||||
import { bulkGetFileInfo, type MaybeFileInfo } from "$lib/modules/filesystem";
|
import { type SummarizedFileInfo } from "$lib/modules/filesystem";
|
||||||
import { masterKeyStore } from "$lib/stores";
|
|
||||||
import { requestFreshMediaFilesRetrieval } from "./service";
|
import { requestFreshMediaFilesRetrieval } from "./service";
|
||||||
|
|
||||||
let mediaFiles: MaybeFileInfo[] = $state([]);
|
let mediaFiles: SummarizedFileInfo[] = $state([]);
|
||||||
|
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
const files = await requestFreshMediaFilesRetrieval();
|
mediaFiles = await requestFreshMediaFilesRetrieval();
|
||||||
mediaFiles = Array.from(
|
|
||||||
(
|
|
||||||
await bulkGetFileInfo(
|
|
||||||
files.map(({ id }) => id),
|
|
||||||
$masterKeyStore?.get(1)?.key!,
|
|
||||||
)
|
|
||||||
).values(),
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -34,9 +25,7 @@
|
|||||||
{#if mediaFiles.length > 0}
|
{#if mediaFiles.length > 0}
|
||||||
<div class="grid grid-cols-4 gap-2 p-2">
|
<div class="grid grid-cols-4 gap-2 p-2">
|
||||||
{#each mediaFiles as file (file.id)}
|
{#each mediaFiles as file (file.id)}
|
||||||
{#if file.exists}
|
<FileThumbnailButton info={file} onclick={({ id }) => goto(`/file/${id}`)} />
|
||||||
<FileThumbnailButton info={file} onclick={({ id }) => goto(`/file/${id}`)} />
|
|
||||||
{/if}
|
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
Reference in New Issue
Block a user