import React from 'react'; import { useHistory, useParams } from 'react-router-dom'; import { ConnectorState } from 'generated-sources'; import { ClusterName, ConnectName, ConnectorName } from 'redux/interfaces'; import { clusterConnectConnectorEditPath, clusterConnectorsPath, } from 'lib/paths'; import ConfirmationModal from 'components/common/ConfirmationModal/ConfirmationModal'; import styled from 'styled-components'; import { Button } from 'components/common/Button/Button'; interface RouterParams { clusterName: ClusterName; connectName: ConnectName; connectorName: ConnectorName; } const ConnectorActionsWrapperStyled = styled.div` display: flex; gap: 8px; `; export interface ActionsProps { deleteConnector( clusterName: ClusterName, connectName: ConnectName, connectorName: ConnectorName ): Promise; isConnectorDeleting: boolean; connectorStatus?: ConnectorState; restartConnector( clusterName: ClusterName, connectName: ConnectName, connectorName: ConnectorName ): void; pauseConnector( clusterName: ClusterName, connectName: ConnectName, connectorName: ConnectorName ): void; resumeConnector( clusterName: ClusterName, connectName: ConnectName, connectorName: ConnectorName ): void; isConnectorActionRunning: boolean; } const Actions: React.FC = ({ deleteConnector, isConnectorDeleting, connectorStatus, restartConnector, pauseConnector, resumeConnector, isConnectorActionRunning, }) => { const { clusterName, connectName, connectorName } = useParams(); const history = useHistory(); const [ isDeleteConnectorConfirmationVisible, setIsDeleteConnectorConfirmationVisible, ] = React.useState(false); const deleteConnectorHandler = React.useCallback(async () => { try { await deleteConnector(clusterName, connectName, connectorName); history.push(clusterConnectorsPath(clusterName)); } catch { // do not redirect } }, [deleteConnector, clusterName, connectName, connectorName]); const restartConnectorHandler = React.useCallback(() => { restartConnector(clusterName, connectName, connectorName); }, [restartConnector, clusterName, connectName, connectorName]); const pauseConnectorHandler = React.useCallback(() => { pauseConnector(clusterName, connectName, connectorName); }, [pauseConnector, clusterName, connectName, connectorName]); const resumeConnectorHandler = React.useCallback(() => { resumeConnector(clusterName, connectName, connectorName); }, [resumeConnector, clusterName, connectName, connectorName]); return ( {connectorStatus === ConnectorState.RUNNING && ( )} {connectorStatus === ConnectorState.PAUSED && ( )} setIsDeleteConnectorConfirmationVisible(false)} onConfirm={deleteConnectorHandler} isConfirming={isConnectorDeleting} > Are you sure you want to remove {connectorName} connector? ); }; export default Actions;