import { demoNoteSources } from './demoData' import type { MobileEditorDraft } from './mobileEditorDraft' import { saveMobileEditorDraft } from './mobileEditorDraftSave' import { saveMobileNoteFrontmatter } from './mobileNoteFrontmatterSave' import type { WritableMobileNoteFrontmatter } from './mobileNoteFrontmatterWrite' import { createMobileNoteFile } from './mobileNoteCreate' import { createMobileVaultConfigFromMetadata, defaultMobileVaultMetadata, type MobileVaultMetadata, } from './mobileVaultMetadata' import { createNativeMobileVaultStorage } from './mobileNativeVaultStorage' import { createStoredMobileVaultRepository } from './mobileVaultRepository' import { seedMobileVaultIfEmpty } from './mobileVaultSeed' import type { MobileVaultFile } from './mobileVaultStorage' export async function loadDemoVaultNotes(vaultMetadata = defaultMobileVaultMetadata) { const storage = createNativeMobileVaultStorage() const demoVault = createDemoVaultConfig(vaultMetadata) await seedMobileVaultIfEmpty({ files: demoVaultFiles(), storage, vault: demoVault }) return createStoredMobileVaultRepository({ storage, vault: demoVault }).listNotes() } export function saveDemoVaultDraft(draft: MobileEditorDraft, vaultMetadata = defaultMobileVaultMetadata) { return saveMobileEditorDraft({ draft, storage: createNativeMobileVaultStorage(), vault: createDemoVaultConfig(vaultMetadata), }) } export async function createDemoVaultNote({ title, vaultMetadata = defaultMobileVaultMetadata, }: { title?: string vaultMetadata?: MobileVaultMetadata } = {}) { const storage = createNativeMobileVaultStorage() const demoVault = createDemoVaultConfig(vaultMetadata) const file = createMobileNoteFile({ title }) await storage.writeMarkdownFile(demoVault, file.path, file.content) return createStoredMobileVaultRepository({ storage, vault: demoVault }).readNote(file.path.replace(/\.md$/, '')) } export async function deleteDemoVaultNote(noteId: string, vaultMetadata = defaultMobileVaultMetadata) { const storage = createNativeMobileVaultStorage() await createStoredMobileVaultRepository({ storage, vault: createDemoVaultConfig(vaultMetadata), }).deleteNote(noteId) } export function saveDemoVaultNoteFrontmatter({ metadata, noteId, vaultMetadata = defaultMobileVaultMetadata, }: { metadata: WritableMobileNoteFrontmatter noteId: string vaultMetadata?: MobileVaultMetadata }) { return saveMobileNoteFrontmatter({ metadata, noteId, storage: createNativeMobileVaultStorage(), vault: createDemoVaultConfig(vaultMetadata), }) } function demoVaultFiles(): MobileVaultFile[] { return demoNoteSources.map((source) => ({ path: source.filename, content: source.content, })) } function createDemoVaultConfig(vaultMetadata: MobileVaultMetadata) { return createMobileVaultConfigFromMetadata(vaultMetadata) }