0f3060dcf3
Co-authored-by: Cursor <cursoragent@cursor.com>
22 lines
616 B
TypeScript
22 lines
616 B
TypeScript
/**
|
|
* 从 localStorage 获取同步快照(用于消除异步加载产生的首屏闪烁)
|
|
*/
|
|
export function getSyncSnapshot<T>(
|
|
key: string,
|
|
defaultValue: T,
|
|
validator?: (val: unknown) => val is T,
|
|
): T {
|
|
try {
|
|
const val = localStorage.getItem(`snapshot/${key}`);
|
|
if (!val) return defaultValue;
|
|
const parsed = JSON.parse(val) as unknown;
|
|
if (validator) {
|
|
return validator(parsed) ? parsed : defaultValue;
|
|
}
|
|
return (parsed as T) ?? defaultValue;
|
|
} catch (error) {
|
|
console.error(`[SyncSnapshot] Failed to read snapshot/${key}:`, error);
|
|
return defaultValue;
|
|
}
|
|
}
|