aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/lib/userLocalSettings/userLocalSettings.ts
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2024-11-17 00:33:28 +0000
committerGitHub <noreply@github.com>2024-11-17 00:33:28 +0000
commit4354ee7ba1c6ac9a9567944ae6169b1664e0ea8a (patch)
treee27c9070930514d77582bae00b3350274116179c /apps/web/lib/userLocalSettings/userLocalSettings.ts
parent9f2c7be23769bb0f4102736a683710b1a1939661 (diff)
downloadkarakeep-4354ee7ba1c6ac9a9567944ae6169b1664e0ea8a.tar.zst
feature: Add i18n support. Fixes #57 (#635)
* feature(web): Add basic scaffolding for i18n * refactor: Switch most of the app's strings to use i18n strings * fix: Remove unused i18next-resources-for-ts command * Add user setting * More translations * Drop the german translation for now
Diffstat (limited to 'apps/web/lib/userLocalSettings/userLocalSettings.ts')
-rw-r--r--apps/web/lib/userLocalSettings/userLocalSettings.ts21
1 files changed, 20 insertions, 1 deletions
diff --git a/apps/web/lib/userLocalSettings/userLocalSettings.ts b/apps/web/lib/userLocalSettings/userLocalSettings.ts
index 826e6cf0..311ad99f 100644
--- a/apps/web/lib/userLocalSettings/userLocalSettings.ts
+++ b/apps/web/lib/userLocalSettings/userLocalSettings.ts
@@ -2,12 +2,20 @@
import { cookies } from "next/headers";
-import type { BookmarksLayoutTypes } from "./types";
+import type { BookmarksLayoutTypes, UserLocalSettings } from "./types";
import {
+ defaultUserLocalSettings,
parseUserLocalSettings,
USER_LOCAL_SETTINGS_COOKIE_NAME,
} from "./types";
+export async function getUserLocalSettings(): Promise<UserLocalSettings> {
+ const userSettings = cookies().get(USER_LOCAL_SETTINGS_COOKIE_NAME);
+ return (
+ parseUserLocalSettings(userSettings?.value) ?? defaultUserLocalSettings()
+ );
+}
+
export async function updateBookmarksLayout(layout: BookmarksLayoutTypes) {
const userSettings = cookies().get(USER_LOCAL_SETTINGS_COOKIE_NAME);
const parsed = parseUserLocalSettings(userSettings?.value);
@@ -18,3 +26,14 @@ export async function updateBookmarksLayout(layout: BookmarksLayoutTypes) {
sameSite: "lax",
});
}
+
+export async function updateInterfaceLang(lang: string) {
+ const userSettings = cookies().get(USER_LOCAL_SETTINGS_COOKIE_NAME);
+ const parsed = parseUserLocalSettings(userSettings?.value);
+ cookies().set({
+ name: USER_LOCAL_SETTINGS_COOKIE_NAME,
+ value: JSON.stringify({ ...parsed, lang }),
+ maxAge: 34560000, // Chrome caps max age to 400 days
+ sameSite: "lax",
+ });
+}