Skip to content

Commit 419093e

Browse files
used set for fast lookup
1 parent 4cfec92 commit 419093e

2 files changed

Lines changed: 15 additions & 9 deletions

File tree

packages/bruno-app/src/components/Environments/EnvironmentSettings/EnvironmentList/EnvironmentSelection/useEnvironmentBulkSelection.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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,

packages/bruno-app/src/components/Environments/EnvironmentSettings/EnvironmentList/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -682,7 +682,7 @@ const EnvironmentList = ({
682682

683683
<div className="environments-list">
684684
{filteredEnvironments.map((env) => {
685-
const isEnvSelected = bulkSelection.selectedEnvUids.includes(env.uid);
685+
const isEnvSelected = bulkSelection.isEnvSelected(env.uid);
686686
const isEnvMultiSelected = isEnvSelected && bulkSelection.selectedEnvUids.length > 1;
687687
return (
688688
<div

0 commit comments

Comments
 (0)