diff --git a/apps/client/src/widgets/buttons/protected_session_status.ts b/apps/client/src/widgets/buttons/protected_session_status.ts
deleted file mode 100644
index e5dde7d3d..000000000
--- a/apps/client/src/widgets/buttons/protected_session_status.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { t } from "../../services/i18n.js";
-import protectedSessionHolder from "../../services/protected_session_holder.js";
-import CommandButtonWidget from "./command_button.js";
-
-export default class ProtectedSessionStatusWidget extends CommandButtonWidget {
- constructor() {
- super();
-
- this.class("launcher-button");
-
- this.settings.icon = () => (protectedSessionHolder.isProtectedSessionAvailable() ? "bx-check-shield" : "bx-shield-quarter");
-
- this.settings.title = () => (protectedSessionHolder.isProtectedSessionAvailable() ? t("protected_session_status.active") : t("protected_session_status.inactive"));
-
- this.settings.command = () => (protectedSessionHolder.isProtectedSessionAvailable() ? "leaveProtectedSession" : "enterProtectedSession");
- }
-
- protectedSessionStartedEvent() {
- this.refreshIcon();
- }
-}
diff --git a/apps/client/src/widgets/containers/launcher.tsx b/apps/client/src/widgets/containers/launcher.tsx
index 19a46fbf0..17707a171 100644
--- a/apps/client/src/widgets/containers/launcher.tsx
+++ b/apps/client/src/widgets/containers/launcher.tsx
@@ -1,5 +1,4 @@
import CalendarWidget from "../buttons/calendar.js";
-import ProtectedSessionStatusWidget from "../buttons/protected_session_status.js";
import SyncStatusWidget from "../sync_status.js";
import BasicWidget, { wrapReactWidgets } from "../basic_widget.js";
import NoteLauncher from "../buttons/launcher/note_launcher.js";
@@ -14,6 +13,7 @@ import BookmarkButtons from "../launch_bar/BookmarkButtons.jsx";
import SpacerWidget from "../launch_bar/SpacerWidget.jsx";
import HistoryNavigationButton from "../launch_bar/HistoryNavigation.jsx";
import AiChatButton from "../launch_bar/AiChatButton.jsx";
+import ProtectedSessionStatusWidget from "../launch_bar/ProtectedSessionStatusWidget.jsx";
interface InnerWidget extends BasicWidget {
settings?: {
@@ -113,7 +113,7 @@ export default class LauncherWidget extends BasicWidget {
case "bookmarks":
return
case "protectedSession":
- return new ProtectedSessionStatusWidget();
+ return
case "syncStatus":
return new SyncStatusWidget();
case "backInHistoryButton":
diff --git a/apps/client/src/widgets/launch_bar/ProtectedSessionStatusWidget.tsx b/apps/client/src/widgets/launch_bar/ProtectedSessionStatusWidget.tsx
new file mode 100644
index 000000000..539643d4f
--- /dev/null
+++ b/apps/client/src/widgets/launch_bar/ProtectedSessionStatusWidget.tsx
@@ -0,0 +1,33 @@
+import { useState } from "preact/hooks";
+import protected_session_holder from "../../services/protected_session_holder";
+import { LaunchBarActionButton } from "./launch_bar_widgets";
+import { useTriliumEvent } from "../react/hooks";
+import { t } from "../../services/i18n";
+
+export default function ProtectedSessionStatusWidget() {
+ const protectedSessionAvailable = useProtectedSessionAvailable();
+
+ return (
+ protectedSessionAvailable ? (
+
+ ) : (
+
+ )
+ )
+}
+
+function useProtectedSessionAvailable() {
+ const [ protectedSessionAvailable, setProtectedSessionAvailable ] = useState(protected_session_holder.isProtectedSessionAvailable());
+ useTriliumEvent("protectedSessionStarted", () => {
+ setProtectedSessionAvailable(protected_session_holder.isProtectedSessionAvailable());
+ });
+ return protectedSessionAvailable;
+}