mirror of
https://github.com/jeffvli/feishin.git
synced 2026-07-23 02:46:40 +02:00
optimize settings store
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { closeAllModals, openModal } from '@mantine/modals';
|
||||
import { useQueryClient } from '@tanstack/react-query';
|
||||
import isElectron from 'is-electron';
|
||||
import { useCallback, useState } from 'react';
|
||||
import { memo, useCallback, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import {
|
||||
@@ -14,7 +14,7 @@ import { toast } from '/@/shared/components/toast/toast';
|
||||
|
||||
const browser = isElectron() ? window.api.browser : null;
|
||||
|
||||
export const CacheSettings = () => {
|
||||
export const CacheSettings = memo(() => {
|
||||
const [isClearing, setIsClearing] = useState(false);
|
||||
const queryClient = useQueryClient();
|
||||
const { t } = useTranslation();
|
||||
@@ -115,4 +115,4 @@ export const CacheSettings = () => {
|
||||
)}
|
||||
</>
|
||||
);
|
||||
};
|
||||
});
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import isElectron from 'is-electron';
|
||||
import { memo } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import {
|
||||
@@ -16,7 +17,7 @@ import { Select } from '/@/shared/components/select/select';
|
||||
import { Switch } from '/@/shared/components/switch/switch';
|
||||
import { TextInput } from '/@/shared/components/text-input/text-input';
|
||||
|
||||
export const DiscordSettings = () => {
|
||||
export const DiscordSettings = memo(() => {
|
||||
const { t } = useTranslation();
|
||||
const settings = useDiscordSettings();
|
||||
const generalSettings = useGeneralSettings();
|
||||
@@ -30,7 +31,6 @@ export const DiscordSettings = () => {
|
||||
onChange={(e) => {
|
||||
setSettings({
|
||||
discord: {
|
||||
...settings,
|
||||
enabled: e.currentTarget.checked,
|
||||
},
|
||||
});
|
||||
@@ -58,7 +58,6 @@ export const DiscordSettings = () => {
|
||||
onBlur={(e) => {
|
||||
setSettings({
|
||||
discord: {
|
||||
...settings,
|
||||
clientId: e.currentTarget.value,
|
||||
},
|
||||
});
|
||||
@@ -84,7 +83,6 @@ export const DiscordSettings = () => {
|
||||
onChange={(e) => {
|
||||
setSettings({
|
||||
discord: {
|
||||
...settings,
|
||||
showPaused: e.currentTarget.checked,
|
||||
},
|
||||
});
|
||||
@@ -107,7 +105,6 @@ export const DiscordSettings = () => {
|
||||
onChange={(e) => {
|
||||
setSettings({
|
||||
discord: {
|
||||
...settings,
|
||||
showAsListening: e.currentTarget.checked,
|
||||
},
|
||||
});
|
||||
@@ -150,7 +147,6 @@ export const DiscordSettings = () => {
|
||||
if (!e) return;
|
||||
setSettings({
|
||||
discord: {
|
||||
...settings,
|
||||
displayType: e as DiscordDisplayType,
|
||||
},
|
||||
});
|
||||
@@ -195,7 +191,6 @@ export const DiscordSettings = () => {
|
||||
if (!e) return;
|
||||
setSettings({
|
||||
discord: {
|
||||
...settings,
|
||||
linkType: e as DiscordLinkType,
|
||||
},
|
||||
});
|
||||
@@ -222,7 +217,6 @@ export const DiscordSettings = () => {
|
||||
onChange={(e) => {
|
||||
setSettings({
|
||||
discord: {
|
||||
...settings,
|
||||
showServerImage: e.currentTarget.checked,
|
||||
},
|
||||
});
|
||||
@@ -248,7 +242,6 @@ export const DiscordSettings = () => {
|
||||
onBlur={(e) => {
|
||||
setSettings({
|
||||
general: {
|
||||
...generalSettings,
|
||||
lastfmApiKey: e.currentTarget.value,
|
||||
},
|
||||
});
|
||||
@@ -274,4 +267,4 @@ export const DiscordSettings = () => {
|
||||
title={t('page.setting.discord', { postProcess: 'sentenceCase' })}
|
||||
/>
|
||||
);
|
||||
};
|
||||
});
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import isElectron from 'is-electron';
|
||||
import { memo } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import {
|
||||
@@ -17,7 +18,7 @@ const PASSWORD_SETTINGS: { label: string; value: string }[] = [
|
||||
{ label: 'KDE 6 (kwallet6)', value: 'kwallet6' },
|
||||
];
|
||||
|
||||
export const PasswordSettings = () => {
|
||||
export const PasswordSettings = memo(() => {
|
||||
const { t } = useTranslation();
|
||||
const settings = useGeneralSettings();
|
||||
const { setSettings } = useSettingsStoreActions();
|
||||
@@ -53,4 +54,4 @@ export const PasswordSettings = () => {
|
||||
];
|
||||
|
||||
return <SettingsSection divider={false} options={updateOptions} />;
|
||||
};
|
||||
});
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import isElectron from 'is-electron';
|
||||
import debounce from 'lodash/debounce';
|
||||
import { memo } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import { SettingsSection } from '/@/renderer/features/settings/components/settings-section';
|
||||
@@ -12,7 +13,7 @@ import { toast } from '/@/shared/components/toast/toast';
|
||||
|
||||
const remote = isElectron() ? window.api.remote : null;
|
||||
|
||||
export const RemoteSettings = () => {
|
||||
export const RemoteSettings = memo(() => {
|
||||
const { t } = useTranslation();
|
||||
const settings = useRemoteSettings();
|
||||
const { setSettings } = useSettingsStoreActions();
|
||||
@@ -25,7 +26,6 @@ export const RemoteSettings = () => {
|
||||
if (errorMsg === null) {
|
||||
setSettings({
|
||||
remote: {
|
||||
...settings,
|
||||
enabled,
|
||||
},
|
||||
});
|
||||
@@ -44,7 +44,6 @@ export const RemoteSettings = () => {
|
||||
if (!errorMsg) {
|
||||
setSettings({
|
||||
remote: {
|
||||
...settings,
|
||||
port,
|
||||
},
|
||||
});
|
||||
@@ -115,7 +114,6 @@ export const RemoteSettings = () => {
|
||||
remote!.updateUsername(username);
|
||||
setSettings({
|
||||
remote: {
|
||||
...settings,
|
||||
username,
|
||||
},
|
||||
});
|
||||
@@ -139,7 +137,6 @@ export const RemoteSettings = () => {
|
||||
remote!.updatePassword(password);
|
||||
setSettings({
|
||||
remote: {
|
||||
...settings,
|
||||
password,
|
||||
},
|
||||
});
|
||||
@@ -161,4 +158,4 @@ export const RemoteSettings = () => {
|
||||
title={t('page.setting.remote', { postProcess: 'sentenceCase' })}
|
||||
/>
|
||||
);
|
||||
};
|
||||
});
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import isElectron from 'is-electron';
|
||||
import { memo } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import {
|
||||
@@ -13,10 +14,10 @@ const localSettings = isElectron() ? window.api.localSettings : null;
|
||||
const utils = isElectron() ? window.api.utils : null;
|
||||
|
||||
function disableAutoUpdates(): boolean {
|
||||
return !isElectron() || utils?.disableAutoUpdates();
|
||||
return Boolean(!isElectron() || utils?.disableAutoUpdates());
|
||||
}
|
||||
|
||||
export const UpdateSettings = () => {
|
||||
export const UpdateSettings = memo(() => {
|
||||
const { t } = useTranslation();
|
||||
const settings = useWindowSettings();
|
||||
const { setSettings } = useSettingsStoreActions();
|
||||
@@ -49,7 +50,6 @@ export const UpdateSettings = () => {
|
||||
localSettings?.set('release_channel', value);
|
||||
setSettings({
|
||||
window: {
|
||||
...settings,
|
||||
releaseChannel: value as 'beta' | 'latest',
|
||||
},
|
||||
});
|
||||
@@ -74,7 +74,6 @@ export const UpdateSettings = () => {
|
||||
localSettings?.set('disable_auto_updates', e.currentTarget.checked);
|
||||
setSettings({
|
||||
window: {
|
||||
...settings,
|
||||
disableAutoUpdate: e.currentTarget.checked,
|
||||
},
|
||||
});
|
||||
@@ -96,4 +95,4 @@ export const UpdateSettings = () => {
|
||||
title={t('page.setting.updates', { postProcess: 'sentenceCase' })}
|
||||
/>
|
||||
);
|
||||
};
|
||||
});
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import isElectron from 'is-electron';
|
||||
import { memo } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import {
|
||||
@@ -20,7 +21,7 @@ const WINDOW_BAR_OPTIONS = [
|
||||
|
||||
const localSettings = isElectron() ? window.api.localSettings : null;
|
||||
|
||||
export const WindowSettings = () => {
|
||||
export const WindowSettings = memo(() => {
|
||||
const { t } = useTranslation();
|
||||
const settings = useWindowSettings();
|
||||
const { setSettings } = useSettingsStoreActions();
|
||||
@@ -50,7 +51,6 @@ export const WindowSettings = () => {
|
||||
localSettings?.set('window_window_bar_style', e as Platform);
|
||||
setSettings({
|
||||
window: {
|
||||
...settings,
|
||||
windowBarStyle: e as Platform,
|
||||
},
|
||||
});
|
||||
@@ -77,7 +77,6 @@ export const WindowSettings = () => {
|
||||
if (e.currentTarget.checked) {
|
||||
setSettings({
|
||||
window: {
|
||||
...settings,
|
||||
tray: true,
|
||||
},
|
||||
});
|
||||
@@ -88,7 +87,6 @@ export const WindowSettings = () => {
|
||||
|
||||
setSettings({
|
||||
window: {
|
||||
...settings,
|
||||
exitToTray: false,
|
||||
minimizeToTray: false,
|
||||
startMinimized: false,
|
||||
@@ -120,7 +118,6 @@ export const WindowSettings = () => {
|
||||
localSettings?.set('window_minimize_to_tray', e.currentTarget.checked);
|
||||
setSettings({
|
||||
window: {
|
||||
...settings,
|
||||
minimizeToTray: e.currentTarget.checked,
|
||||
},
|
||||
});
|
||||
@@ -145,7 +142,6 @@ export const WindowSettings = () => {
|
||||
localSettings?.set('window_exit_to_tray', e.currentTarget.checked);
|
||||
setSettings({
|
||||
window: {
|
||||
...settings,
|
||||
exitToTray: e.currentTarget.checked,
|
||||
},
|
||||
});
|
||||
@@ -170,7 +166,6 @@ export const WindowSettings = () => {
|
||||
localSettings?.set('window_start_minimized', e.currentTarget.checked);
|
||||
setSettings({
|
||||
window: {
|
||||
...settings,
|
||||
startMinimized: e.currentTarget.checked,
|
||||
},
|
||||
});
|
||||
@@ -198,7 +193,6 @@ export const WindowSettings = () => {
|
||||
);
|
||||
setSettings({
|
||||
window: {
|
||||
...settings,
|
||||
preventSleepOnPlayback: e.currentTarget.checked,
|
||||
},
|
||||
});
|
||||
@@ -220,4 +214,4 @@ export const WindowSettings = () => {
|
||||
title={t('page.setting.application', { postProcess: 'sentenceCase' })}
|
||||
/>
|
||||
);
|
||||
};
|
||||
});
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import isElectron from 'is-electron';
|
||||
import { memo } from 'react';
|
||||
import { Fragment } from 'react/jsx-runtime';
|
||||
|
||||
import { DiscordSettings } from '/@/renderer/features/settings/components/window/discord-settings';
|
||||
@@ -17,7 +18,7 @@ const sections = [
|
||||
{ component: PasswordSettings, hidden: !utils?.isLinux(), key: 'password' },
|
||||
];
|
||||
|
||||
export const WindowTab = () => {
|
||||
export const WindowTab = memo(() => {
|
||||
return (
|
||||
<Stack gap="md">
|
||||
{sections.map(({ component: Section, hidden, key }, index) => (
|
||||
@@ -28,4 +29,4 @@ export const WindowTab = () => {
|
||||
))}
|
||||
</Stack>
|
||||
);
|
||||
};
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user