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.
59 lines
1.2 KiB
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,
|
|
}
|
|
}
|
|
|