@@ -21,6 +21,9 @@ const useEnvironmentBulkSelection = ({
2121 const envUids = useMemo ( ( ) => ( environments ? environments . map ( ( env ) => env . uid ) : [ ] ) , [ environments ] ) ;
2222 const filteredEnvUids = useMemo ( ( ) => filteredEnvironments . map ( ( env ) => env . uid ) , [ filteredEnvironments ] ) ;
2323
24+ const selectedEnvUidSet = useMemo ( ( ) => new Set ( selectedEnvUids ) , [ selectedEnvUids ] ) ;
25+ const actionTargetUidSet = useMemo ( ( ) => new Set ( actionTargetUids ) , [ actionTargetUids ] ) ;
26+
2427 useEffect ( ( ) => {
2528 setSelectedEnvUids ( [ ] ) ;
2629 setActionTargetUids ( [ ] ) ;
@@ -38,17 +41,17 @@ const useEnvironmentBulkSelection = ({
3841
3942 const hasSelection = selectedEnvUids . length > 0 ;
4043 const selectedEnvironmentsList = useMemo (
41- ( ) => environments ?. filter ( ( env ) => selectedEnvUids . includes ( env . uid ) ) || [ ] ,
42- [ environments , selectedEnvUids ]
44+ ( ) => environments ?. filter ( ( env ) => selectedEnvUidSet . has ( env . uid ) ) || [ ] ,
45+ [ environments , selectedEnvUidSet ]
4346 ) ;
4447 const actionTargetEnvironmentsList = useMemo (
45- ( ) => environments ?. filter ( ( env ) => actionTargetUids . includes ( env . uid ) ) || [ ] ,
46- [ environments , actionTargetUids ]
48+ ( ) => environments ?. filter ( ( env ) => actionTargetUidSet . has ( env . uid ) ) || [ ] ,
49+ [ environments , actionTargetUidSet ]
4750 ) ;
4851
4952 const isAllSelected = useMemo (
50- ( ) => filteredEnvUids . length > 0 && filteredEnvUids . every ( ( uid ) => selectedEnvUids . includes ( uid ) ) ,
51- [ filteredEnvUids , selectedEnvUids ]
53+ ( ) => filteredEnvUids . length > 0 && filteredEnvUids . every ( ( uid ) => selectedEnvUidSet . has ( uid ) ) ,
54+ [ filteredEnvUids , selectedEnvUidSet ]
5255 ) ;
5356
5457 const openMenuAt = useCallback ( ( e ) => {
@@ -142,11 +145,11 @@ const useEnvironmentBulkSelection = ({
142145 e . preventDefault ( ) ;
143146 e . stopPropagation ( ) ;
144147
145- const isPartOfMultiSelection = selectedEnvUids . includes ( env . uid ) && selectedEnvUids . length > 1 ;
148+ const isPartOfMultiSelection = selectedEnvUidSet . has ( env . uid ) && selectedEnvUids . length > 1 ;
146149 setActionTargetUids ( isPartOfMultiSelection ? selectedEnvUids : [ env . uid ] ) ;
147150
148151 openMenuAt ( e ) ;
149- } , [ selectedEnvUids , openMenuAt ] ) ;
152+ } , [ selectedEnvUids , selectedEnvUidSet , openMenuAt ] ) ;
150153
151154 const handleDeleted = useCallback ( ( failedUids ) => {
152155 const stillPresent = new Set ( failedUids || [ ] ) ;
@@ -233,10 +236,13 @@ const useEnvironmentBulkSelection = ({
233236 return ( ) => document . removeEventListener ( 'keydown' , handleKeyDown ) ;
234237 } , [ selectAllEnvs ] ) ;
235238
239+ const isEnvSelected = useCallback ( ( uid ) => selectedEnvUidSet . has ( uid ) , [ selectedEnvUidSet ] ) ;
240+
236241 return {
237242 scopeRef,
238243 hasSelection,
239244 selectedEnvUids,
245+ isEnvSelected,
240246 selectedEnvironmentsList,
241247 actionTargetUids,
242248 actionTargetEnvironmentsList,
0 commit comments