|
|
|
|
@ -24,7 +24,11 @@ import { |
|
|
|
|
import { getPlayerMatches } from 'requests/getMatches/getPlayerMatches' |
|
|
|
|
import { getTeamPlayers, Player } from 'requests/getTeamPlayers' |
|
|
|
|
|
|
|
|
|
import { playerMatchesState, dataForPayHighlights } from '../../storeHighlightsAtoms' |
|
|
|
|
import { |
|
|
|
|
playerMatchesState, |
|
|
|
|
dataForPayHighlights, |
|
|
|
|
fetchingMatches, |
|
|
|
|
} from '../../storeHighlightsAtoms' |
|
|
|
|
|
|
|
|
|
export type SportType = { |
|
|
|
|
id: number, |
|
|
|
|
@ -73,6 +77,7 @@ const sounds = [ |
|
|
|
|
{ |
|
|
|
|
id: 0, |
|
|
|
|
name: 'No', |
|
|
|
|
src: '', |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
id: 1, |
|
|
|
|
@ -171,12 +176,14 @@ export const useHighlightsForm = () => { |
|
|
|
|
const { playerHighlight } = useUserFavoritesStore() |
|
|
|
|
|
|
|
|
|
const [sports, setSports] = useState<Array<SportTypeName>>([]) |
|
|
|
|
const [isFetchingTeams, setIsFetchingTeams] = useState(false) |
|
|
|
|
const [teams, setTeams] = useState<Array<TeamType>>([]) |
|
|
|
|
const [playersData, setPlayersData] = useState<Array<PlayerType>>([]) |
|
|
|
|
const [players, setPlayers] = useState<Array<PlayerType>>([]) |
|
|
|
|
const [formState, setFormState] = useState<FormType>(defaultValues) |
|
|
|
|
const [playerMatches, setPlayerMatches] = useRecoilState(playerMatchesState) |
|
|
|
|
const setDatahighlights = useSetRecoilState(dataForPayHighlights) |
|
|
|
|
const setIsFetching = useSetRecoilState(fetchingMatches) |
|
|
|
|
|
|
|
|
|
const formRef = useRef<HTMLFormElement>(null) |
|
|
|
|
|
|
|
|
|
@ -298,18 +305,25 @@ export const useHighlightsForm = () => { |
|
|
|
|
}, [sports, playerHighlight, teams]) |
|
|
|
|
|
|
|
|
|
const fetchTeams = useMemo( |
|
|
|
|
() => debounce(() => formState?.sport?.id && getSportTeams( |
|
|
|
|
formState?.sport?.id, |
|
|
|
|
-1, |
|
|
|
|
formState.teamValue, |
|
|
|
|
).then( |
|
|
|
|
({ data }: SportTeamsType) => setTeams( |
|
|
|
|
data?.map((team: Team) => ({ |
|
|
|
|
...team, |
|
|
|
|
name: team.name_eng, |
|
|
|
|
})), |
|
|
|
|
), |
|
|
|
|
), 1000), |
|
|
|
|
() => debounce(() => { |
|
|
|
|
setIsFetchingTeams(true) |
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
|
|
|
|
|
formState?.sport?.id |
|
|
|
|
&& getSportTeams( |
|
|
|
|
formState?.sport?.id, |
|
|
|
|
-1, |
|
|
|
|
formState.teamValue, |
|
|
|
|
) |
|
|
|
|
.then(({ data }: SportTeamsType) => { |
|
|
|
|
setTeams( |
|
|
|
|
data?.map((team: Team) => ({ |
|
|
|
|
...team, |
|
|
|
|
name: team.name_eng, |
|
|
|
|
})), |
|
|
|
|
) |
|
|
|
|
}) |
|
|
|
|
.finally(() => setIsFetchingTeams(false)) |
|
|
|
|
}, 1000), |
|
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
|
|
|
[formState.teamValue], |
|
|
|
|
) |
|
|
|
|
@ -325,7 +339,8 @@ export const useHighlightsForm = () => { |
|
|
|
|
if (formState?.selectedPlayer?.id && formState?.sport) { |
|
|
|
|
setDatahighlights({ |
|
|
|
|
data: { |
|
|
|
|
duration: Number(formState?.duration), |
|
|
|
|
background_music: formState?.selectedSound?.src, |
|
|
|
|
duration: Number(formState?.duration) * 60, |
|
|
|
|
lang: 'en', |
|
|
|
|
matches: playerMatches?.filter(({ isChecked }) => (isChecked)).map(({ id }) => id), |
|
|
|
|
player_id: formState?.selectedPlayer?.id, |
|
|
|
|
@ -346,16 +361,19 @@ export const useHighlightsForm = () => { |
|
|
|
|
formState?.sport?.id || playerHighlight.sportType, formState?.selectedTeam?.id |
|
|
|
|
|| playerHighlight?.profile?.additionalInfo?.id, |
|
|
|
|
) |
|
|
|
|
.then((state) => setPlayersData(state?.map((player: Player) => ({ |
|
|
|
|
...player, |
|
|
|
|
name: `${player?.firstname_eng} ${player?.lastname_eng}`, |
|
|
|
|
})))) |
|
|
|
|
.then((state) => { |
|
|
|
|
setPlayersData(state?.map((player: Player) => ({ |
|
|
|
|
...player, |
|
|
|
|
name: `${player?.firstname_eng} ${player?.lastname_eng}`, |
|
|
|
|
}))) |
|
|
|
|
}) |
|
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
|
|
|
}, [formState?.selectedTeam, playerHighlight]) |
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
|
if (!formState?.selectedPlayer || !formState?.sport) return |
|
|
|
|
|
|
|
|
|
setIsFetching(true) |
|
|
|
|
formState?.selectedPlayer |
|
|
|
|
&& getPlayerMatches({ |
|
|
|
|
limit: 1000, |
|
|
|
|
@ -367,6 +385,8 @@ export const useHighlightsForm = () => { |
|
|
|
|
.then(({ broadcast }) => setPlayerMatches( |
|
|
|
|
broadcast.map((match: Match) => ({ ...match, isChecked: false })), |
|
|
|
|
)) |
|
|
|
|
.finally(() => setIsFetching(false)) |
|
|
|
|
|
|
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
|
|
|
}, [formState?.selectedPlayer, formState?.selectedTeam]) |
|
|
|
|
|
|
|
|
|
@ -374,6 +394,7 @@ export const useHighlightsForm = () => { |
|
|
|
|
formRef, |
|
|
|
|
formState, |
|
|
|
|
handleSubmit, |
|
|
|
|
isFetchingTeams, |
|
|
|
|
onChangeMaxDuration, |
|
|
|
|
onChangePlayer, |
|
|
|
|
onChangeTeam, |
|
|
|
|
|