15
15
*/
16
16
17
17
import { useParams } from 'react-router-dom'
18
- import { useEffect , useMemo , useRef , useState } from 'react'
18
+ import { useCallback , useEffect , useMemo , useRef , useState } from 'react'
19
19
import AnsiUp from 'ansi_up'
20
20
import DOMPurify from 'dompurify'
21
21
import { ANSI_UP_REGEX , ComponentSizeType } from '@Shared/constants'
@@ -189,7 +189,6 @@ const LogsRenderer = ({
189
189
// State for logs list in case no stages are available
190
190
const [ logsList , setLogsList ] = useState < string [ ] > ( [ ] )
191
191
const { searchKey, handleSearch } = useUrlFilters ( )
192
- const accordionExpansionStateTogglerButtonRef = useRef < HTMLButtonElement > ( null )
193
192
194
193
const areAllStagesExpanded = useMemo ( ( ) => stageList . every ( ( item ) => item . isOpen ) , [ stageList ] )
195
194
@@ -386,15 +385,14 @@ const LogsRenderer = ({
386
385
// And for other cases we would use handleSearchEnter
387
386
} , [ streamDataList , areEventsProgressing ] )
388
387
389
- const handleToggleOpenAllStages = ( ) => {
388
+ const handleToggleOpenAllStages = useCallback ( ( ) => {
390
389
setStageList ( ( prev ) =>
391
390
prev . map ( ( stage ) => ( {
392
391
...stage ,
393
- // NOTE: need to use ref due to the problem of stale function reference after registering the callback
394
- isOpen : ! ( accordionExpansionStateTogglerButtonRef . current . dataset . toggleState === 'true' ) ,
392
+ isOpen : ! areAllStagesExpanded ,
395
393
} ) ) ,
396
394
)
397
- }
395
+ } , [ areAllStagesExpanded ] )
398
396
399
397
useEffect ( ( ) => {
400
398
shortcut . registerShortcut (
@@ -407,7 +405,7 @@ const LogsRenderer = ({
407
405
return ( ) => {
408
406
shortcut . unregisterShortcut ( [ 'e' ] )
409
407
}
410
- } , [ ] )
408
+ } , [ handleToggleOpenAllStages ] )
411
409
412
410
const handleSearchEnter = ( searchText : string ) => {
413
411
handleSearch ( searchText )
@@ -468,7 +466,6 @@ const LogsRenderer = ({
468
466
onClick = { handleToggleOpenAllStages }
469
467
aria-label = "Expand all stages"
470
468
data-toggle-state = { areAllStagesExpanded }
471
- ref = { accordionExpansionStateTogglerButtonRef }
472
469
>
473
470
{ areAllStagesExpanded ? (
474
471
< ICCollapseAll className = "icon-dim-16 dc__no-shrink dc__transition--transform scn-0" />
0 commit comments