import { InitialStateCreator, createReducer } from "@tsed/redux-utils"; import { ActionSchema } from "../../interfaces"; import { failActionInfo, receiveActionInfo, requestActionInfo, resetActionInfo } from "./action-info.actions"; import { ACTION_INFO } from "./action-info.constant"; export interface ActionInfoState { error: null | Error; data?: Partial; isActive: boolean; } const createInitialState: InitialStateCreator = () => ({ error: null, data: {}, isActive: false }); export const actionInfoReducer = createReducer( { [resetActionInfo.toString()]: (_, _2, reset) => { return reset(); }, [requestActionInfo.toString()]: (state) => ({ ...state, error: null, data: {}, isActive: true }), [receiveActionInfo.toString()]: (state, { actionInfo }) => ({ ...state, error: null, data: actionInfo, isActive: false }), [failActionInfo.toString()]: (state, { error }) => ({ ...state, data: {}, error, isActive: false }) }, createInitialState )(ACTION_INFO);