import { useCallback } from 'react' import { useQuery } from 'react-query' import { format } from 'date-fns' import includes from 'lodash/includes' import isNil from 'lodash/isNil' import type { Team } from 'requests/getMatchInfo' import { getName, Name } from 'features/Name' import { useAuthStore } from 'features/AuthStore' import { useMatchSwitchesStore } from 'features/MatchSwitches' import { TournamentSubtitle } from 'features/TournamentSubtitle' import { useLexicsStore } from 'features/LexicsStore' import { useMatchPageStore } from 'features/MatchPage/store' import { parseDate } from 'helpers/parseDate' import { ProfileTypes } from 'config' import { isMobileDevice } from 'config/userAgent' import { querieKeys } from 'config/queries' import { usePageParams } from 'hooks/usePageParams' import { getMatchScore } from 'requests/getMatchScore' import { Description, DescriptionInnerBlock, MatchDate, Score, StyledLink, Time, Title, Views, } from './styled' export const MatchDescription = () => { const { profileId, sportType, } = usePageParams() const { user } = useAuthStore() const { isScoreHidden } = useMatchSwitchesStore() const { suffix } = useLexicsStore() const { profile, profileCardShown } = useMatchPageStore() const getTeamName = useCallback((team: Team) => ( isMobileDevice ? getName({ nameObj: team, suffix }) : ), [suffix]) const { data: queryScore } = useQuery({ queryFn: async () => { if (profile?.live && !isScoreHidden) { const score = await getMatchScore({ profileId, sportType }) return score } return null }, queryKey: querieKeys.matchScore, refetchInterval: 5000, }) if (!profile) return const { country, country_id, date, sport, team1, team2, tournament, } = profile const isChangedTimeFormat = includes(['US', 'CA'], user?.profile.country_code) const localDate = format(parseDate(date), isMobileDevice ? 'MMM d, y' : 'MMMM d, y') const changedTimeFormat = format(parseDate(date), isChangedTimeFormat ? 'h:mm a' : 'HH:mm') return ( <StyledLink id={team1.id} profileType={ProfileTypes.TEAMS} sportType={sportType} > {getTeamName(team1)} </StyledLink> <Score> { isScoreHidden || isNil(team1.score) || isNil(team2.score) ? '-' : `${queryScore?.team1.score ?? team1.score} - ${queryScore?.team2.score ?? team2.score}` } </Score> <StyledLink id={team2.id} profileType={ProfileTypes.TEAMS} sportType={sportType} > {getTeamName(team2)} </StyledLink> { !isMobileDevice && ( {localDate} ) } ) }