translations and pickers

This commit is contained in:
Mateusz Gruszczyński
2026-09-05 08:56:45 +02:00
parent e68ad69bc5
commit bf34a7cab1
18 changed files with 606 additions and 63 deletions
+12 -5
View File
@@ -7,8 +7,8 @@
* See LICENSE file in repository root for details.
*/
import { applySessionTheme } from "@rustpad/theme";
import { setLanguage } from "@rustpad/i18n";
import { applySessionTheme, rememberGuestTheme, restoreGuestTheme } from "@rustpad/theme";
import { getLanguage, rememberGuestLanguage, restoreGuestLanguage, setLanguage } from "@rustpad/i18n";
const ACCESS_STORAGE_VERSION_KEY = "rustpad:access-storage-version";
const ACCESS_STORAGE_VERSION = "http-only-cookie-v1";
@@ -84,10 +84,16 @@ localStorage.removeItem("rustpad:auth-token");
sessionStorage.removeItem("rustpad:auth-token");
export function getAuthToken() { return localStorage.getItem(AUTH_STATE_KEY) ? "cookie" : ""; }
export async function setAuthSession(session) {
const hadAccountSession = localStorage.getItem(AUTH_STATE_KEY) === "1";
if (!hadAccountSession) {
rememberGuestTheme();
rememberGuestLanguage(getLanguage());
}
localStorage.setItem(AUTH_STATE_KEY, "1");
setNickname(session.nickname);
applySessionTheme(session);
await setLanguage(session?.language || "en");
await setLanguage(session?.language || "en", { scope: "account" });
window.dispatchEvent(new CustomEvent("rustpad:session-change", { detail: { session } }));
}
export async function clearAuthSession() {
localStorage.removeItem(AUTH_STATE_KEY);
@@ -95,7 +101,8 @@ export async function clearAuthSession() {
sessionStorage.removeItem("rustpad:auth-token");
localStorage.removeItem(NICKNAME_KEY);
sessionStorage.removeItem(NICKNAME_KEY);
localStorage.removeItem("rustpad:language");
setNicknameCookie("");
await setLanguage("en", { persist: false });
restoreGuestTheme();
await restoreGuestLanguage();
window.dispatchEvent(new CustomEvent("rustpad:session-change", { detail: { session: null } }));
}