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 { GenreTarget, 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: ( { if (!e) return; const newVal = e.currentTarget.value ? Math.min(Math.max(Number(e.currentTarget.value), 15), 30) : settings.buttonSize; setSettings({ general: { ...settings, buttonSize: newVal, }, }); }} /> ), description: t('setting.buttonSize', { context: 'description', postProcess: 'sentenceCase', }), isHidden: false, title: t('setting.buttonSize', { postProcess: 'sentenceCase' }), }, { control: ( { const newVal = e.currentTarget.value !== '0' ? Math.min(Math.max(Number(e.currentTarget.value), 175), 2500) : null; setSettings({ general: { ...settings, albumArtRes: newVal } }); }} /> ), description: t('setting.playerAlbumArtResolution', { context: 'description', postProcess: 'sentenceCase', }), isHidden: false, title: t('setting.playerAlbumArtResolution', { postProcess: 'sentenceCase' }), }, { control: ( setSettings({ general: { ...settings, nativeAspectRatio: e.currentTarget.checked, }, }) } /> ), description: t('setting.imageAspectRatio', { context: 'description', postProcess: 'sentenceCase', }), isHidden: false, title: t('setting.imageAspectRatio', { postProcess: 'sentenceCase' }), }, { 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: ( { setSettings({ general: { ...settings, volumeWidth: Number(e.currentTarget.value) }, }); }} /> ), description: t('setting.volumeWidth', { context: 'description', postProcess: 'sentenceCase', }), isHidden: false, title: t('setting.volumeWidth', { 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' }), }, { control: (