You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
spa_instat_tv/src/features/MatchSidePlaylists/hooks.tsx

59 lines
1.2 KiB

import {
useEffect,
useMemo,
useState,
} from 'react'
import reduce from 'lodash/reduce'
import { useMatchPageStore } from 'features/MatchPage/store'
import { Tabs } from './config'
export const useMatchSidePlaylists = () => {
const {
closePopup,
events,
matchPlaylists: playlists,
} = useMatchPageStore()
const [selectedTab, setSelectedTab] = useState<Tabs>(Tabs.WATCH)
const isWatchTabVisible = useMemo(() => {
const playListFilter = reduce(
playlists.match,
(acc, item) => {
let result = acc
if (item.duration) result++
return result
},
0,
)
return playListFilter > 1
}, [playlists])
const isEventTabVisible = useMemo(() => (
events.length > 0
), [events])
useEffect(() => {
switch (true) {
case isWatchTabVisible:
setSelectedTab(Tabs.WATCH)
break
case isEventTabVisible:
setSelectedTab(Tabs.EVENTS)
break
}
}, [isEventTabVisible, isWatchTabVisible])
useEffect(() => {
if (selectedTab !== Tabs.EVENTS) closePopup()
}, [selectedTab, closePopup])
return {
isEventTabVisible,
isStatsTabVisible: true,
isWatchTabVisible,
onTabClick: setSelectedTab,
selectedTab,
}
}