fix(in-617): fix playing new playlist

pull/218/head
Ruslan Khayrullin 3 years ago
parent 877747322b
commit ca35f3d238
  1. 2
      src/features/MatchPage/store/hooks/index.tsx
  2. 8
      src/features/MatchPage/store/hooks/usePlayersStats.tsx
  3. 24
      src/features/MatchPage/store/hooks/useStatsTab.tsx
  4. 6
      src/features/MatchPage/store/hooks/useTeamsStats.tsx
  5. 16
      src/features/StreamPlayer/hooks/index.tsx

@ -296,7 +296,6 @@ export const useMatchPage = () => {
} = useTeamsStats({
matchProfile,
playingProgress,
selectedPlaylist,
selectedStatsTable,
selectedTab,
setIsTeamsStatsFetching,
@ -311,7 +310,6 @@ export const useMatchPage = () => {
} = usePlayersStats({
matchProfile,
playingProgress,
selectedPlaylist,
selectedStatsTable,
selectedTab,
setIsPlayersStatsFetching,

@ -36,9 +36,7 @@ import { getLocalStorageItem } from 'helpers/getLocalStorage'
import { useObjectState, usePageParams } from 'hooks'
import type{ PlaylistOption } from 'features/MatchPage/types'
import { StatsType, Tabs as StatsTabs } from 'features/MatchSidePlaylists/components/TabStats/config'
import { FULL_GAME_KEY } from 'features/MatchPage/helpers/buildPlaylists'
import { getHalfTime } from 'features/MatchPage/helpers/getHalfTime'
import { TOUR_COMPLETED_STORAGE_KEY } from 'features/MatchTour'
import { Tabs } from 'features/MatchSidePlaylists/config'
@ -52,7 +50,6 @@ const STATS_POLL_INTERVAL = 30000
type UsePlayersStatsArgs = {
matchProfile: MatchInfo,
playingProgress: number,
selectedPlaylist?: PlaylistOption,
selectedStatsTable: StatsTabs,
selectedTab: Tabs,
setIsPlayersStatsFetching: Dispatch<SetStateAction<boolean>>,
@ -67,7 +64,6 @@ type PlayersData = {
export const usePlayersStats = ({
matchProfile,
playingProgress,
selectedPlaylist,
selectedStatsTable,
selectedTab,
setIsPlayersStatsFetching,
@ -147,8 +143,7 @@ export const usePlayersStats = ({
const isTeam1Selected = selectedStatsTable === StatsTabs.TEAM1
if (
selectedPlaylist?.id !== FULL_GAME_KEY
|| selectedTab !== Tabs.STATS
selectedTab !== Tabs.STATS
|| !includes([StatsTabs.TEAM1, StatsTabs.TEAM2], selectedStatsTable)
|| !matchProfile?.team1.id
|| !matchProfile?.team2.id
@ -195,7 +190,6 @@ export const usePlayersStats = ({
setIsPlayersStatsFetching(false)
// eslint-disable-next-line react-hooks/exhaustive-deps
}, REQUEST_DELAY), [
selectedPlaylist?.id,
fetchPlayers,
fetchPlayersStats,
setPlayersStats,

@ -1,10 +1,8 @@
import { useState, useEffect } from 'react'
import map from 'lodash/map'
import isEqual from 'lodash/isEqual'
import type {
Episode,
Episodes,
Events,
MatchInfo,
@ -36,18 +34,6 @@ type PlayNextEpisodeArgs = {
order?: number,
}
const EPISODE_TIMESTAMP_OFFSET = 0.001
const addOffset = ({
e,
h,
s,
}: Episode) => ({
e: e + EPISODE_TIMESTAMP_OFFSET,
h,
s: s + EPISODE_TIMESTAMP_OFFSET,
})
export const useStatsTab = ({
disablePlayingEpisodes,
handlePlaylistClick,
@ -82,15 +68,7 @@ export const useStatsTab = ({
}
const getEpisodesToPlay = (episodes: Episodes) => map(episodes, (episode, i) => ({
episodes: [
/** При проигрывании нового эпизода с такими же e и s, как у текущего
воспроизведение начинается не с начала, чтобы пофиксить это добавляем
небольшой оффсет
*/
isEqual(episode, selectedPlaylist?.episodes[0])
? addOffset(episode)
: episode,
],
episodes: [episode],
id: i,
type: PlaylistTypes.EVENT,
})) as Array<EventPlaylistOption>

@ -25,9 +25,7 @@ import { usePageParams } from 'hooks'
import { getLocalStorageItem } from 'helpers/getLocalStorage'
import type { PlaylistOption } from 'features/MatchPage/types'
import { StatsType, Tabs as StatsTab } from 'features/MatchSidePlaylists/components/TabStats/config'
import { FULL_GAME_KEY } from 'features/MatchPage/helpers/buildPlaylists'
import { getHalfTime } from 'features/MatchPage/helpers/getHalfTime'
import { TOUR_COMPLETED_STORAGE_KEY } from 'features/MatchTour'
import { Tabs } from 'features/MatchSidePlaylists/config'
@ -40,7 +38,6 @@ const STATS_POLL_INTERVAL = 30000
type UseTeamsStatsArgs = {
matchProfile: MatchInfo,
playingProgress: number,
selectedPlaylist?: PlaylistOption,
selectedStatsTable: StatsTab,
selectedTab: Tabs,
setIsTeamsStatsFetching: Dispatch<SetStateAction<boolean>>,
@ -54,7 +51,6 @@ type TeamsStats = {
export const useTeamsStats = ({
matchProfile,
playingProgress,
selectedPlaylist,
selectedStatsTable,
selectedTab,
setIsTeamsStatsFetching,
@ -101,7 +97,6 @@ export const useTeamsStats = ({
if (
!sportName
|| selectedPlaylist?.id !== FULL_GAME_KEY
|| !videoBounds
|| selectedTab !== Tabs.STATS
|| selectedStatsTable !== StatsTab.TEAMS
@ -129,7 +124,6 @@ export const useTeamsStats = ({
matchProfile?.video_bounds,
matchProfile?.live,
matchScore?.video_bounds,
selectedPlaylist?.id,
matchId,
setIsTeamsStatsFetching,
sportName,

@ -339,7 +339,7 @@ export const useVideoPlayer = ({
setPlayerState({ playedProgress: value })
timeForStatistics.current = (value + chapter.startMs) / 1000
setPlayingProgress(Math.floor(value / 1000))
chapter.isFullMatchChapter && setPlayingProgress(Math.floor(value / 1000))
progressChangeCallback(value / 1000)
}
@ -530,6 +530,20 @@ export const useVideoPlayer = ({
selectedPlaylist,
])
/**
* Для воcпроизведения нового эпизода, аналогичного текущему, с начала
*/
useEffect(() => {
if (chaptersProps[0].isFullMatchChapter) return
setPlayerState({
...initialState,
chapters: chaptersProps,
playing: true,
seek: chaptersProps[0].startOffsetMs / 1000,
})
}, [chaptersProps, setPlayerState])
useEffect(() => {
if ((
chapters[0]?.isFullMatchChapter)

Loading…
Cancel
Save