diff --git a/src/frontend/app/dashboard/change_status.tsx b/src/frontend/app/dashboard/change_status.tsx index 63d0717..905a7e9 100644 --- a/src/frontend/app/dashboard/change_status.tsx +++ b/src/frontend/app/dashboard/change_status.tsx @@ -1,15 +1,16 @@ import React, { useState, useEffect } from 'react'; import { PauseCircleIcon, PlayCircleIcon, ExclamationCircleIcon } from '@heroicons/react/24/outline'; -import { isConnectorRunning } from '@/actions/api'; interface ConnectorStatusProps { connectorName: string | undefined; + connectorStatus: boolean | null; + callbackFunction: () => void; } -export default function ChangeStatusButton({ connectorName }: ConnectorStatusProps) { +export default function ChangeStatusButton({ connectorName, connectorStatus, callbackFunction }: ConnectorStatusProps) { const [buttonText, setButtonText] = useState('Checking status...'); const [iconName, setIconName] = useState('ExclamationCircleIcon'); - const [buttonColor, setButtonColor] = useState('bg-green-500'); + const [buttonColor, setButtonColor] = useState('bg-gray-700'); const iconMapping: { [key: string]: React.ElementType } = { PauseCircleIcon: PauseCircleIcon, @@ -18,56 +19,41 @@ export default function ChangeStatusButton({ connectorName }: ConnectorStatusPro const changeStatus = async () => { if (!connectorName) return; + if (connectorStatus == null) return; try { - const connectorRunningResponse = await isConnectorRunning(connectorName || ""); - if (connectorRunningResponse) { + if (connectorStatus) { await fetch('/api/pauseConnector'); - setButtonText("Start the connector"); - setIconName("PlayCircleIcon"); - setButtonColor('bg-green-500'); } else { await fetch('/api/unpauseConnector'); - setButtonText("Pause the connector"); - setIconName("PauseCircleIcon"); - setButtonColor('bg-red-500'); } + await callbackFunction(); } catch (error) { - setButtonText('Error checking status'); - setIconName("ExclamationCircleIcon"); - setButtonColor('bg-red-500'); + console.error("There was an error changing conenctor status"); } }; useEffect(() => { - const fetchInitialStatus = async () => { - if (!connectorName) return; - - try { - const connectorRunningResponse = await isConnectorRunning(connectorName || ""); - if (connectorRunningResponse) { - setButtonText("Pause the connector"); - setIconName("PauseCircleIcon"); - setButtonColor('bg-red-500'); - } else { - setButtonText("Start the connector"); - setIconName("PlayCircleIcon"); - setButtonColor('bg-green-500'); - } - } catch (error) { - setButtonText('Error checking status'); - setIconName("ExclamationCircleIcon"); - setButtonColor('bg-red-500'); - } - }; + if (connectorStatus == null) { + setButtonText("Checking status..."); + setIconName("ExclamationCircleIcon"); + setButtonColor("bg-gray-700"); + } else if (connectorStatus) { + setButtonText("Pause the connector"); + setIconName("PauseCircleIcon"); + setButtonColor('bg-red-500'); + } else { + setButtonText("Start the connector"); + setIconName("PlayCircleIcon"); + setButtonColor('bg-green-500'); + } + }, [connectorStatus]) - fetchInitialStatus(); - }, [connectorName]); const IconComponent = iconMapping[iconName] || ExclamationCircleIcon; return ( -
+
-
-
- - {status} -
+
+
+ +
+
+ + {status} +
-
- - {dbStatus} +
+ + {dbStatus} +
+
); } \ No newline at end of file diff --git a/src/frontend/app/dashboard/page.tsx b/src/frontend/app/dashboard/page.tsx index f0c771d..654bbbc 100644 --- a/src/frontend/app/dashboard/page.tsx +++ b/src/frontend/app/dashboard/page.tsx @@ -9,13 +9,10 @@ export default function Page() { return (
-
+


-
- -
); }