42 lines
909 B
TypeScript
42 lines
909 B
TypeScript
import IAppState, { AppError } from "./state";
|
|
|
|
export type AppStateReducerActionType = "displayError" | "displayLoader";
|
|
|
|
export interface AppStateReducerAction {
|
|
payload: Partial<{
|
|
error: AppError;
|
|
value: boolean;
|
|
}>;
|
|
type: AppStateReducerActionType;
|
|
}
|
|
|
|
function displayError(prevState: IAppState, error: AppError): IAppState {
|
|
return {
|
|
...prevState,
|
|
error,
|
|
loading: false
|
|
};
|
|
}
|
|
|
|
function displayLoader(prevState: IAppState, value: boolean): IAppState {
|
|
return {
|
|
...prevState,
|
|
loading: value
|
|
};
|
|
}
|
|
|
|
function reduceAppState(
|
|
prevState: IAppState,
|
|
action: AppStateReducerAction
|
|
): IAppState {
|
|
switch (action.type) {
|
|
case "displayError":
|
|
return displayError(prevState, action.payload.error);
|
|
case "displayLoader":
|
|
return displayLoader(prevState, action.payload.value);
|
|
default:
|
|
return prevState;
|
|
}
|
|
}
|
|
|
|
export default reduceAppState;
|