display private mode status

This commit is contained in:
Lyall 2025-08-28 05:48:21 +01:00
parent 7423b71a65
commit 2271c211cb
3 changed files with 32 additions and 9 deletions

View file

@ -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": {

View file

@ -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 = () => {
</DropdownMenu.Item>
{privateMode ? (
<DropdownMenu.Item
leftSection={<Icon icon="lockOpen" />}
leftSection={<Icon color="error" icon="lock" />}
onClick={handlePrivateModeOff}
>
{t('page.appMenu.privateModeOff', { postProcess: 'sentenceCase' })}
</DropdownMenu.Item>
) : (
<DropdownMenu.Item leftSection={<Icon icon="lock" />} onClick={handlePrivateModeOn}>
<DropdownMenu.Item
leftSection={<Icon icon="lockOpen" />}
onClick={handlePrivateModeOn}
>
{t('page.appMenu.privateModeOn', { postProcess: 'sentenceCase' })}
</DropdownMenu.Item>
)}

View file

@ -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);