import * as React from 'react'; import { useTranslation } from 'react-i18next'; import Select from '~/components/shared/Select'; import { PROXY_SORT_OPTIONS } from '~/modules/proxies/utils'; import { useStoreActions } from '../StateProvider'; import Switch from '../SwitchThemed'; import s from './Settings.module.scss'; const { useCallback } = React; type AppConfig = { proxySortBy: string; hideUnavailableProxies: boolean; autoCloseOldConns: boolean; proxiesLayout: string; proxyGroupByProvider: boolean; latencyTestUrl: string; latencyTestTimeout: number; }; type Props = { appConfig: AppConfig; }; export default function Settings({ appConfig }: Props) { const { app: { updateAppConfig }, } = useStoreActions(); const handleProxySortByOnChange = useCallback( (e) => { updateAppConfig('proxySortBy', e.target.value); }, [updateAppConfig], ); const handleHideUnavailablesSwitchOnChange = useCallback( (v) => { updateAppConfig('hideUnavailableProxies', v); }, [updateAppConfig], ); const handleLatencyUrlChange = useCallback( (e: React.ChangeEvent) => { updateAppConfig('latencyTestUrl', e.target.value); }, [updateAppConfig], ); const handleLatencyUrlClear = useCallback(() => { updateAppConfig('latencyTestUrl', ''); }, [updateAppConfig]); const handleLatencyTimeoutChange = useCallback( (e: React.ChangeEvent) => { const v = parseInt(e.target.value, 10); if (!isNaN(v) && v > 0) updateAppConfig('latencyTestTimeout', v); }, [updateAppConfig], ); const { t } = useTranslation(); return ( <>
{t('latency_test_url')}
{appConfig.latencyTestUrl && ( )}
{t('latency_test_timeout')}
ms

{t('sort_in_grp')}