From 384bdc3a52d67bc85b33f2338b0076d7bd165fc1 Mon Sep 17 00:00:00 2001 From: Viren070 Date: Wed, 28 May 2025 16:22:28 +0100 Subject: [PATCH] feat(frontend): improve services page --- .../frontend/src/components/menu/services.tsx | 81 +++++++++---------- 1 file changed, 40 insertions(+), 41 deletions(-) diff --git a/packages/frontend/src/components/menu/services.tsx b/packages/frontend/src/components/menu/services.tsx index 7ace5135..86e3c3cc 100644 --- a/packages/frontend/src/components/menu/services.tsx +++ b/packages/frontend/src/components/menu/services.tsx @@ -49,7 +49,7 @@ function Content() { const [modalOpen, setModalOpen] = useState(false); const [modalService, setModalService] = useState(null); const [modalValues, setModalValues] = useState>({}); - const [alerts, setAlerts] = useState([]); + const [invalidServices, setInvalidServices] = useState([]); // DND logic function handleDragEnd(event: any) { @@ -85,6 +85,11 @@ function Content() { const newUserData = { ...prev }; newUserData.services = (newUserData.services ?? []).map((service) => { if (service.id === modalService) { + if (invalidServices.includes(SERVICE_DETAILS[service.id].name)) { + setInvalidServices((prev) => + prev.filter((a) => a !== SERVICE_DETAILS[service.id].name) + ); + } return { ...service, credentials: values, @@ -128,18 +133,30 @@ function Content() {

Services

- Configure and manage your streaming services. + Provide credentials for any services you want to use.

- {alerts.length > 0 && ( + {invalidServices.length > 0 && (
- {alerts.map((alert) => ( - - {alert} - - ))} + + The following services are missing credentials: +
+ {invalidServices.map((service) => ( +
+
+ {service} +
+ ))} +
+ + } + />
)}
@@ -173,27 +190,6 @@ function Content() { meta={svcMeta} onEdit={() => handleServiceClick(service.id)} onToggleEnabled={(v: boolean) => { - // const existingService = userData.services?.find( - // (s) => s.id === service.id - // ); - // const missingCredentials = svcMeta.credentials.filter( - // (cred) => - // !existingService?.credentials[ - // cred.id as keyof typeof existingService.credentials - // ] - // ); - // if (missingCredentials.length > 0 && v) { - // setAlerts((prev) => [ - // ...prev, - // `Please provide all required credentials for ${svcMeta.name}`, - // ]); - // } - // setUserData((prev) => ({ - // ...prev, - // services: (prev.services ?? []).map((s) => - // s.id === service.id ? { ...s, enabled: v } : s - // ), - // })); setUserData((prev) => { const existingService = prev.services?.find( (s) => s.id === service.id @@ -206,21 +202,24 @@ function Content() { cred.id as keyof typeof existingService.credentials ] ); - const alertMsg = `Please provide all required credentials for ${svcMeta.name}`; + const invalidService = svcMeta.name; if (missingCredentials.length > 0) { if (v) { - if (!alerts.includes(alertMsg)) { - setAlerts((prev) => [...prev, alertMsg]); + if (!invalidServices.includes(invalidService)) { + setInvalidServices((prev) => [ + ...prev, + invalidService, + ]); } } else { - setAlerts((prev) => - prev.filter((a) => a !== alertMsg) + setInvalidServices((prev) => + prev.filter((a) => a !== invalidService) ); } } else { - if (alerts.includes(alertMsg)) { - setAlerts((prev) => - prev.filter((a) => a !== alertMsg) + if (invalidServices.includes(invalidService)) { + setInvalidServices((prev) => + prev.filter((a) => a !== invalidService) ); } } @@ -290,7 +289,7 @@ function SortableServiceItem({ {meta?.name || service.id} - + {meta?.signUpText}
@@ -349,9 +348,6 @@ function ServiceModal({ /> ))}
- +