diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunSetup.tsx b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunSetup.tsx index d54c223a8a5..3204293a7cc 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunSetup.tsx +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/ProtocolRunSetup.tsx @@ -1,4 +1,4 @@ -import { useState } from 'react' +import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { useDispatch, useSelector } from 'react-redux' @@ -133,6 +133,13 @@ export function ProtocolRunSetup({ const noLwOffsetsInRun = useSelector(selectTotalCountLocationSpecificOffsets(runId)) === 0 && isFlex + // A separate app can apply offsets. We need to update the missing steps as a side effect. + useEffect(() => { + if (flexOffsetsApplied) { + dispatch(updateRunSetupStepsComplete(runId, { [LPC_STEP_KEY]: true })) + } + }, [flexOffsetsApplied]) + const offsetsConfirmed = isFlex ? flexOffsetsApplied && !missingSteps.includes(LPC_STEP_KEY) : !missingSteps.includes(LPC_STEP_KEY) @@ -266,9 +273,6 @@ export function ProtocolRunSetup({ { - dispatch( - updateRunSetupStepsComplete(runId, { [LPC_STEP_KEY]: confirmed }) - ) if (confirmed) { dispatch(appliedOffsetsToRun(runId)) diff --git a/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLabwarePositionCheck/FlexSetupLPC/LPCSetupFlexBtns.tsx b/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLabwarePositionCheck/FlexSetupLPC/LPCSetupFlexBtns.tsx index c9fc8fa24ac..f22a4e78074 100644 --- a/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLabwarePositionCheck/FlexSetupLPC/LPCSetupFlexBtns.tsx +++ b/app/src/organisms/Desktop/Devices/ProtocolRun/SetupLabwarePositionCheck/FlexSetupLPC/LPCSetupFlexBtns.tsx @@ -17,7 +17,6 @@ import { import { useToaster } from '/app/organisms/ToasterOven' import { useLPCDisabledReason } from '/app/resources/runs' import { - selectAreOffsetsApplied, selectIsAnyNecessaryDefaultOffsetMissing, selectLabwareOffsetsToAddToRun, selectTotalCountNonHardCodedLSOffsets, @@ -31,6 +30,7 @@ export interface LPCSetupFlexBtnsProps extends SetupLabwarePositionCheckProps { export function LPCSetupFlexBtns({ setOffsetsConfirmed, + offsetsConfirmed, launchLPC, runId, robotName, @@ -41,7 +41,6 @@ export function LPCSetupFlexBtns({ const isNecessaryDefaultOffsetMissing = useSelector( selectIsAnyNecessaryDefaultOffsetMissing(runId) ) - const offsetsConfirmed = useSelector(selectAreOffsetsApplied(runId)) const [runLPCTargetProps, runLPCTooltipProps] = useHoverTooltip({ placement: TOOLTIP_BOTTOM, }) @@ -79,6 +78,16 @@ export function LPCSetupFlexBtns({ } } + const runLPCDisabledTooltipText = (): string | null => { + if (lpcDisabledReason != null) { + return lpcDisabledReason + } else if (offsetsConfirmed) { + return t('offsets_already_applied') + } else { + return null + } + } + const onApplyOffsets = (): void => { if (!isApplyOffsets && lwOffsetsForRun != null) { setIsApplyingOffsets(true) @@ -103,12 +112,14 @@ export function LPCSetupFlexBtns({ onClick={launchLPC} id="LabwareSetup_checkLabwarePositionsButton" {...runLPCTargetProps} - disabled={lpcDisabledReason !== null} + disabled={lpcDisabledReason !== null || offsetsConfirmed} > {t('run_labware_position_check')} - {lpcDisabledReason !== null ? ( - {lpcDisabledReason} + {lpcDisabledReason !== null || offsetsConfirmed ? ( + + {runLPCDisabledTooltipText()} + ) : null}