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/requests/getMatchPlaylists.tsx

85 lines
1.5 KiB

import {
DATA_URL,
PROCEDURES,
SportTypes,
} from 'config'
import { callApi, getSportLexic } from 'helpers'
import { getFullMatchDuration } from './getFullMatchDuration'
const proc = PROCEDURES.ott_match_popup
type Args = {
matchId: number,
selectedActions: Array<number>,
sportType: SportTypes,
}
type PlaylistData = {
/** episode end */
e: number,
/** match half/time */
h: number,
/** episode start */
s: number,
}
type Playlist = {
data: Array<PlaylistData>,
dur: number,
}
type Player = {
id: number,
name_eng: string,
name_rus: string,
num: string,
}
export type Players = Array<Player>
export type MatchPlaylists = {
ball_in_play: Playlist,
fullMatchDuration: number,
goals: Playlist,
highlights: Playlist,
players1: Players,
players2: Players,
}
type Response = {
data?: MatchPlaylists,
}
export const getMatchPlaylists = async ({
matchId,
selectedActions,
sportType,
}: Args) => {
const config = {
body: {
params: {
_p_actions: selectedActions,
_p_match_id: matchId,
},
proc,
},
}
const playlistPromise: Promise<Response> = callApi({
config,
url: `${DATA_URL}/${getSportLexic(sportType)}`,
})
const matchDurationPromise = getFullMatchDuration(sportType, matchId)
const [playlist, fullMatchDuration] = await Promise.all(
[playlistPromise, matchDurationPromise],
)
return playlist.data
? { ...playlist.data, fullMatchDuration }
: null
}