|
|
|
|
@ -5,15 +5,20 @@ import { |
|
|
|
|
useState, |
|
|
|
|
} from 'react' |
|
|
|
|
import { useLocation } from 'react-router-dom' |
|
|
|
|
|
|
|
|
|
import { isToday } from 'date-fns' |
|
|
|
|
|
|
|
|
|
import type { TournamentType } from 'requests/getMatches/types' |
|
|
|
|
|
|
|
|
|
import { useQueryParamStore } from 'hooks' |
|
|
|
|
|
|
|
|
|
import { getSportLexic } from 'helpers' |
|
|
|
|
|
|
|
|
|
import { SPORT_NAMES, SportTypes } from 'config' |
|
|
|
|
|
|
|
|
|
import { filterKeys } from '../config' |
|
|
|
|
import { isValidDate } from '../helpers/isValidDate' |
|
|
|
|
import { Match } from '../../../Matches' |
|
|
|
|
import type { Match } from '../../../Matches' |
|
|
|
|
|
|
|
|
|
export const useFilters = () => { |
|
|
|
|
const { search } = useLocation() |
|
|
|
|
@ -32,13 +37,26 @@ export const useFilters = () => { |
|
|
|
|
const [sportIds, setSportIds] = useState<any>() |
|
|
|
|
const isTodaySelected = isToday(selectedDate) |
|
|
|
|
|
|
|
|
|
const getSportIds = useCallback((matches:Array<Match>) => { |
|
|
|
|
const compareSport = useCallback((match: Match, sportNames: Array<string>) => { |
|
|
|
|
if (sportNames[0] === 'all_sports') { |
|
|
|
|
return true |
|
|
|
|
} |
|
|
|
|
const sport = getSportLexic(match.sportType) |
|
|
|
|
return (sportNames.indexOf(sport) >= 0 || sportNames.indexOf(`${sport}_popup`) >= 0) |
|
|
|
|
}, []) |
|
|
|
|
|
|
|
|
|
const updateSportIds = useCallback((matches:Array<Match>) => { |
|
|
|
|
const sportTypeIds = new Set<number>([]) |
|
|
|
|
matches.forEach((match) => { |
|
|
|
|
sportTypeIds.add(match.sportType) |
|
|
|
|
}) |
|
|
|
|
setSportIds(Array.from(sportTypeIds)) |
|
|
|
|
}, []) |
|
|
|
|
|
|
|
|
|
if (!Array.from(sportTypeIds)?.some((id: SportTypes) => SPORT_NAMES[id] === selectedSport[0]) |
|
|
|
|
) { |
|
|
|
|
setSelectedSport(['all_sports']) |
|
|
|
|
} |
|
|
|
|
}, [selectedSport]) |
|
|
|
|
|
|
|
|
|
const resetFilters = useCallback(() => { |
|
|
|
|
setIsShowTournament(true) |
|
|
|
|
@ -70,7 +88,7 @@ export const useFilters = () => { |
|
|
|
|
]) |
|
|
|
|
|
|
|
|
|
const store = useMemo(() => ({ |
|
|
|
|
getSportIds, |
|
|
|
|
compareSport, |
|
|
|
|
isShowTournament, |
|
|
|
|
isTodaySelected, |
|
|
|
|
resetFilters, |
|
|
|
|
@ -88,8 +106,9 @@ export const useFilters = () => { |
|
|
|
|
setSportIds, |
|
|
|
|
sportIds, |
|
|
|
|
updateDate, |
|
|
|
|
updateSportIds, |
|
|
|
|
}), [ |
|
|
|
|
getSportIds, |
|
|
|
|
compareSport, |
|
|
|
|
isShowTournament, |
|
|
|
|
isTodaySelected, |
|
|
|
|
resetFilters, |
|
|
|
|
@ -107,6 +126,7 @@ export const useFilters = () => { |
|
|
|
|
setSportIds, |
|
|
|
|
sportIds, |
|
|
|
|
updateDate, |
|
|
|
|
updateSportIds, |
|
|
|
|
]) |
|
|
|
|
|
|
|
|
|
return store |
|
|
|
|
|