11import { useMemo } from 'react'
22import { useUserPreferences } from 'src/stores/preferences'
3+ import { useShallow } from 'zustand/shallow'
34import { MY_LANGUAGES_OPTION } from '../config'
45
56type useSelectedTagsProps = {
@@ -10,27 +11,41 @@ type useSelectedTagsProps = {
1011 }
1112}
1213export const useSelectedTags = ( { source, fallbackTag } : useSelectedTagsProps ) => {
13- const cardSettings = useUserPreferences ( ( state ) => state . cardsSettings ?. [ source ] )
14- const { userSelectedTags } = useUserPreferences ( )
15-
14+ const { cardSettings, userSelectedTags } = useUserPreferences (
15+ useShallow ( ( state ) => {
16+ return {
17+ cardSettings : state . cardsSettings ?. [ source ] ,
18+ userSelectedTags : state . userSelectedTags ,
19+ }
20+ } )
21+ )
22+ const { language } = cardSettings || { }
1623 const selectedTags = useMemo ( ( ) => {
17- if ( ! cardSettings ?. language ) {
24+ if ( ! language || ( language === MY_LANGUAGES_OPTION . value && userSelectedTags . length === 0 ) ) {
1825 return [ fallbackTag ]
1926 }
2027
21- if ( cardSettings . language === MY_LANGUAGES_OPTION . value ) {
28+ if ( language === MY_LANGUAGES_OPTION . value ) {
2229 return userSelectedTags
2330 }
24- return [ userSelectedTags . find ( ( lang ) => lang . value === cardSettings ?. language ) || fallbackTag ]
25- } , [ userSelectedTags , cardSettings ] )
31+ return [ userSelectedTags . find ( ( lang ) => lang . value === language ) || fallbackTag ]
32+ } , [ userSelectedTags , language ] )
33+
34+ const selectedTag = useMemo ( ( ) => {
35+ return language
36+ ? [ MY_LANGUAGES_OPTION , ...userSelectedTags ] . find ( ( lang ) => lang . value === language ) ||
37+ fallbackTag
38+ : fallbackTag
39+ } , [ language , userSelectedTags ] )
40+
41+ const queryTags = useMemo ( ( ) => {
42+ return selectedTags . map ( ( tag ) => tag . value )
43+ } , [ selectedTags ] )
2644
2745 return {
28- queryTags : selectedTags ,
29- selectedTag : cardSettings ?. language
30- ? [ MY_LANGUAGES_OPTION , ...userSelectedTags ] . find (
31- ( lang ) => lang . value === cardSettings . language
32- ) || fallbackTag
33- : fallbackTag ,
46+ selectedTags,
47+ queryTags,
48+ selectedTag,
3449 cardSettings,
3550 }
3651}
0 commit comments