Skip to content

Commit

Permalink
Prevent load icon to appear for all missions
Browse files Browse the repository at this point in the history
  • Loading branch information
prasm313 committed May 13, 2024
1 parent f2c1f9a commit 2d2219b
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 12 deletions.
24 changes: 13 additions & 11 deletions frontend/src/components/Contexts/MissionControlContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { BackendAPICaller } from 'api/ApiCaller'
import { MissionStatusRequest } from 'components/Pages/FrontPage/MissionOverview/StopDialogs'

interface IMissionControlState {
isWaitingForResponse: boolean
isRobotMissionWaitingForResponseDict: { [robotId: string]: boolean }
}

interface Props {
Expand All @@ -16,37 +16,39 @@ export interface IMissionControlContext {
}

const defaultMissionControlInterface = {
missionControlState: { isWaitingForResponse: false },
missionControlState: { isRobotMissionWaitingForResponseDict: {} },
updateRobotMissionState: (newState: MissionStatusRequest, robotId: string) => {},
}

export const MissionControlContext = createContext<IMissionControlContext>(defaultMissionControlInterface)
const defaultManagementState: IMissionControlState = {
isWaitingForResponse: false,
isRobotMissionWaitingForResponseDict: {},
}

export const MissionControlProvider: FC<Props> = ({ children }) => {
const [missionControlState, setMissionControlState] = useState<IMissionControlState>(defaultManagementState)

const setIsWaitingForResponse = (isWaiting: boolean) => {
setMissionControlState({ isWaitingForResponse: isWaiting })
const setIsWaitingForResponse = (robotId: string, isWaiting: boolean) => {
const updatedDict = { ...missionControlState.isRobotMissionWaitingForResponseDict }
updatedDict[robotId] = isWaiting
setMissionControlState({ isRobotMissionWaitingForResponseDict: updatedDict })
}

const updateRobotMissionState = (newState: MissionStatusRequest, robotId: string) => {
switch (newState) {
case MissionStatusRequest.Pause: {
setIsWaitingForResponse(true)
BackendAPICaller.pauseMission(robotId).then((_) => setIsWaitingForResponse(false))
setIsWaitingForResponse(robotId, true)
BackendAPICaller.pauseMission(robotId).then((_) => setIsWaitingForResponse(robotId, false))
break
}
case MissionStatusRequest.Resume: {
setIsWaitingForResponse(true)
BackendAPICaller.resumeMission(robotId).then((_) => setIsWaitingForResponse(false))
setIsWaitingForResponse(robotId, true)
BackendAPICaller.resumeMission(robotId).then((_) => setIsWaitingForResponse(robotId, false))
break
}
case MissionStatusRequest.Stop: {
setIsWaitingForResponse(true)
BackendAPICaller.stopMission(robotId).then((_) => setIsWaitingForResponse(false))
setIsWaitingForResponse(robotId, true)
BackendAPICaller.stopMission(robotId).then((_) => setIsWaitingForResponse(robotId, false))
break
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ export const MissionControlButtons = ({

return (
<>
{missionControlState.isWaitingForResponse ? (
{missionControlState.isRobotMissionWaitingForResponseDict[robotId] ? (
<CircularProgress size={32} />
) : (
<>
Expand Down

0 comments on commit 2d2219b

Please sign in to comment.