import { Plugin } from "obsidian"; import { DEFAULT_SETTINGS, LimitlessPluginSettings, LimitlessSettingTab, } from "./settings.ts"; import { createActor } from "xstate"; import { pluginActor } from "./actors/plugin.ts"; export default class LimitlessPlugin extends Plugin { settings!: LimitlessPluginSettings; override async onload() { await this.loadSettings(); this.addSettingTab(new LimitlessSettingTab(this.app, this)); const readyActor = pluginActor.provide({ actions: { persistLatestLog: async (_, params) => { this.settings.latestLog = params.endDate.toISOString(); await this.saveSettings(); }, }, }); const actor = createActor(readyActor, { input: { ...this.settings, vault: this.app.vault, }, }); actor.subscribe((snapshot) => { console.log(snapshot.value); }); actor.start(); this.addCommand({ id: "limitless-lifelogs-sync", name: "Sync Lifelogs Now", callback: () => { actor.send({ type: "lifelogs::sync" }); }, }); if (this.settings.syncAtStart) { actor.send({ type: "lifelogs::sync" }); } } override onunload() { } async loadSettings() { this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); } async saveSettings() { await this.saveData(this.settings); } }