import React from 'react'; import { useNavigate } from 'react-router-dom'; import { useIsMutating } from '@tanstack/react-query'; import { Action, ConnectorAction, ConnectorState, ResourceType, } from 'generated-sources'; import useAppParams from 'lib/hooks/useAppParams'; import { useConnector, useDeleteConnector, useUpdateConnectorState, } from 'lib/hooks/api/kafkaConnect'; import { clusterConnectorsPath, RouterParamsClusterConnectConnector, } from 'lib/paths'; import { useConfirm } from 'lib/hooks/useConfirm'; import { Dropdown } from 'components/common/Dropdown'; import { ActionDropdownItem } from 'components/common/ActionComponent'; import ChevronDownIcon from 'components/common/Icons/ChevronDownIcon'; import * as S from './Action.styled'; const Actions: React.FC = () => { const navigate = useNavigate(); const routerProps = useAppParams(); const mutationsNumber = useIsMutating(); const isMutating = mutationsNumber > 0; const { data: connector } = useConnector(routerProps); const confirm = useConfirm(); const deleteConnectorMutation = useDeleteConnector(routerProps); const deleteConnectorHandler = () => confirm( <> Are you sure you want to remove {routerProps.connectorName}{' '} connector? , async () => { try { await deleteConnectorMutation.mutateAsync(); navigate(clusterConnectorsPath(routerProps.clusterName)); } catch { // do not redirect } } ); const stateMutation = useUpdateConnectorState(routerProps); const mutationParams = (action: ConnectorAction) => { return { clusterName: routerProps.clusterName, connectName: routerProps.connectName, connectorName: routerProps.connectorName, action: action } } const restartConnectorHandler = () => stateMutation.mutateAsync(mutationParams(ConnectorAction.RESTART)); const restartAllTasksHandler = () => stateMutation.mutateAsync(mutationParams(ConnectorAction.RESTART_ALL_TASKS)); const restartFailedTasksHandler = () => stateMutation.mutateAsync(mutationParams(ConnectorAction.RESTART_FAILED_TASKS)); const pauseConnectorHandler = () => stateMutation.mutateAsync(mutationParams(ConnectorAction.PAUSE)); const resumeConnectorHandler = () => stateMutation.mutateAsync(mutationParams(ConnectorAction.RESUME)); return ( Restart } > {connector?.status.state === ConnectorState.RUNNING && ( Pause )} {connector?.status.state === ConnectorState.PAUSED && ( Resume )} Restart Connector Restart All Tasks Restart Failed Tasks Delete ); }; export default Actions;