diff --git a/src/app/missions/page.tsx b/src/app/missions/page.tsx index ec64cc9..a2ffb29 100644 --- a/src/app/missions/page.tsx +++ b/src/app/missions/page.tsx @@ -73,6 +73,9 @@ const MissionsPage = () => { onUpdateMission={() => { refetch(); }} + onRunMission={() => { + refetch(); + }} /> diff --git a/src/components/modals/mission_modal.tsx b/src/components/modals/mission_modal.tsx index 75883e0..0e0f110 100644 --- a/src/components/modals/mission_modal.tsx +++ b/src/components/modals/mission_modal.tsx @@ -19,7 +19,11 @@ import { TasksAccordion } from "../ui/tasks_accordions"; import { Process, selectTheme } from "@/data/consts"; import { Button, Switch } from "@material-tailwind/react"; import { useMutation, useQuery } from "@apollo/client"; -import { GET_AGENTS, UPDATE_MISSION } from "@/utils/graphql_queries"; +import { + GET_AGENTS, + RUN_MISSION, + UPDATE_MISSION, +} from "@/utils/graphql_queries"; import withReactContent from "sweetalert2-react-content"; import Swal from "sweetalert2"; import { Agent } from "@/types/agent"; @@ -28,21 +32,27 @@ export default function MissionModal(props: { mission: Mission; showModal: boolean; setShowModal: Function; - onUpdateMission: Function; + onUpdateMission?: Function; + onRunMission?: Function; }): JSX.Element { const { mission, showModal, setShowModal, onUpdateMission = () => {}, + onRunMission = () => {}, } = props; const [isEdit, setEdit] = useState(false); const [tempMission, setTempMission] = useState(mission); + const [missionResult, setMissionResult] = useState( + mission?.result ?? "" + ); useEffect(() => { setTempMission(mission); + setMissionResult(mission?.result ?? ""); }, [mission]); const { loading, error, data: agentsData } = useQuery(GET_AGENTS); @@ -73,6 +83,20 @@ export default function MissionModal(props: { const ReactSwal = withReactContent(Swal); + const [runMission] = useMutation(RUN_MISSION); + const [runMissionLoading, setRunMissionLoading] = useState(false); + + const handleRunMission = async () => { + setRunMissionLoading(true); + return runMission({ + variables: { + id: Number.parseInt(mission.id as string), + }, + }).finally(() => { + setRunMissionLoading(false); + }); + }; + return (
@@ -243,15 +267,53 @@ export default function MissionModal(props: {
{mission?.result && ( -
- {mission?.result} +
+ {missionResult}
)}
- + {runMissionLoading && ( + + )}
)} diff --git a/src/components/modals/new_mission_modal.tsx b/src/components/modals/new_mission_modal.tsx index 683201e..dd6df47 100644 --- a/src/components/modals/new_mission_modal.tsx +++ b/src/components/modals/new_mission_modal.tsx @@ -183,19 +183,6 @@ function NewMissionModal(props: { />
-
- - {tempMission?.result && ( -
- {tempMission?.result} -
- )} -
-
- -