83 lines
2.8 KiB
TypeScript
83 lines
2.8 KiB
TypeScript
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)
|
|
}
|