Download src/components/tuition/tuitionSetupPersistence.ts from asnannp/DocDoeAI: direct link, hf CLI and curl.
- Browser
- Download file 2.15 kB
-
https://huggingface.co/spaces/asnannp/DocDoeAI/resolve/main/src/components/tuition/tuitionSetupPersistence.ts
- Command line
-
hf download hf://spaces/asnannp/DocDoeAI/src/components/tuition/tuitionSetupPersistence.ts
-
curl -L -o tuitionSetupPersistence.ts https://huggingface.co/spaces/asnannp/DocDoeAI/resolve/main/src/components/tuition/tuitionSetupPersistence.ts
2.15 kB
| import { getTuitionProfileRemote, saveTuitionProfileRemote } from "@/lib/api/tuition-profile"; | |
| import { defaultTuitionSetup, normalizeTuitionSetup, TUITION_SETUP_STORAGE_KEY, type TuitionSetup } from "./tuitionModel"; | |
| type StoredTuitionState = { | |
| setup?: Partial<TuitionSetup>; | |
| selectedSourceId?: string | null; | |
| completedTaskIds?: string[]; | |
| }; | |
| function parseStoredSetup(raw: string | null): Partial<TuitionSetup> | null { | |
| if (!raw) return null; | |
| try { | |
| const parsed = JSON.parse(raw) as StoredTuitionState | Partial<TuitionSetup>; | |
| if (parsed && typeof parsed === "object" && "setup" in parsed) { | |
| return (parsed as StoredTuitionState).setup ?? null; | |
| } | |
| return parsed as Partial<TuitionSetup>; | |
| } catch { | |
| return null; | |
| } | |
| } | |
| export function readLocalTuitionSetup(fallback: TuitionSetup = defaultTuitionSetup): TuitionSetup { | |
| if (typeof window === "undefined") return normalizeTuitionSetup(null, fallback); | |
| const stored = parseStoredSetup(window.localStorage.getItem(TUITION_SETUP_STORAGE_KEY)); | |
| return normalizeTuitionSetup(stored, fallback); | |
| } | |
| export function writeLocalTuitionSetup(setup: TuitionSetup): void { | |
| if (typeof window === "undefined") return; | |
| try { | |
| const raw = window.localStorage.getItem(TUITION_SETUP_STORAGE_KEY); | |
| const existing = raw ? (JSON.parse(raw) as StoredTuitionState | TuitionSetup) : null; | |
| const next = | |
| existing && typeof existing === "object" && "setup" in existing | |
| ? { ...existing, setup } | |
| : { setup }; | |
| window.localStorage.setItem(TUITION_SETUP_STORAGE_KEY, JSON.stringify(next)); | |
| } catch { | |
| window.localStorage.setItem(TUITION_SETUP_STORAGE_KEY, JSON.stringify({ setup })); | |
| } | |
| } | |
| export async function hydrateTuitionSetup(fallback: TuitionSetup = defaultTuitionSetup): Promise<TuitionSetup> { | |
| const local = readLocalTuitionSetup(fallback); | |
| const remote = await getTuitionProfileRemote(); | |
| const setup = remote ?? local; | |
| writeLocalTuitionSetup(setup); | |
| return setup; | |
| } | |
| export async function persistTuitionSetup(setup: TuitionSetup): Promise<boolean> { | |
| writeLocalTuitionSetup(setup); | |
| return saveTuitionProfileRemote(setup); | |
| } | |