web based infinite canvas
at main 37 lines 1.1 kB view raw
1import type { PersistentDocRepo } from "inkfinite-core"; 2import { createWebDocRepo, InkfiniteDB } from "inkfinite-core"; 3import { createDesktopFileOps } from "./fileops"; 4import { createDesktopDocRepo, type DesktopDocRepo } from "./persistence/desktop"; 5 6export type Platform = "web" | "desktop"; 7 8export function detectPlatform(): Platform { 9 if (typeof window !== "undefined" && "__TAURI__" in window) { 10 return "desktop"; 11 } 12 return "web"; 13} 14 15export type PlatformRepoResult = { 16 repo: PersistentDocRepo; 17 platform: Platform; 18 db?: InkfiniteDB; 19 desktop?: DesktopDocRepo; 20}; 21 22/** 23 * Create the appropriate DocRepo based on platform 24 */ 25export async function createPlatformRepo(): Promise<PlatformRepoResult> { 26 const platform = detectPlatform(); 27 28 if (platform === "desktop") { 29 const fileOps = createDesktopFileOps(); 30 const repo = createDesktopDocRepo(fileOps); 31 return { repo, platform, desktop: repo }; 32 } else { 33 const db = new InkfiniteDB(); 34 const repo = createWebDocRepo(db); 35 return { repo, platform, db }; 36 } 37}