返回 DeepSeek-Reasonix
onboarding.ts
根目录 / desktop / frontend / src / lib / onboarding.ts
1 export const ONBOARDING_DISMISSED_STORAGE_KEY = "reasonix.onboarding.dismissed.v1";
2
3 function onboardingStorage(): Storage | null {
4 try {
5 return typeof window === "undefined" ? null : window.localStorage;
6 } catch {
7 return null;
8 }
9 }
10
11 export function onboardingWasDismissed(storage: Storage | null = onboardingStorage()): boolean {
12 try {
13 return storage?.getItem(ONBOARDING_DISMISSED_STORAGE_KEY) === "1";
14 } catch {
15 return false;
16 }
17 }
18
19 export function dismissOnboarding(storage: Storage | null = onboardingStorage()): void {
20 try {
21 storage?.setItem(ONBOARDING_DISMISSED_STORAGE_KEY, "1");
22 } catch {
23 // A blocked localStorage should not trap the user in the onboarding gate.
24 }
25 }
26
27 export function shouldOpenOnboarding(needsProviderSetup: boolean, storage: Storage | null = onboardingStorage()): boolean {
28 return needsProviderSetup && !onboardingWasDismissed(storage);
29 }
30
30 lines TYPESCRIPT