@@ -12,13 +12,12 @@ import {
12
12
RESPONSIVENESS ,
13
13
SPACING ,
14
14
} from '@opentrons/components'
15
- import {
16
- ABSORBANCE_READER_TYPE ,
17
- FLEX_STACKER_MODULE_TYPE ,
18
- getModuleDisplayName ,
19
- } from '@opentrons/shared-data'
15
+ import { getModuleDisplayName } from '@opentrons/shared-data'
20
16
21
- import { useGetModulesNeedingSetupThatCanCurrentlyBeSetUp } from '/app/App/hooks'
17
+ import {
18
+ useGetModulesNeedingSetup ,
19
+ useGetModulesNeedingSetupThatCanCurrentlyBeSetUp ,
20
+ } from '/app/App/hooks'
22
21
import { SmallButton } from '/app/atoms/buttons'
23
22
import { i18n } from '/app/i18n'
24
23
import { useModuleUSBPort } from '/app/local-resources/modules'
@@ -31,8 +30,6 @@ import {
31
30
import { useSendIdentifyStacker } from './hooks'
32
31
33
32
import type { AttachedModule } from '@opentrons/api-client'
34
- import type { ModuleType } from '@opentrons/shared-data'
35
- import type { PipetteInformation } from '/app/redux/pipettes'
36
33
37
34
interface SelectModuleProps {
38
35
buildFlowForSelectedModule : ( module : AttachedModule ) => void
@@ -41,7 +38,6 @@ interface SelectModuleProps {
41
38
setSelectedModule : ( module : AttachedModule | null ) => void
42
39
setShowLaunchSetup : ( show : boolean ) => void
43
40
attachedModuleOnLaunch ?: AttachedModule | null
44
- attachedPipette ?: PipetteInformation | null
45
41
}
46
42
47
43
interface ModuleNameAndPort {
@@ -57,27 +53,18 @@ export function SelectModule(props: SelectModuleProps): JSX.Element | null {
57
53
setSelectedModule,
58
54
setShowLaunchSetup,
59
55
attachedModuleOnLaunch = null ,
60
- attachedPipette,
61
56
} = props
62
57
const { t } = useTranslation ( 'module_wizard_flows' )
63
58
64
59
const { parseModuleUSBPort } = useModuleUSBPort ( )
65
- const availableModules = useGetModulesNeedingSetupThatCanCurrentlyBeSetUp ( )
66
- const allSettupable = useGetModulesNeedingSetup ( )
67
- const allNewModules =
68
- attachedModuleOnLaunch !== null
69
- ? [ attachedModuleOnLaunch ]
70
- : availableModules
71
- const modulesNotRequiringPipette = availableModules . filter ( thisModule =>
72
- ( [
73
- ABSORBANCE_READER_TYPE ,
74
- FLEX_STACKER_MODULE_TYPE ,
75
- ] as ModuleType [ ] ) . includes ( thisModule . moduleType )
76
- )
60
+ const allSetupable = useGetModulesNeedingSetupThatCanCurrentlyBeSetUp ( )
61
+ const allNeedingSetup = useGetModulesNeedingSetup ( )
77
62
const newModules =
78
- attachedPipette == null ? modulesNotRequiringPipette : allNewModules
79
-
80
- const isSingleModule = newModules . length === 1
63
+ attachedModuleOnLaunch == null ? allSetupable : [ attachedModuleOnLaunch ]
64
+ // allNeedingSetup is a superset of allSetupable
65
+ const hasUnsetupabbleModules = allNeedingSetup . length > allSetupable . length
66
+ const isSingleModule = newModules . length === 1 && ! hasUnsetupabbleModules
67
+ const shortCircuitFlow = attachedModuleOnLaunch != null || isSingleModule
81
68
const sendIdentifyStacker = useSendIdentifyStacker ( )
82
69
83
70
const getModuleNameAndPort = ( module : AttachedModule ) : ModuleNameAndPort => {
@@ -88,11 +75,11 @@ export function SelectModule(props: SelectModuleProps): JSX.Element | null {
88
75
89
76
// Handler for when there is one module
90
77
useEffect ( ( ) => {
91
- if ( isSingleModule ) {
78
+ if ( shortCircuitFlow ) {
92
79
setSelectedModule ( newModules [ 0 ] )
93
80
sendIdentifyStacker ( newModules [ 0 ] , true )
94
81
}
95
- } , [ isSingleModule ] )
82
+ } , [ shortCircuitFlow ] )
96
83
97
84
// Handler for when there are multiple modules.
98
85
const handleModuleSelected = ( serialNumber : string ) : void => {
@@ -133,7 +120,7 @@ export function SelectModule(props: SelectModuleProps): JSX.Element | null {
133
120
`
134
121
if ( newModules . length === 0 ) {
135
122
return null
136
- } else if ( isSingleModule && selectedModule != null ) {
123
+ } else if ( shortCircuitFlow && selectedModule != null ) {
137
124
const m = getModuleNameAndPort ( selectedModule )
138
125
return (
139
126
< SimpleWizardBody
@@ -183,6 +170,11 @@ export function SelectModule(props: SelectModuleProps): JSX.Element | null {
183
170
onSelect = { event => {
184
171
handleModuleSelected ( event . target . value )
185
172
} }
173
+ subText = {
174
+ hasUnsetupabbleModules
175
+ ? t ( 'connect_a_pipette_to_set_up_more_modules' )
176
+ : null
177
+ }
186
178
/>
187
179
</ Flex >
188
180
< Flex css = { BUTTON_STYLE } >
0 commit comments