import { type Editor, type MarkdownFileInfo, type MarkdownView } from "@/deps.ts"; import { addIcon } from "@/deps.ts"; import { type FilePathWithPrefix } from "@lib/common/types.ts"; import { $msg } from "@lib/common/i18n.ts"; import type { LiveSyncCore } from "@/main.ts"; import { AbstractModule } from "../AbstractModule.ts"; // Obsidian specific menu commands. export class ModuleObsidianMenu extends AbstractModule { _everyOnloadStart(): Promise { // UI addIcon( "replicate", ` ` ); this.addRibbonIcon("replicate", $msg("moduleObsidianMenu.replicate"), async () => { await this.services.replication.replicate(true); }).addClass("livesync-ribbon-replicate"); this.addCommand({ id: "livesync-checkdoc-conflicted", name: "Resolve if conflicted.", editorCallback: (editor: Editor, view: MarkdownView | MarkdownFileInfo) => { const file = view.file; if (!file) return; void this.services.conflict.queueCheckForIfOpen(file.path as FilePathWithPrefix); }, }); return Promise.resolve(true); } override onBindFunction(core: LiveSyncCore, services: typeof core.services): void { services.appLifecycle.onInitialise.addHandler(this._everyOnloadStart.bind(this)); } }