1- import React , { useLayoutEffect } from 'react'
1+ import { useCallback , useLayoutEffect } from 'react'
22import DropDownMenu from './DropDownMenu'
33import { GLOBAL_TAG , MY_LANGUAGES_TAG } from 'src/config'
44import { useUserPreferences } from 'src/stores/preferences'
@@ -20,35 +20,40 @@ function SelectableCard({
2020 mergedTags = [ ...userSelectedTags , GLOBAL_TAG , MY_LANGUAGES_TAG ]
2121 }
2222
23- const getInitialSelectedTagValue = ( ) => {
23+ const findTagByValue = useCallback (
24+ ( value ) => {
25+ if ( ! value ) {
26+ return null
27+ }
28+
29+ return mergedTags . find ( ( t ) => t . value === value )
30+ } ,
31+ [ mergedTags ]
32+ )
33+
34+ const findTagByLabel = useCallback (
35+ ( name ) => {
36+ if ( ! name ) {
37+ return null
38+ }
39+
40+ return mergedTags . find ( ( t ) => t . label === name )
41+ } ,
42+ [ mergedTags ]
43+ )
44+ const getInitialSelectedTagValue = useCallback ( ( ) => {
2445 if ( isLanguage ) {
2546 return findTagByLabel ( cardSettings ) ?? fallbackTag
2647 } else {
2748 return findTagByValue ( cardSettings ) ?? fallbackTag
2849 }
29- }
30-
31- const findTagByValue = ( value ) => {
32- if ( ! value ) {
33- return null
34- }
35-
36- return mergedTags . find ( ( t ) => t . value === value )
37- }
38-
39- const findTagByLabel = ( name ) => {
40- if ( ! name ) {
41- return null
42- }
43-
44- return mergedTags . find ( ( t ) => t . label === name )
45- }
50+ } , [ cardSettings , fallbackTag , findTagByLabel , findTagByValue , isLanguage ] )
4651
4752 useLayoutEffect ( ( ) => {
4853 if ( selectedTag == null ) {
4954 setSelectedTag ( getInitialSelectedTagValue ( ) )
5055 }
51- } , [ ] )
56+ } , [ getInitialSelectedTagValue , selectedTag , setSelectedTag ] )
5257
5358 return (
5459 < DropDownMenu
0 commit comments