fix(client): lint conformance for the preference services

Replace optional chains on always-present globals with the repo's
typeof guards (store.ts precedent), drop the non-null assertion by
failing loud on an impossible registry miss, and fix two arrow-parens
slips; cover the no-localStorage boot path in both service suites.
This commit is contained in:
imccyu
2026-07-26 01:30:46 +08:00
parent 8cc46e6025
commit 2ee4cda066
6 changed files with 42 additions and 10 deletions
+5 -2
View File
@@ -161,8 +161,10 @@ export class LocaleService {
/** Read the persisted locale id; unknown or unreadable values fall back to zh. */
function restorePreference(): LocaleId {
// Non-browser runs (node e2e booting the client tree) have no localStorage.
if (typeof localStorage === 'undefined') return FALLBACK_LOCALE
try {
const stored = globalThis.localStorage?.getItem(STORAGE_KEY)
const stored = localStorage.getItem(STORAGE_KEY)
if (stored === 'zh' || stored === 'en') return stored
} catch {
// Storage access can throw (privacy mode); the default below covers it.
@@ -172,8 +174,9 @@ function restorePreference(): LocaleId {
/** Persist the locale id; storage failures are non-fatal (preference resets next boot). */
function persistPreference(id: LocaleId): void {
if (typeof localStorage === 'undefined') return
try {
globalThis.localStorage?.setItem(STORAGE_KEY, id)
localStorage.setItem(STORAGE_KEY, id)
} catch {
// Storage access can throw (privacy mode / quota); the preference simply
// does not survive the session.