pvpokemon/src/ts/app/actions.ts
2019-01-19 00:41:50 -05:00

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();
});
});
};
};