Add tray settings (#49)

This commit is contained in:
jeffvli 2023-03-30 08:09:20 -07:00
parent eecbcddea3
commit 2b1c1d5e59
8 changed files with 198 additions and 28 deletions

View file

@ -1,6 +1,7 @@
import { lazy } from 'react';
import { Tabs } from '/@/renderer/components';
import { useSettingsStore, useSettingsStoreActions } from '/@/renderer/store/settings.store';
import isElectron from 'is-electron';
import styled from 'styled-components';
const GeneralTab = lazy(() =>
@ -44,7 +45,7 @@ export const SettingsContent = () => {
<Tabs.List>
<Tabs.Tab value="general">General</Tabs.Tab>
<Tabs.Tab value="playback">Playback</Tabs.Tab>
<Tabs.Tab value="window">Window</Tabs.Tab>
{isElectron() && <Tabs.Tab value="window">Window</Tabs.Tab>}
</Tabs.List>
<Tabs.Panel value="general">
<GeneralTab />
@ -52,9 +53,11 @@ export const SettingsContent = () => {
<Tabs.Panel value="playback">
<PlaybackTab />
</Tabs.Panel>
<Tabs.Panel value="window">
<ApplicationTab />
</Tabs.Panel>
{isElectron() && (
<Tabs.Panel value="window">
<ApplicationTab />
</Tabs.Panel>
)}
</Tabs>
</TabContainer>
);

View file

@ -5,7 +5,7 @@ import {
SettingsSection,
SettingOption,
} from '/@/renderer/features/settings/components/settings-section';
import { Select } from '/@/renderer/components';
import { Select, Switch } from '/@/renderer/components';
const WINDOW_BAR_OPTIONS = [
{ label: 'Web (hidden)', value: Platform.WEB },
@ -13,6 +13,8 @@ const WINDOW_BAR_OPTIONS = [
{ label: 'macOS', value: Platform.MACOS },
];
const localSettings = isElectron() ? window.electron.localSettings : null;
export const WindowSettings = () => {
const settings = useWindowSettings();
const { setSettings } = useSettingsStoreActions();
@ -39,6 +41,50 @@ export const WindowSettings = () => {
isHidden: !isElectron(),
title: 'Window bar style',
},
{
control: (
<Switch
aria-label="Toggle minimize to tray"
defaultChecked={settings.exitToTray}
disabled={!isElectron()}
onChange={(e) => {
if (!e) return;
localSettings?.set('window_minimize_to_tray', e.currentTarget.checked);
setSettings({
window: {
...settings,
minimizeToTray: e.currentTarget.checked,
},
});
}}
/>
),
description: 'Minimize the application to the system tray',
isHidden: !isElectron(),
title: 'Minimize to tray',
},
{
control: (
<Switch
aria-label="Toggle exit to tray"
defaultChecked={settings.exitToTray}
disabled={!isElectron()}
onChange={(e) => {
if (!e) return;
localSettings?.set('window_exit_to_tray', e.currentTarget.checked);
setSettings({
window: {
...settings,
exitToTray: e.currentTarget.checked,
},
});
}}
/>
),
description: 'Exit the application to the system tray',
isHidden: !isElectron(),
title: 'Exit to tray',
},
];
return <SettingsSection options={windowOptions} />;