parent
44a550a67d
commit
d5e2964e19
@ -0,0 +1,37 @@ |
||||
import { useEffect, useState } from 'react' |
||||
|
||||
import type { LastPlayPosition } from 'requests' |
||||
import { getMatchLastWatchSeconds } from 'requests' |
||||
|
||||
import { usePageParams } from 'hooks/usePageParams' |
||||
import { useRequest } from 'hooks/useRequest' |
||||
|
||||
const initialPosition = { |
||||
half: 0, |
||||
second: 0, |
||||
} |
||||
|
||||
export const useLastPlayPosition = () => { |
||||
const { profileId: matchId, sportType } = usePageParams() |
||||
const [ |
||||
lastPlayPosition, |
||||
setPosition, |
||||
] = useState<LastPlayPosition>(initialPosition) |
||||
const { |
||||
isFetching: isLastPlayPositionFetching, |
||||
request: requestLastPlayPosition, |
||||
} = useRequest(getMatchLastWatchSeconds) |
||||
|
||||
useEffect(() => { |
||||
requestLastPlayPosition(sportType, matchId).then(setPosition) |
||||
}, [ |
||||
sportType, |
||||
matchId, |
||||
requestLastPlayPosition, |
||||
]) |
||||
|
||||
return { |
||||
isLastPlayPositionFetching, |
||||
lastPlayPosition, |
||||
} |
||||
} |
||||
@ -0,0 +1,23 @@ |
||||
import { useMemo } from 'react' |
||||
import { useLocation } from 'react-router' |
||||
|
||||
import isNumber from 'lodash/isNumber' |
||||
|
||||
export const RESUME_KEY = 'resume' |
||||
|
||||
const readResumeParam = (search: string) => { |
||||
const params = new URLSearchParams(search) |
||||
const rawValue = params.get(RESUME_KEY) |
||||
if (!rawValue) return undefined |
||||
|
||||
const value = JSON.parse(rawValue) |
||||
return isNumber(value) ? value : 0 |
||||
} |
||||
|
||||
export const useUrlParam = () => { |
||||
const { search } = useLocation() |
||||
|
||||
const resume = useMemo(() => readResumeParam(search), [search]) |
||||
|
||||
return resume |
||||
} |
||||
@ -0,0 +1,43 @@ |
||||
import { |
||||
DATA_URL, |
||||
PROCEDURES, |
||||
|
||||
} from 'config' |
||||
import { callApi } from 'helpers' |
||||
|
||||
const proc = PROCEDURES.get_user_match_second |
||||
|
||||
type Response = { |
||||
_p_half: number | null, |
||||
_p_second: number | null, |
||||
} |
||||
|
||||
export type LastPlayPosition = { |
||||
half: number, |
||||
second: number, |
||||
} |
||||
|
||||
export const getMatchLastWatchSeconds = async ( |
||||
sportType: number, |
||||
matchId: number, |
||||
) => { |
||||
const config = { |
||||
body: { |
||||
params: { |
||||
_p_match_id: matchId, |
||||
_p_sport: sportType, |
||||
}, |
||||
proc, |
||||
}, |
||||
} |
||||
|
||||
const response: Response = await callApi({ |
||||
config, |
||||
url: DATA_URL, |
||||
}) |
||||
|
||||
return { |
||||
half: response?._p_half ?? 0, |
||||
second: response?._p_second ?? 0, |
||||
} |
||||
} |
||||
@ -0,0 +1,38 @@ |
||||
import { |
||||
DATA_URL, |
||||
PROCEDURES, |
||||
} from 'config' |
||||
import { callApi } from 'helpers' |
||||
|
||||
const proc = PROCEDURES.save_user_match_second |
||||
|
||||
type Args = { |
||||
half?: number, |
||||
matchId: number, |
||||
seconds: number, |
||||
sport: number, |
||||
} |
||||
|
||||
export const reportPlayerProgress = ({ |
||||
half, |
||||
matchId, |
||||
seconds, |
||||
sport, |
||||
}: Args) => { |
||||
const config = { |
||||
body: { |
||||
params: { |
||||
_p_half: half, |
||||
_p_match_id: matchId, |
||||
_p_second: seconds, |
||||
_p_sport: sport, |
||||
}, |
||||
proc, |
||||
}, |
||||
} |
||||
|
||||
callApi({ |
||||
config, |
||||
url: DATA_URL, |
||||
}) |
||||
} |
||||
Loading…
Reference in new issue