Automerge backed Markdown editor for the Atmosphere
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132import type { AutomergeUrl } from '../../storage/document-runtime-contract'import type { VaultStateData } from '../../services/vault-state-data'
/** Plugin settings live only in the vault's hidden state subtree. */export class PluginSettingsStore { private readonly urls = new Map<string, AutomergeUrl>()
constructor(private readonly stateData: VaultStateData) {}
async load(pluginId: string): Promise<unknown | null> { const url = await this.stateData.file('plugin-settings', pluginId) this.urls.set(pluginId, url) return this.stateData.load('plugin-settings', pluginId) }
async save(pluginId: string, data: unknown): Promise<void> { const url = await this.stateData.file('plugin-settings', pluginId) await this.stateData.save('plugin-settings', pluginId, data) this.urls.set(pluginId, url) }
async delete(pluginId: string): Promise<void> { const url = await this.stateData.file('plugin-settings', pluginId) await this.stateData.clear('plugin-settings', pluginId) this.urls.set(pluginId, url) }
getSettingsUrl(pluginId: string): AutomergeUrl | null { return this.urls.get(pluginId) ?? null }}