43 lines
909 B
TypeScript
43 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;
|