Files
Termix/src/ui/look/resolve-look.ts
T

45 lines
1.4 KiB
TypeScript

import type { LookResponse } from "@/api/look-api";
/** The theme a fresh install starts in when nothing else says otherwise. */
export const FALLBACK_THEME = "dark";
/**
* The layout to show: the user's choice, else the admin default, else the
* default look. Empty when none of them names one, which the repair view
* answers. Without an answer from the server the last layout this browser
* showed stands in.
*/
export function resolveLayoutId(
look: LookResponse | null,
lastShown: string | null = null,
): string {
if (!look) return lastShown ?? "";
return look.layoutId ?? look.defaults.layout ?? look.defaultLook.layout ?? "";
}
/**
* The theme to show: the user's choice, else the one this browser kept
* (today's per-device setting, so existing users see no change), else the
* admin default, else the layout's own, else the default look's.
*/
export function resolveThemeId(
look: LookResponse | null,
localTheme: string | null,
layoutDefaultTheme?: string,
): string {
return (
look?.themeId ??
localTheme ??
look?.defaults.theme ??
layoutDefaultTheme ??
look?.defaultLook.theme ??
FALLBACK_THEME
);
}
/** ?safe-layout=1 in the address bar opens the repair view. */
export function safeLayoutInUrl(search: string): boolean {
const value = new URLSearchParams(search).get("safe-layout");
return value === "1" || value === "true";
}