import { Group } from '@mantine/core'; import { t } from 'i18next'; import isElectron from 'is-electron'; import { Select, Tooltip, NumberInput, Switch, Slider } from '/@/renderer/components'; import { SettingsSection } from '/@/renderer/features/settings/components/settings-section'; import { SideQueueType, useGeneralSettings, useSettingsStoreActions, } from '/@/renderer/store/settings.store'; import { Play } from '/@/renderer/types'; import { useTranslation } from 'react-i18next'; const localSettings = isElectron() ? window.electron.localSettings : null; const SIDE_QUEUE_OPTIONS = [ { label: t('setting.sidePlayQueueStyle', { context: 'optionAttached', postProcess: 'sentenceCase', }), value: 'sideQueue', }, { label: t('setting.sidePlayQueueStyle', { context: 'optionDetached', postProcess: 'sentenceCase', }), value: 'sideDrawerQueue', }, ]; export const ControlSettings = () => { const { t } = useTranslation(); const settings = useGeneralSettings(); const { setSettings } = useSettingsStoreActions(); const controlOptions = [ { control: ( setSettings({ general: { ...settings, skipButtons: { ...settings.skipButtons, enabled: e.currentTarget.checked, }, }, }) } /> ), description: t('setting.showSkipButtons', { context: 'description', postProcess: 'sentenceCase', }), isHidden: false, title: t('setting.showSkipButtons', { postProcess: 'sentenceCase' }), }, { control: ( setSettings({ general: { ...settings, skipButtons: { ...settings.skipButtons, skipBackwardSeconds: e.currentTarget.value ? Number(e.currentTarget.value) : 0, }, }, }) } /> setSettings({ general: { ...settings, skipButtons: { ...settings.skipButtons, skipForwardSeconds: e.currentTarget.value ? Number(e.currentTarget.value) : 0, }, }, }) } /> ), description: t('setting.skipDuration', { context: 'description', postProcess: 'sentenceCase', }), isHidden: false, title: t('setting.skipDuration', { postProcess: 'sentenceCase' }), }, { control: ( { setSettings({ general: { ...settings, sideQueueType: e as SideQueueType, }, }); }} /> ), description: t('setting.sidePlayQueueStyle', { context: 'description', postProcess: 'sentenceCase', }), isHidden: false, title: t('setting.sidePlayQueueStyle', { postProcess: 'sentenceCase' }), }, { control: ( { setSettings({ general: { ...settings, showQueueDrawerButton: e.currentTarget.checked, }, }); }} /> ), description: t('setting.sidePlayQueueStyle', { context: 'description', postProcess: 'sentenceCase', }), isHidden: false, title: t('setting.floatingQueueArea', { postProcess: 'sentenceCase' }), }, { control: ( { setSettings({ general: { ...settings, volumeWheelStep: e, }, }); }} /> ), description: t('setting.volumeWheelStep', { context: 'description', postProcess: 'sentenceCase', }), isHidden: false, title: t('setting.volumeWheelStep', { postProcess: 'sentenceCase' }), }, { control: ( { localSettings?.set('resume', e.target.checked); setSettings({ general: { ...settings, resume: e.currentTarget.checked, }, }); }} /> ), description: t('setting.savePlayQueue', { context: 'description', postProcess: 'sentenceCase', }), isHidden: !isElectron(), title: t('setting.savePlayQueue', { postProcess: 'sentenceCase' }), }, { control: ( setSettings({ general: { ...settings, defaultFullPlaylist: e.currentTarget.checked, }, }) } /> ), description: t('setting.skipPlaylistPage', { context: 'description', postProcess: 'sentenceCase', }), isHidden: false, title: t('setting.skipPlaylistPage', { postProcess: 'sentenceCase' }), }, { control: ( { setSettings({ general: { ...settings, externalLinks: e.currentTarget.checked, }, }); }} /> ), description: t('setting.externalLinks', { context: 'description', postProcess: 'sentenceCase', }), title: t('setting.externalLinks', { postProcess: 'sentenceCase' }), }, ]; return ; };