import React, {
useState,
useEffect,
useCallback,
} from 'react'
import styled from 'styled-components/macro'
import differenceInMilliseconds from 'date-fns/differenceInMilliseconds'
import type { Match } from 'features/Matches'
import { getSportColor, msToMinutesAndSeconds } from 'helpers'
import { SportName } from 'features/Common'
import { T9n } from 'features/T9n'
import { useCard } from '../hooks'
import {
CardWrapper,
Info,
MatchStatus as CommonMatchStatus,
Preview,
PreviewWrapper,
Score,
Team,
TeamName,
Teams,
TournamentName,
} from '../styled'
import { CardLiveHover } from '../CardLiveHover'
const UPDATE_INTERVAL = 1000
const MatchStatus = styled(CommonMatchStatus)`
color: #fff;
background-color: #cc0000;
`
type CardLiveProps = {
match: Match,
}
export const CardLive = ({
match: {
date,
id,
preview,
sportName,
sportType,
team1Name,
team1Score,
team2Name,
team2Score,
tournamentName,
},
}: CardLiveProps) => {
const {
close,
isOpen,
onKeyPress,
open,
showScore,
} = useCard()
const getMs = useCallback(() => differenceInMilliseconds(
new Date(),
new Date(date),
), [date])
const [matchDuration, setMatchDuration] = useState(msToMinutesAndSeconds(getMs()))
useEffect(() => {
const timer = setInterval(() => {
setMatchDuration(msToMinutesAndSeconds(getMs()))
}, UPDATE_INTERVAL)
return () => clearInterval(timer)
}, [getMs])
if (isOpen) return
return (
{matchDuration}
{tournamentName}
{team1Name}
{showScore && {team1Score}}
{team2Name}
{showScore && {team2Score}}
)
}