All files / src/components/Buttons/WorkflowRunButton index.tsx

0% Statements 0/20
0% Branches 0/14
0% Functions 0/2
0% Lines 0/19

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56                                                                                                               
import CustomButton from "../../common/CustomButton";
import { Tooltip } from "rsuite";
import { PlayArrowRounded, PowerSettingsNewRounded } from "@mui/icons-material";
import { ExecutionStatus } from "../../../types";
import {
  useStartWorkflowExecutionMutation,
  useStopWorkflowExecutionMutation,
} from "../../../store/features/workflow/api";
import { CircularProgress } from "@mui/material";
 
type WorkflowRunButtonProps = {
  status: ExecutionStatus;
  id: string;
};
 
function WorkflowRunButton({ status, id }: WorkflowRunButtonProps) {
  const [triggerStartWorkflow, { isLoading: startExecutionLoading }] =
    useStartWorkflowExecutionMutation();
  const [triggerStopWorkflow, { isLoading: stopExecutionLoading }] =
    useStopWorkflowExecutionMutation();
  const loading = startExecutionLoading || stopExecutionLoading;
  const showStop =
    status === ExecutionStatus.WORKFLOW_RUNNING ||
    status === ExecutionStatus.WORKFLOW_SCHEDULED;
 
  const handleExecution = async () => {
    let response: any;
    switch (status) {
      case ExecutionStatus.WORKFLOW_RUNNING:
      case ExecutionStatus.WORKFLOW_SCHEDULED:
        response = await triggerStopWorkflow({ workflow_id: id }).unwrap();
        break;
      default:
        response = await triggerStartWorkflow(id).unwrap();
        break;
    }
    Iif (response.success) window.location.reload();
  };
 
  return (
    <CustomButton onClick={handleExecution}>
      <Tooltip title={showStop ? "Stop Execution" : "Start Execution"}>
        {loading ? (
          <CircularProgress size={20} />
        ) : showStop ? (
          <PowerSettingsNewRounded fontSize="small" />
        ) : (
          <PlayArrowRounded fontSize="small" />
        )}
      </Tooltip>
    </CustomButton>
  );
}
 
export default WorkflowRunButton;