import { action } from 'typesafe-actions'; import { ILeaguePokemon, IPokemon } from 'app/models/Pokemon'; import { PokemonSelectListActionTypes, ThunkResult } from './types'; export const setPokemonList = (pokemonList : Array) => action(PokemonSelectListActionTypes.SET_POKEMON_LIST, { pokemonList }); export const setActivePokemonIndex = (activePokemonIndex : number) => action(PokemonSelectListActionTypes.SET_ACTIVE_POKEMON_INDEX, { activePokemonIndex }); export const setPokemonLeagueStats = (pokemonId : string, pokemonLeagueStats : ILeaguePokemon) => action(PokemonSelectListActionTypes.SET_POKEMON_LEAGUE_STATS, { pokemonId, pokemonLeagueStats }); export const fetchPokemonList = ( ) : ThunkResult> => { return (dispatch, getState, extraArguments) => { return new Promise((resolve, reject) => { extraArguments.services.pokemonService.getPokemonList() .then((pokemonList) => { dispatch(setPokemonList(pokemonList)); resolve(); }); }); }; }; export const fetchPokemonLeagueStats = ( pokemonId : string ) : ThunkResult> => { return (dispatch, getState, extraArguments) => { return new Promise((resolve, reject) => { extraArguments.services.pokemonService.getPokemonLeagueStats(pokemonId) .then((pokemonLeagueStats) => { dispatch(setPokemonLeagueStats(pokemonId, pokemonLeagueStats)); resolve(); }) .catch(() => { reject(); }); }); }; };