diff --git a/src/main.ts b/src/main.ts index 7cb7b9d..07adda6 100644 --- a/src/main.ts +++ b/src/main.ts @@ -13,6 +13,8 @@ import * as NotesIndex from './notes-index' import * as FileLoader from './file-loader' export default class OmnisearchPlugin extends Plugin { + private ribbonButton?: HTMLElement + async onload(): Promise { await cleanOldCacheFiles() await loadSettings(this) @@ -88,10 +90,16 @@ export default class OmnisearchPlugin extends Plugin { } addRibbonButton(): void { - this.addRibbonIcon('search', 'Omnisearch', _evt => { + this.ribbonButton = this.addRibbonIcon('search', 'Omnisearch', _evt => { new OmnisearchVaultModal(app).open() }) } + + removeRibbonButton(): void { + if (this.ribbonButton) { + this.ribbonButton.parentNode?.removeChild(this.ribbonButton) + } + } } /** diff --git a/src/settings.ts b/src/settings.ts index bb603d8..f3c44a6 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -200,7 +200,7 @@ export class SettingsTab extends PluginSettingTab { new Setting(containerEl) .setName('Show ribbon button') .setDesc( - 'Add a button on the sidebar to open the Vault search modal. Needs a restart to remove the button.' + 'Add a button on the sidebar to open the Vault search modal.' ) .addToggle(toggle => toggle.setValue(settings.ribbonIcon).onChange(async v => { @@ -208,6 +208,8 @@ export class SettingsTab extends PluginSettingTab { await saveSettings(this.plugin) if (v) { this.plugin.addRibbonButton() + } else { + this.plugin.removeRibbonButton() } }) )