63 lines
1.4 KiB
TypeScript
63 lines
1.4 KiB
TypeScript
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);
|
|
}
|
|
}
|