42 lines
1.6 KiB
TypeScript
42 lines
1.6 KiB
TypeScript
import { action } from 'typesafe-actions';
|
|
|
|
import { ILeaguePokemon, IPokemon } from 'app/models/Pokemon';
|
|
|
|
import { PokemonSelectListActionTypes, ThunkResult } from './types';
|
|
|
|
export const setPokemonList = (pokemonList : Array<IPokemon>) => 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<Promise<void>> => {
|
|
return (dispatch, getState, extraArguments) => {
|
|
return new Promise<void>((resolve, reject) => {
|
|
extraArguments.services.pokemonService.getPokemonList()
|
|
.then((pokemonList) => {
|
|
dispatch(setPokemonList(pokemonList));
|
|
resolve();
|
|
});
|
|
});
|
|
};
|
|
};
|
|
|
|
export const fetchPokemonLeagueStats = (
|
|
pokemonId : string
|
|
) : ThunkResult<Promise<void>> => {
|
|
return (dispatch, getState, extraArguments) => {
|
|
return new Promise<void>((resolve, reject) => {
|
|
extraArguments.services.pokemonService.getPokemonLeagueStats(pokemonId)
|
|
.then((pokemonLeagueStats) => {
|
|
dispatch(setPokemonLeagueStats(pokemonId, pokemonLeagueStats));
|
|
resolve();
|
|
})
|
|
.catch(() => {
|
|
reject();
|
|
});
|
|
});
|
|
};
|
|
};
|