1
- import { useState , useEffect } from "react" ;
1
+ import { useState , useEffect , useRef } from "react" ;
2
2
import "./CommitSelector.css" ;
3
3
import cross from "./cross.svg" ;
4
4
@@ -12,11 +12,13 @@ const CommitSelector = ({
12
12
new Array ( commits . length ) . fill ( false )
13
13
) ;
14
14
15
+ const timeoutInstance = useRef ( ) ;
16
+
15
17
useEffect ( ( ) => {
16
18
if ( selectedCommits . length === 0 )
17
19
setIsChecked ( new Array ( commits . length ) . fill ( false ) ) ;
18
20
else {
19
- const updatedCheckedState = [ ] ;
21
+ let updatedCheckedState = [ ] ;
20
22
for ( let i = 0 ; i < commits . length ; i ++ ) {
21
23
if (
22
24
selectedCommits . some (
@@ -34,14 +36,25 @@ const CommitSelector = ({
34
36
const handleCheckboxChange = ( index ) => {
35
37
let checkboxState = [ ...isChecked ] ; // Can't directly assign, as passing by reference isn't considered as a change
36
38
checkboxState [ index ] = ! checkboxState [ index ] ;
39
+
37
40
setIsChecked ( checkboxState ) ;
41
+ debouncedCommitSubmission ( checkboxState ) ;
42
+ } ;
43
+
44
+ const debouncedCommitSubmission = ( checkboxState ) => {
45
+ clearTimeout ( timeoutInstance . current ) ;
46
+
47
+ timeoutInstance . current = setTimeout (
48
+ ( ) => submitSelectedCommits ( checkboxState ) ,
49
+ 900
50
+ ) ;
38
51
} ;
39
52
40
- const submitSelectedCommits = ( ) => {
53
+ const submitSelectedCommits = ( checkboxState ) => {
41
54
let commitArr = [ ] ;
42
- for ( let i = 0 ; i < commits . length ; i ++ ) {
43
- if ( isChecked [ i ] === true ) commitArr . push ( commits [ i ] . hash ) ;
44
- }
55
+ for ( let i = 0 ; i < commits . length ; i ++ )
56
+ if ( checkboxState [ i ] === true ) commitArr . push ( commits [ i ] . hash ) ;
57
+
45
58
selectCommits ( commitArr ) ;
46
59
} ;
47
60
@@ -73,6 +86,8 @@ const CommitSelector = ({
73
86
</ button >
74
87
</ div >
75
88
89
+ < h2 > Highlight Commits</ h2 >
90
+
76
91
< div id = "commit-selector-shortcut-btn-wrapper" >
77
92
< button onClick = { ( ) => submitAllCommits ( ) } >
78
93
Highlight All Commits
@@ -83,12 +98,6 @@ const CommitSelector = ({
83
98
</ button >
84
99
</ div >
85
100
86
- < div id = "commit-selector-btn-wrapper" >
87
- < button onClick = { ( ) => submitSelectedCommits ( ) } >
88
- Highlight Checked Commits
89
- </ button >
90
- </ div >
91
-
92
101
< div
93
102
id = "selector-commit-wrapper"
94
103
onWheel = { ( event ) => event . stopPropagation ( ) }
0 commit comments