Something went wrong. Try again.
A local-first note taking app
Something went wrong. Try again.
TypeScript
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758import type { FileSystemProvider } from '../filesystem/types';import type { OpenDocRequest } from '../workspaces/workspace';import type { DocumentHandle } from './types';
export type DocumentOpenCallbacks = { onLoading: () => void; onOpen: (handle: DocumentHandle, request: OpenDocRequest) => void; onError: (message: string, request: OpenDocRequest) => void; /** Remove and return the previous handle; released in `finally` after open settles. */ takePreviousHandle: () => DocumentHandle | null; /** After open, return true if this handle is no longer the active one. */ isStaleHandle?: (handle: DocumentHandle) => boolean;};
/** * Starts opening a document; returns a cancel function for effect cleanup. */export function startDocumentOpen( request: OpenDocRequest, resolveProvider: (providerId: string) => FileSystemProvider | undefined, callbacks: DocumentOpenCallbacks,): () => void { const fs = resolveProvider(request.providerId); if (!fs) return () => undefined;
callbacks.onLoading(); const prevHandle = callbacks.takePreviousHandle();
let cancelled = false; fs.documents .openDocument(request.entryId) .then((handle) => { if (cancelled) { handle.release(); return; } callbacks.onOpen(handle, request); handle.loadPromise.catch((err: unknown) => { if (cancelled || callbacks.isStaleHandle?.(handle)) return; const message = err instanceof Error ? err.message : 'Unknown error'; handle.release(); callbacks.onError(message, request); }); }) .catch((err: unknown) => { if (cancelled) return; const message = err instanceof Error ? err.message : 'Unknown error'; callbacks.onError(message, request); }) .finally(() => { prevHandle?.release(); });
return () => { cancelled = true; };}