Spaces:
Runtime error
Runtime error
Download frontend/src/components/video/sourceCache.ts from firebird-technologies/NoteStack-Test: direct link, hf CLI and curl.
- Browser
- Download file 1.86 kB
-
https://huggingface.co/spaces/firebird-technologies/NoteStack-Test/resolve/bcfc8970e84c669c7c9947e4e501dd4ac00d6a8e/frontend/src/components/video/sourceCache.ts
- Command line
-
hf download hf://spaces/firebird-technologies/NoteStack-Test@bcfc8970e84c669c7c9947e4e501dd4ac00d6a8e/frontend/src/components/video/sourceCache.ts
-
curl -L -o sourceCache.ts https://huggingface.co/spaces/firebird-technologies/NoteStack-Test/resolve/bcfc8970e84c669c7c9947e4e501dd4ac00d6a8e/frontend/src/components/video/sourceCache.ts
1.86 kB
| import { notebooksApi } from "../../api/endpoints"; | |
| import type { Doc, NotebookSummary } from "../../api/types"; | |
| /** The video wizard's step 1 lists, kept for the browser session (until a full reload) so re-opening the wizard | |
| * shows them at once. Readers show what is cached, then refresh in the background through the loaders below. */ | |
| export const sourceCache = { | |
| notebooks: null as NotebookSummary[] | null, | |
| archiveId: null as string | null, | |
| docs: new Map<string, Doc[]>(), | |
| }; | |
| /** Forget everything, so one account never sees another's posts (called on log in and log out). */ | |
| export function clearSourceCache(): void { | |
| sourceCache.notebooks = null; | |
| sourceCache.archiveId = null; | |
| sourceCache.docs.clear(); | |
| seededAt.clear(); | |
| } | |
| export async function loadNotebooks(): Promise<NotebookSummary[]> { | |
| const n = await notebooksApi.list(); | |
| sourceCache.notebooks = n; | |
| return n; | |
| } | |
| export async function loadArchiveId(): Promise<string> { | |
| const nb = await notebooksApi.archive(); | |
| sourceCache.archiveId = nb.id; | |
| return nb.id; | |
| } | |
| /** A page that already holds a notebook's current posts (the notebook page) hands them over, so the video wizard | |
| * shows them without loading them again. For a minute SourcePicker trusts them and skips its own refresh. */ | |
| const seededAt = new Map<string, number>(); | |
| const SEED_TRUST_MS = 60_000; | |
| export function seedDocs(notebookId: string, docs: Doc[]): void { | |
| sourceCache.docs.set(notebookId, docs); | |
| seededAt.set(notebookId, Date.now()); | |
| } | |
| export function freshlySeeded(notebookId: string): boolean { | |
| const at = seededAt.get(notebookId); | |
| return at !== undefined && Date.now() - at < SEED_TRUST_MS; | |
| } | |
| export async function loadDocs(notebookId: string): Promise<Doc[]> { | |
| const nb = await notebooksApi.get(notebookId); | |
| sourceCache.docs.set(notebookId, nb.documents); | |
| return nb.documents; | |
| } | |