diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json
index ab3a9aad..5e64bdb3 100644
--- a/src/i18n/locales/en.json
+++ b/src/i18n/locales/en.json
@@ -288,6 +288,11 @@
"updateServer": {
"success": "server updated successfully",
"title": "update server"
+ },
+ "privateMode": {
+ "enabled": "private mode enabled, playback status is now hidden from external integrations",
+ "disabled": "private mode disabled, playback status is now visible to enabled external integrations",
+ "title": "private mode"
}
},
"page": {
diff --git a/src/renderer/features/titlebar/components/app-menu.tsx b/src/renderer/features/titlebar/components/app-menu.tsx
index a240d22d..9c56a35e 100644
--- a/src/renderer/features/titlebar/components/app-menu.tsx
+++ b/src/renderer/features/titlebar/components/app-menu.tsx
@@ -19,6 +19,7 @@ import {
} from '/@/renderer/store';
import { DropdownMenu } from '/@/shared/components/dropdown-menu/dropdown-menu';
import { Icon } from '/@/shared/components/icon/icon';
+import { toast } from '/@/shared/components/toast/toast';
import { ServerListItem, ServerType } from '/@/shared/types/domain-types';
const browser = isElectron() ? window.api.browser : null;
@@ -84,10 +85,18 @@ export const AppMenu = () => {
const handlePrivateModeOff = () => {
setPrivateMode(false);
+ toast.info({
+ message: t('form.privateMode.disabled', { postProcess: 'sentenceCase' }),
+ title: t('form.privateMode.title', { postProcess: 'sentenceCase' }),
+ });
};
const handlePrivateModeOn = () => {
setPrivateMode(true);
+ toast.info({
+ message: t('form.privateMode.enabled', { postProcess: 'sentenceCase' }),
+ title: t('form.privateMode.title', { postProcess: 'sentenceCase' }),
+ });
};
const handleQuit = () => {
@@ -139,13 +148,16 @@ export const AppMenu = () => {
{privateMode ? (
}
+ leftSection={}
onClick={handlePrivateModeOff}
>
{t('page.appMenu.privateModeOff', { postProcess: 'sentenceCase' })}
) : (
- } onClick={handlePrivateModeOn}>
+ }
+ onClick={handlePrivateModeOn}
+ >
{t('page.appMenu.privateModeOn', { postProcess: 'sentenceCase' })}
)}
diff --git a/src/renderer/layouts/window-bar.tsx b/src/renderer/layouts/window-bar.tsx
index 3164405a..3d65bd1d 100644
--- a/src/renderer/layouts/window-bar.tsx
+++ b/src/renderer/layouts/window-bar.tsx
@@ -12,8 +12,12 @@ import macMinHover from './assets/min-mac-hover.png';
import macMin from './assets/min-mac.png';
import styles from './window-bar.module.css';
-import { useCurrentStatus, useQueueStatus } from '/@/renderer/store';
-import { useWindowSettings } from '/@/renderer/store/settings.store';
+import {
+ useAppStore,
+ useCurrentStatus,
+ useQueueStatus,
+ useWindowSettings,
+} from '/@/renderer/store';
import { Text } from '/@/shared/components/text/text';
import { Platform, PlayerStatus } from '/@/shared/types/types';
@@ -126,14 +130,16 @@ export const WindowBar = () => {
const playerStatus = useCurrentStatus();
const { currentSong, index, length } = useQueueStatus();
const { windowBarStyle } = useWindowSettings();
+ const { privateMode } = useAppStore();
const statusString = playerStatus === PlayerStatus.PAUSED ? '(Paused) ' : '';
const queueString = length ? `(${index + 1} / ${length}) ` : '';
- const title = length
- ? currentSong?.artistName
- ? `${statusString}${queueString}${currentSong?.name} — ${currentSong?.artistName}`
- : `${statusString}${queueString}${currentSong?.name}`
- : 'Feishin';
+ const privateModeString = privateMode ? '(Private mode)' : '';
+ const title = `${
+ length
+ ? `${statusString}${queueString}${currentSong?.name}${currentSong?.artistName ? ` — ${currentSong?.artistName}` : ''}`
+ : 'Feishin'
+ }${privateMode ? ` ${privateModeString}` : ''}`;
document.title = title;
const [max, setMax] = useState(localSettings?.env.START_MAXIMIZED || false);