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/pages/HighlightsPage/storeHighlightsAtoms.tsx

60 lines
1.3 KiB

import { atom, selector } from 'recoil'
import type { Match } from 'requests'
export type MatchType = Match & {
isChecked: boolean,
}
export type PlayerMatchesType = Array<MatchType>
type DataForm = {
data: {
background_music: string | null,
duration: number,
lang: string,
matches: Array<number>,
player_id: number,
price: number,
sport_id: number,
stats: boolean,
},
isDisabledButton: boolean,
isOpenThanksPopup: boolean,
}
export const playerMatchesState = atom({
default: [] as PlayerMatchesType,
key: 'playerMatchesState',
})
export const openPopupChangeCard = atom({
default: false,
key: 'openPopupChangeCard',
})
export const dataForPayHighlights = atom({
default: {} as DataForm,
key: 'dataForPayHighlights',
})
export const fetchingMatches = atom({
default: false,
key: 'fetchingMatches',
})
export const checkedMatches = selector({
get: ({ get }) => {
const matches = get(playerMatchesState)
const checkedPlayerMatches = matches.filter(({ isChecked }) => isChecked)
const idsCheckedMatches = checkedPlayerMatches.map(({ id }) => id)
const checkedMatchesLength = checkedPlayerMatches.length
return {
checkedMatchesLength,
checkedPlayerMatches,
idsCheckedMatches,
}
},
key: 'checkedMatches',
})