import { ChangeEvent } from 'react'; import { Divider, Group, Stack } from '@mantine/core'; import { Accordion, Button, ContextModalVars, Switch, Text } from '/@/renderer/components'; import { useLocalStorage } from '@mantine/hooks'; import { openContextModal } from '@mantine/modals'; import isElectron from 'is-electron'; import { useTranslation } from 'react-i18next'; import { RiAddFill, RiServerFill } from 'react-icons/ri'; import { AddServerForm } from '/@/renderer/features/servers/components/add-server-form'; import { ServerListItem } from '/@/renderer/features/servers/components/server-list-item'; import { useCurrentServer, useServerList } from '/@/renderer/store'; import { titleCase } from '/@/renderer/utils'; const localSettings = isElectron() ? window.electron.localSettings : null; export const ServerList = () => { const { t } = useTranslation(); const currentServer = useCurrentServer(); const serverListQuery = useServerList(); const handleAddServerModal = () => { openContextModal({ innerProps: { // eslint-disable-next-line react/no-unstable-nested-components modalBody: (vars: ContextModalVars) => ( vars.context.closeModal(vars.id)} /> ), }, modal: 'base', title: t('form.addServer.title', { postProcess: 'titleCase' }), }); }; const [ignoreCORS, setIgnoreCORS] = useLocalStorage({ defaultValue: 'false', key: 'ignore_cors', }); const [ignoreSSL, setIgnoreSSL] = useLocalStorage({ defaultValue: 'false', key: 'ignore_ssl', }); const handleUpdateIgnoreCORS = (e: ChangeEvent) => { setIgnoreCORS(String(e.currentTarget.checked)); if (isElectron()) { localSettings?.set('ignore_cors', e.currentTarget.checked); } }; const handleUpdateIgnoreSSL = (e: ChangeEvent) => { setIgnoreSSL(String(e.currentTarget.checked)); if (isElectron()) { localSettings?.set('ignore_ssl', e.currentTarget.checked); } }; return ( <> {Object.keys(serverListQuery)?.map((serverId) => { const server = serverListQuery[serverId]; return ( }> {titleCase(server?.type)} - {server?.name} ); })} {isElectron() && ( <> )} ); };