mirror of
https://github.com/usatiuk/writer.git
synced 2025-10-28 16:07:49 +01:00
39 lines
1.0 KiB
TypeScript
39 lines
1.0 KiB
TypeScript
import { Reducer } from "react";
|
|
import { IUserJSON } from "~../../src/entity/User";
|
|
import { AuthAction, AuthTypes } from "~redux/auth/actions";
|
|
import { UserAction, UserTypes } from "./actions";
|
|
|
|
export interface IUserState {
|
|
user: IUserJSON | null;
|
|
}
|
|
|
|
const defaultUserState: IUserState = {
|
|
user: null,
|
|
};
|
|
|
|
export const userReducer: Reducer<IUserState, AuthAction> = (
|
|
state: IUserState = defaultUserState,
|
|
action: AuthAction | UserAction,
|
|
) => {
|
|
switch (action.type) {
|
|
case AuthTypes.AUTH_SUCCESS:
|
|
case UserTypes.USER_GET_SUCCESS:
|
|
case UserTypes.USER_PASS_CHANGE_SUCCESS:
|
|
return {
|
|
...defaultUserState,
|
|
user: action.payload,
|
|
};
|
|
break;
|
|
case UserTypes.USER_GET_FAIL:
|
|
case UserTypes.USER_PASS_CHANGE_FAIL:
|
|
return defaultUserState;
|
|
break;
|
|
case UserTypes.USER_LOGOUT:
|
|
return defaultUserState;
|
|
break;
|
|
default:
|
|
return state;
|
|
break;
|
|
}
|
|
};
|