umami/src/lib/client.ts
2025-11-12 22:00:42 +01:00

71 lines
1.5 KiB
TypeScript

import { getItem, setItem, removeItem } from '@/lib/storage';
import {
AUTH_TOKEN,
LOCALE_CONFIG,
TIMEZONE_CONFIG,
DATE_RANGE_CONFIG,
THEME_CONFIG,
} from './constants';
import { setLocale, setTimezone, setDateRangeValue } from '@/store/app';
export function getClientAuthToken() {
return getItem(AUTH_TOKEN);
}
export function setClientAuthToken(token: string) {
setItem(AUTH_TOKEN, token);
}
export function removeClientAuthToken() {
removeItem(AUTH_TOKEN);
}
export function setClientPreferences(preferences: {
dateRange?: string | null;
timezone?: string | null;
language?: string | null;
theme?: string | null;
}) {
const { dateRange, timezone, language, theme } = preferences;
if (dateRange !== undefined) {
if (dateRange === null) {
removeItem(DATE_RANGE_CONFIG);
} else {
setItem(DATE_RANGE_CONFIG, dateRange);
setDateRangeValue(dateRange);
}
}
if (timezone !== undefined) {
if (timezone === null) {
removeItem(TIMEZONE_CONFIG);
} else {
setItem(TIMEZONE_CONFIG, timezone);
setTimezone(timezone);
}
}
if (language !== undefined) {
if (language === null) {
removeItem(LOCALE_CONFIG);
} else {
setItem(LOCALE_CONFIG, language);
setLocale(language);
}
}
if (theme !== undefined) {
if (theme === null) {
removeItem(THEME_CONFIG);
} else {
setItem(THEME_CONFIG, theme);
}
}
}
export function removeClientPreferences() {
removeItem(DATE_RANGE_CONFIG);
removeItem(TIMEZONE_CONFIG);
removeItem(THEME_CONFIG);
}