From 44fcc338257224621b3582e159d4e85150844e5f Mon Sep 17 00:00:00 2001 From: Kendall Garner <17521368+kgarner7@users.noreply.github.com> Date: Sun, 31 Mar 2024 17:47:17 -0700 Subject: [PATCH] [enhancement]: add server menu on Navidrome error page --- .../routes/action-required-route.tsx | 25 ++++++++++++++++++- .../servers/components/server-list.tsx | 9 ++++--- .../hooks/use-server-authenticated.ts | 2 ++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/renderer/features/action-required/routes/action-required-route.tsx b/src/renderer/features/action-required/routes/action-required-route.tsx index f6b8822c..afe3b28d 100644 --- a/src/renderer/features/action-required/routes/action-required-route.tsx +++ b/src/renderer/features/action-required/routes/action-required-route.tsx @@ -1,6 +1,6 @@ import { Center, Group, Stack } from '@mantine/core'; import { useTranslation } from 'react-i18next'; -import { RiCheckFill } from 'react-icons/ri'; +import { RiCheckFill, RiEdit2Line, RiHome4Line } from 'react-icons/ri'; import { Link } from 'react-router-dom'; import { Button, PageHeader, Text } from '/@/renderer/components'; import { ActionRequiredContainer } from '/@/renderer/features/action-required/components/action-required-container'; @@ -9,6 +9,8 @@ import { ServerRequired } from '/@/renderer/features/action-required/components/ import { AnimatedPage } from '/@/renderer/features/shared'; import { AppRoute } from '/@/renderer/router/routes'; import { useCurrentServer } from '/@/renderer/store'; +import { openModal } from '@mantine/modals'; +import { ServerList } from '/@/renderer/features/servers'; const ActionRequiredRoute = () => { const { t } = useTranslation(); @@ -32,6 +34,13 @@ const ActionRequiredRoute = () => { const canReturnHome = checks.every((c) => c.valid); const displayedCheck = checks.find((c) => !c.valid); + const handleManageServersModal = () => { + openModal({ + children: , + title: 'Manage Servers', + }); + }; + return ( @@ -63,6 +72,7 @@ const ActionRequiredRoute = () => { )} + + + diff --git a/src/renderer/features/servers/components/server-list.tsx b/src/renderer/features/servers/components/server-list.tsx index 05ecaa95..256b4e41 100644 --- a/src/renderer/features/servers/components/server-list.tsx +++ b/src/renderer/features/servers/components/server-list.tsx @@ -1,6 +1,6 @@ import { ChangeEvent } from 'react'; import { Divider, Group, Stack } from '@mantine/core'; -import { Accordion, Button, ContextModalVars, Switch } from '/@/renderer/components'; +import { Accordion, Button, ContextModalVars, Switch, Text } from '/@/renderer/components'; import { useLocalStorage } from '@mantine/hooks'; import { openContextModal } from '@mantine/modals'; import isElectron from 'is-electron'; @@ -8,13 +8,14 @@ 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 { useServerList } from '/@/renderer/store'; +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 = () => { @@ -90,7 +91,9 @@ export const ServerList = () => { > }> - {titleCase(server?.type)} - {server?.name} + + {titleCase(server?.type)} - {server?.name} + diff --git a/src/renderer/hooks/use-server-authenticated.ts b/src/renderer/hooks/use-server-authenticated.ts index 3696595c..e8479f93 100644 --- a/src/renderer/hooks/use-server-authenticated.ts +++ b/src/renderer/hooks/use-server-authenticated.ts @@ -4,6 +4,7 @@ import { AuthState, ServerListItem, ServerType } from '/@/renderer/types'; import { api } from '/@/renderer/api'; import { SongListSort, SortOrder } from '/@/renderer/api/types'; import { debounce } from 'lodash'; +import { toast } from '/@/renderer/components'; export const useServerAuthenticated = () => { const priorServerId = useRef(); @@ -29,6 +30,7 @@ export const useServerAuthenticated = () => { setReady(AuthState.VALID); } catch (error) { + toast.error({ message: (error as Error).message }); setReady(AuthState.INVALID); } }, []);