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/userLocalSettings.ts41
1 files changed, 14 insertions, 27 deletions
diff --git a/apps/web/lib/userLocalSettings/userLocalSettings.ts b/apps/web/lib/userLocalSettings/userLocalSettings.ts
index 25c10e1b..aff3645c 100644
--- a/apps/web/lib/userLocalSettings/userLocalSettings.ts
+++ b/apps/web/lib/userLocalSettings/userLocalSettings.ts
@@ -16,46 +16,33 @@ export async function getUserLocalSettings(): Promise<UserLocalSettings> {
);
}
-export async function updateBookmarksLayout(layout: BookmarksLayoutTypes) {
+async function readModifyWrite(
+ modifier: (settings: UserLocalSettings) => Partial<UserLocalSettings>,
+) {
const userSettings = (await cookies()).get(USER_LOCAL_SETTINGS_COOKIE_NAME);
- const parsed = parseUserLocalSettings(userSettings?.value);
+ const parsed =
+ parseUserLocalSettings(userSettings?.value) ?? defaultUserLocalSettings();
+ const updated = { ...parsed, ...modifier(parsed) };
(await cookies()).set({
name: USER_LOCAL_SETTINGS_COOKIE_NAME,
- value: JSON.stringify({ ...parsed, bookmarkGridLayout: layout }),
+ value: JSON.stringify(updated),
maxAge: 34560000, // Chrome caps max age to 400 days
sameSite: "lax",
});
}
+export async function updateBookmarksLayout(layout: BookmarksLayoutTypes) {
+ await readModifyWrite(() => ({ bookmarkGridLayout: layout }));
+}
+
export async function updateInterfaceLang(lang: string) {
- 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, lang }),
- maxAge: 34560000, // Chrome caps max age to 400 days
- sameSite: "lax",
- });
+ await readModifyWrite(() => ({ lang }));
}
export async function updateGridColumns(gridColumns: number) {
- 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, gridColumns }),
- maxAge: 34560000, // Chrome caps max age to 400 days
- sameSite: "lax",
- });
+ await readModifyWrite(() => ({ gridColumns }));
}
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",
- });
+ await readModifyWrite(() => ({ showNotes }));
}