import { Group } from '@mantine/core'; import { openModal, closeAllModals } from '@mantine/modals'; import isElectron from 'is-electron'; import { RiLockLine, RiServerFill, RiEdit2Fill, RiSettings3Fill, RiWindowFill, } from 'react-icons/ri'; import { useNavigate } from 'react-router'; import { DropdownMenu, Text } from '/@/renderer/components'; import { ServerList } from '/@/renderer/features/servers'; import { EditServerForm } from '/@/renderer/features/servers/components/edit-server-form'; import { Settings } from '/@/renderer/features/settings'; import { AppRoute } from '/@/renderer/router/routes'; import { useCurrentServer, useServerList, useAuthStoreActions } from '/@/renderer/store'; import { ServerListItem, ServerType } from '/@/renderer/types'; const browser = isElectron() ? window.electron.browser : null; export const AppMenu = () => { const navigate = useNavigate(); const currentServer = useCurrentServer(); const serverList = useServerList(); const { setCurrentServer } = useAuthStoreActions(); const handleSetCurrentServer = (server: ServerListItem) => { navigate(AppRoute.HOME); setCurrentServer(server); }; const handleCredentialsModal = (server: ServerListItem) => { openModal({ children: server && ( ), size: 'sm', title: `Update session for "${server.name}"`, }); }; const handleManageServersModal = () => { openModal({ children: , title: 'Manage Servers', }); }; const handleSettingsModal = () => { openModal({ children: , size: 'xl', title: ( Settings ), }); }; const handleBrowserDevTools = () => { browser?.devtools(); }; const showBrowserDevToolsButton = isElectron(); return ( <> Select a server {serverList.map((s) => { const isNavidromeExpired = s.type === ServerType.NAVIDROME && !s.ndCredential; const isJellyfinExpired = false; const isSessionExpired = isNavidromeExpired || isJellyfinExpired; return ( : } onClick={() => { if (!isSessionExpired) return handleSetCurrentServer(s); return handleCredentialsModal(s); }} > {s.name} ); })} } onClick={handleManageServersModal} > Manage servers } onClick={handleSettingsModal} > Settings {showBrowserDevToolsButton && ( <> } onClick={handleBrowserDevTools} > Open browser devtools )} ); };