diff --git a/frontend/obsidian-plugin/src/vault-link-plugin.ts b/frontend/obsidian-plugin/src/vault-link-plugin.ts index 4287d636..ad93ba69 100644 --- a/frontend/obsidian-plugin/src/vault-link-plugin.ts +++ b/frontend/obsidian-plugin/src/vault-link-plugin.ts @@ -43,6 +43,14 @@ export default class VaultLinkPlugin extends Plugin { public async onload(): Promise { this.app.workspace.onLayoutReady(async () => { + if ((globalThis as any).VAULT_LINK_RUNNING_INSTANCE) { + new Notice( + "Another instance of VaultLink is already running. Please disable the duplicate instance." + ); + throw new Error("VaultLink instance already running"); + } + (globalThis as any).VAULT_LINK_RUNNING_INSTANCE = this; + const client = await this.createSyncClient(); this.registerObsidianExtensions(client); @@ -188,6 +196,10 @@ export default class VaultLinkPlugin extends Plugin { this.register(() => { editorStatusDisplayManager.dispose(); }); + + this.register(() => { + (globalThis as any).VAULT_LINK_RUNNING_INSTANCE = null; + }); } private addRibbonIcons(): void {