aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/lib/userLocalSettings
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/lib/userLocalSettings')
-rw-r--r--apps/web/lib/userLocalSettings/bookmarksLayout.tsx8
-rw-r--r--apps/web/lib/userLocalSettings/types.ts1
-rw-r--r--apps/web/lib/userLocalSettings/userLocalSettings.ts11
3 files changed, 20 insertions, 0 deletions
diff --git a/apps/web/lib/userLocalSettings/bookmarksLayout.tsx b/apps/web/lib/userLocalSettings/bookmarksLayout.tsx
index 346c85e0..504d8d8c 100644
--- a/apps/web/lib/userLocalSettings/bookmarksLayout.tsx
+++ b/apps/web/lib/userLocalSettings/bookmarksLayout.tsx
@@ -14,12 +14,20 @@ export const UserLocalSettingsCtx = createContext<
bookmarkGridLayout: defaultLayout,
lang: fallbackLng,
gridColumns: 3,
+ showNotes: false,
});
function useUserLocalSettings() {
return useContext(UserLocalSettingsCtx);
}
+export function useBookmarkDisplaySettings() {
+ const settings = useUserLocalSettings();
+ return {
+ showNotes: settings.showNotes,
+ };
+}
+
export function useBookmarkLayout() {
const settings = useUserLocalSettings();
return settings.bookmarkGridLayout;
diff --git a/apps/web/lib/userLocalSettings/types.ts b/apps/web/lib/userLocalSettings/types.ts
index c87c8c33..54b75b80 100644
--- a/apps/web/lib/userLocalSettings/types.ts
+++ b/apps/web/lib/userLocalSettings/types.ts
@@ -9,6 +9,7 @@ export const zUserLocalSettings = z.object({
bookmarkGridLayout: zBookmarkGridLayout.optional().default("masonry"),
lang: z.string().optional().default("en"),
gridColumns: z.number().min(1).max(6).optional().default(3),
+ showNotes: z.boolean().optional().default(false),
});
export type UserLocalSettings = z.infer<typeof zUserLocalSettings>;
diff --git a/apps/web/lib/userLocalSettings/userLocalSettings.ts b/apps/web/lib/userLocalSettings/userLocalSettings.ts
index 11bd0a84..25c10e1b 100644
--- a/apps/web/lib/userLocalSettings/userLocalSettings.ts
+++ b/apps/web/lib/userLocalSettings/userLocalSettings.ts
@@ -48,3 +48,14 @@ export async function updateGridColumns(gridColumns: number) {
sameSite: "lax",
});
}
+
+export async function updateShowNotes(showNotes: boolean) {
+ const userSettings = (await cookies()).get(USER_LOCAL_SETTINGS_COOKIE_NAME);
+ const parsed = parseUserLocalSettings(userSettings?.value);
+ (await cookies()).set({
+ name: USER_LOCAL_SETTINGS_COOKIE_NAME,
+ value: JSON.stringify({ ...parsed, showNotes }),
+ maxAge: 34560000, // Chrome caps max age to 400 days
+ sameSite: "lax",
+ });
+}