diff --git a/src/lib/components/atoms/buttons/FileThumbnailButton.svelte b/src/lib/components/atoms/buttons/FileThumbnailButton.svelte
index e95d07c..7c112d5 100644
--- a/src/lib/components/atoms/buttons/FileThumbnailButton.svelte
+++ b/src/lib/components/atoms/buttons/FileThumbnailButton.svelte
@@ -24,10 +24,10 @@
+
{/if}
diff --git a/src/lib/components/molecules/labels/DirectoryEntryLabel.svelte b/src/lib/components/molecules/labels/DirectoryEntryLabel.svelte
index 001631b..049fb1f 100644
--- a/src/lib/components/molecules/labels/DirectoryEntryLabel.svelte
+++ b/src/lib/components/molecules/labels/DirectoryEntryLabel.svelte
@@ -43,7 +43,7 @@
{/if}
diff --git a/src/lib/indexedDB/filesystem.ts b/src/lib/indexedDB/filesystem.ts
index d5c3e4d..daaf100 100644
--- a/src/lib/indexedDB/filesystem.ts
+++ b/src/lib/indexedDB/filesystem.ts
@@ -4,7 +4,7 @@ interface DirectoryInfo {
id: number;
parentId: DirectoryId;
name: string;
- isFavorite?: boolean;
+ isFavorite: boolean;
}
interface FileInfo {
@@ -15,7 +15,7 @@ interface FileInfo {
createdAt?: Date;
lastModifiedAt: Date;
categoryIds?: number[];
- isFavorite?: boolean;
+ isFavorite: boolean;
}
interface CategoryInfo {
@@ -48,6 +48,23 @@ filesystem
});
});
+filesystem.version(4).upgrade(async (trx) => {
+ await Promise.all([
+ trx
+ .table("directory")
+ .toCollection()
+ .modify((directory) => {
+ directory.isFavorite = false;
+ }),
+ trx
+ .table("file")
+ .toCollection()
+ .modify((file) => {
+ file.isFavorite = false;
+ }),
+ ]);
+});
+
export const getDirectoryInfos = async (parentId: DirectoryId) => {
return await filesystem.directory.where({ parentId }).toArray();
};
diff --git a/src/lib/modules/filesystem/category.ts b/src/lib/modules/filesystem/category.ts
index db0ec45..041dbb1 100644
--- a/src/lib/modules/filesystem/category.ts
+++ b/src/lib/modules/filesystem/category.ts
@@ -66,8 +66,8 @@ const cache = new FilesystemCache
({
id: file.id,
parentId: file.parent,
contentType: file.contentType,
- isRecursive: file.isRecursive,
isFavorite: file.isFavorite,
+ isRecursive: file.isRecursive,
...(await decryptFileMetadata(file, masterKey)),
})),
),
diff --git a/src/lib/modules/filesystem/directory.ts b/src/lib/modules/filesystem/directory.ts
index 361b3c5..5626e31 100644
--- a/src/lib/modules/filesystem/directory.ts
+++ b/src/lib/modules/filesystem/directory.ts
@@ -27,6 +27,7 @@ const cache = new FilesystemCache({
name: directory.name,
subDirectories,
files,
+ isFavorite: directory.isFavorite,
};
}
},
@@ -62,6 +63,7 @@ const cache = new FilesystemCache({
parentId: directory.metadata!.parent,
subDirectories,
files,
+ isFavorite: directory.metadata!.isFavorite,
...metadata!,
}
: { id, subDirectories, files },
diff --git a/src/lib/modules/filesystem/file.ts b/src/lib/modules/filesystem/file.ts
index 2517c02..3298f31 100644
--- a/src/lib/modules/filesystem/file.ts
+++ b/src/lib/modules/filesystem/file.ts
@@ -27,8 +27,8 @@ const cache = new FilesystemCache({
name: file.name,
createdAt: file.createdAt,
lastModifiedAt: file.lastModifiedAt,
- isFavorite: file.isFavorite,
categories: categories?.filter((category) => !!category) ?? [],
+ isFavorite: file.isFavorite,
};
}
},
@@ -56,8 +56,8 @@ const cache = new FilesystemCache({
name: metadata.name,
createdAt: metadata.createdAt,
lastModifiedAt: metadata.lastModifiedAt,
- isFavorite: file.isFavorite,
categories,
+ isFavorite: file.isFavorite,
});
} catch (e) {
if (isTRPCClientError(e) && e.data?.code === "NOT_FOUND") {
diff --git a/src/lib/modules/filesystem/types.ts b/src/lib/modules/filesystem/types.ts
index f2bfbe6..254d4c7 100644
--- a/src/lib/modules/filesystem/types.ts
+++ b/src/lib/modules/filesystem/types.ts
@@ -1,14 +1,13 @@
export type DataKey = { key: CryptoKey; version: Date };
-type AllUndefined = { [K in keyof T]?: undefined };
export interface LocalDirectoryInfo {
id: number;
parentId: DirectoryId;
dataKey?: DataKey;
name: string;
- isFavorite?: boolean;
subDirectories: SubDirectoryInfo[];
files: SummarizedFileInfo[];
+ isFavorite: boolean;
}
export interface RootDirectoryInfo {
@@ -18,6 +17,7 @@ export interface RootDirectoryInfo {
name?: undefined;
subDirectories: SubDirectoryInfo[];
files: SummarizedFileInfo[];
+ isFavorite?: undefined;
}
export type DirectoryInfo = LocalDirectoryInfo | RootDirectoryInfo;
@@ -37,7 +37,7 @@ export interface FileInfo {
createdAt?: Date;
lastModifiedAt: Date;
categories: FileCategoryInfo[];
- isFavorite?: boolean;
+ isFavorite: boolean;
}
export type MaybeFileInfo =
diff --git a/src/lib/server/db/migrations/1768643000-AddFavorites.ts b/src/lib/server/db/migrations/1768643000-AddFavorites.ts
index d18cce0..660e116 100644
--- a/src/lib/server/db/migrations/1768643000-AddFavorites.ts
+++ b/src/lib/server/db/migrations/1768643000-AddFavorites.ts
@@ -1,4 +1,4 @@
-import { Kysely, sql } from "kysely";
+import { Kysely } from "kysely";
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const up = async (db: Kysely) => {
diff --git a/src/lib/types/utils.d.ts b/src/lib/types/utils.d.ts
new file mode 100644
index 0000000..498b8ae
--- /dev/null
+++ b/src/lib/types/utils.d.ts
@@ -0,0 +1 @@
+type AllUndefined = { [K in keyof T]?: undefined };
diff --git a/src/routes/(fullscreen)/settings/migration/service.svelte.ts b/src/routes/(fullscreen)/settings/migration/service.svelte.ts
index 9f1f7eb..a304e38 100644
--- a/src/routes/(fullscreen)/settings/migration/service.svelte.ts
+++ b/src/routes/(fullscreen)/settings/migration/service.svelte.ts
@@ -48,6 +48,7 @@ export const requestLegacyFiles = async (
isLegacy: file.isLegacy,
parentId: file.parent,
contentType: file.contentType,
+ isFavorite: file.isFavorite,
...metadata,
};
},
diff --git a/src/routes/(fullscreen)/settings/thumbnail/service.ts b/src/routes/(fullscreen)/settings/thumbnail/service.ts
index ce06b78..11ef262 100644
--- a/src/routes/(fullscreen)/settings/thumbnail/service.ts
+++ b/src/routes/(fullscreen)/settings/thumbnail/service.ts
@@ -53,6 +53,7 @@ export const requestMissingThumbnailFiles = async (
isLegacy: file.isLegacy,
parentId: file.parent,
contentType: file.contentType,
+ isFavorite: file.isFavorite,
...metadata,
};
},
diff --git a/src/trpc/routers/file.ts b/src/trpc/routers/file.ts
index ad06cdc..30aaacd 100644
--- a/src/trpc/routers/file.ts
+++ b/src/trpc/routers/file.ts
@@ -114,6 +114,7 @@ const fileRouter = router({
createdAtIv: file.encCreatedAt?.iv,
lastModifiedAt: file.encLastModifiedAt.ciphertext,
lastModifiedAtIv: file.encLastModifiedAt.iv,
+ isFavorite: file.isFavorite,
}));
}),
@@ -133,6 +134,7 @@ const fileRouter = router({
createdAtIv: file.encCreatedAt?.iv,
lastModifiedAt: file.encLastModifiedAt.ciphertext,
lastModifiedAtIv: file.encLastModifiedAt.iv,
+ isFavorite: file.isFavorite,
}));
}),