import * as types from "./actionTypes"; import api from "./api"; import { sendHttpRequest } from "../../../redux/actions/httpActions"; import { Dispatch } from 'redux'; export interface LoadForwardOptionsStartedAction { type: typeof types.LOAD_FORWARD_OPTIONS_STARTED; id: string; } export interface LoadForwardOptionsSuccessAction { type: typeof types.LOAD_FORWARD_OPTIONS_SUCCESS; payload: any; id: string; } export type ForwardOptionsAction = | LoadForwardOptionsStartedAction | LoadForwardOptionsSuccessAction; export function loadForwardOptions(optionId: string) { return async function(dispatch: Dispatch, getState: () => any): Promise { try { const options = getState().options[optionId]; if (options && (options.loading || options.loaded)) return; dispatch({ type: types.LOAD_FORWARD_OPTIONS_STARTED, id: optionId }); const data = await dispatch( sendHttpRequest(api.getForwardOptions(optionId)) as any ); dispatch({ type: types.LOAD_FORWARD_OPTIONS_SUCCESS, payload: data, id: optionId }); } catch (error) { throw error; } }; }