diff --git a/frontend/src/components/Displays/ConfirmScheduleDialogs/ConfirmScheduleDialog.tsx b/frontend/src/components/Displays/ConfirmScheduleDialogs/ConfirmScheduleDialog.tsx index 89401d2ea..daaf66ba8 100644 --- a/frontend/src/components/Displays/ConfirmScheduleDialogs/ConfirmScheduleDialog.tsx +++ b/frontend/src/components/Displays/ConfirmScheduleDialogs/ConfirmScheduleDialog.tsx @@ -1,4 +1,4 @@ -import { Robot } from 'models/Robot' +import { Robot, RobotCapabilitiesEnum } from 'models/Robot' import { useEffect, useState } from 'react' import { useRobotContext } from 'components/Contexts/RobotContext' import { @@ -22,6 +22,7 @@ export const ScheduleMissionWithConfirmDialogs = ({ }: ConfirmScheduleDialogProps) => { const { enabledRobots } = useRobotContext() const [robot, setRobot] = useState() + const [shouldScheduleWithoutLocalization, setShouldScheduleWithoutLocalization] = useState() const isBatteryInsufficient = (currentRobot: Robot) => { const hasBatteryValue = currentRobot.batteryLevel !== null && currentRobot.batteryLevel !== undefined @@ -47,6 +48,14 @@ export const ScheduleMissionWithConfirmDialogs = ({ setRobot(enabledRobots.find((robot) => robot.id === robotId)) }, [robotId, enabledRobots]) + useEffect(() => { + if (shouldScheduleWithoutLocalization) { + scheduleMissions() + closeDialog() + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [shouldScheduleWithoutLocalization]) + if (!robot) { return <> } else if (isBatteryInsufficient(robot)) { @@ -54,6 +63,14 @@ export const ScheduleMissionWithConfirmDialogs = ({ } else if (isPressureInsufficient(robot)) { return } else { + // Auto-localizing robots don't need to confirmation localization. Localization dialog can be skipped + if ( + robot.robotCapabilities?.includes(RobotCapabilitiesEnum.auto_localize) && + !shouldScheduleWithoutLocalization + ) { + setShouldScheduleWithoutLocalization(true) + return <> + } return (