From e4ba8a01272a3d8c5be515f1832c86c892f48ef4 Mon Sep 17 00:00:00 2001 From: Aleix Soler Date: Mon, 17 Nov 2025 18:15:42 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20remove=20status=20bar=20stub=20when=20?= =?UTF-8?q?=E2=80=9CShow=20status=20bar=E2=80=9D=20is=20disabled?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StatusBar/StatusBarEnableButton.tsx | 17 ----- integrations/status-bar/status-bar.tsx | 73 ++++++++++--------- 2 files changed, 39 insertions(+), 51 deletions(-) delete mode 100644 components/StatusBar/StatusBarEnableButton.tsx diff --git a/components/StatusBar/StatusBarEnableButton.tsx b/components/StatusBar/StatusBarEnableButton.tsx deleted file mode 100644 index b3a34ef..0000000 --- a/components/StatusBar/StatusBarEnableButton.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { FC } from "react"; - -export type Props = { - onEnableClick: () => void; -}; - -export const StatusBarEnableButton: FC = ({ onEnableClick }) => { - return ( - - 📊 - - ); -}; diff --git a/integrations/status-bar/status-bar.tsx b/integrations/status-bar/status-bar.tsx index 606efe8..280851f 100644 --- a/integrations/status-bar/status-bar.tsx +++ b/integrations/status-bar/status-bar.tsx @@ -2,7 +2,6 @@ import { createRoot, Root } from "react-dom/client"; import eventBus from "core/eventBus"; import { MarkdownView, Plugin, WorkspaceLeaf } from "obsidian"; import settingsService from "@/core/settingsService"; -import { StatusBarEnableButton } from "@/components/StatusBar/StatusBarEnableButton"; import { StatusBar } from "@/components/StatusBar/StatusBar"; import { NoteStatusService } from "@/core/noteStatusService"; @@ -10,7 +9,7 @@ export class StatusBarIntegration { private static instance: StatusBarIntegration | null = null; private root: Root | null = null; private plugin: Plugin; - private statusBarContainer: HTMLElement; + private statusBarContainer: HTMLElement | null = null; private noteStatusService: NoteStatusService | null = null; private currentLeaf: WorkspaceLeaf | null = null; @@ -23,9 +22,6 @@ export class StatusBarIntegration { } async integrate() { - this.statusBarContainer = this.plugin.addStatusBarItem(); - this.statusBarContainer.classList.add("mod-clickable"); - eventBus.subscribe( "active-file-change", ({ leaf }) => { @@ -131,34 +127,46 @@ export class StatusBarIntegration { }; } + private ensureStatusBarItem() { + if (this.statusBarContainer) { + return; + } + this.statusBarContainer = this.plugin.addStatusBarItem(); + this.statusBarContainer.classList.add("mod-clickable"); + this.statusBarContainer.style.padding = "unset"; + this.root = createRoot(this.statusBarContainer); + } + + private destroyStatusBarItem() { + if (this.root) { + this.root.unmount(); + this.root = null; + } + if (this.statusBarContainer) { + this.statusBarContainer.remove(); + this.statusBarContainer = null; + } + } + private render() { - if (!this.root) { - this.root = createRoot(this.statusBarContainer); - this.statusBarContainer.style.padding = "unset"; - } if (!settingsService.settings.showStatusBar) { - this.root.render( - - settingsService.setValue("showStatusBar", true) - } - />, - ); - } else { - this.root.render( - this.openStatusModal()} - noStatusConfig={this.getNoStatusConfig()} - />, - ); + this.destroyStatusBarItem(); + return; } + + this.ensureStatusBarItem(); + + this.root!.render( + this.openStatusModal()} + noStatusConfig={this.getNoStatusConfig()} + />, + ); } destroy() { @@ -175,10 +183,7 @@ export class StatusBarIntegration { "statusBarIntegrationSubscription3", ); - if (this.root) { - this.root.unmount(); - this.root = null; - } + this.destroyStatusBarItem(); this.currentLeaf = null; this.noteStatusService = null; StatusBarIntegration.instance = null;