This repository has been archived on 2025-09-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
resolver/app/reducers/authorizeReducer.ts

97 lines
1.7 KiB
TypeScript

// - Import react components
import {Reducer, Action} from "redux";
// - Import action types
import {AuthorizeActionType} from 'constants/authorizeActionType'
/**
* Default state
*/
var defaultState = {
uid: 0,
authed: false,
updatePassword: false,
guest:false
}
/**
* Default post state interface
*
* @export
* @interface IAuthorizeState
*/
export interface IAuthorizeState {
uid: number,
authed: Boolean,
updatePassword: Boolean,
guest:Boolean
}
/**
* Default authorize action interface
*
* @export
* @interface IAuthorizeAction
*/
export interface IAuthorizeAction {
payload: any,
type: AuthorizeActionType
}
/**
* Default authorize reducer state
*
* @export
* @class DefaultAuthorizeState
* @implements {IAuthorizeState}
*/
export class DefaultAuthorizeState implements IAuthorizeState{
uid: number = 0;
authed: Boolean = false;
updatePassword: Boolean = false;
guest: Boolean = false;
}
/**
* Authorize reducer
* @param {object} state
* @param {object} action
*/
export var authorizeReducer = (state : IAuthorizeState = new DefaultAuthorizeState(), action: IAuthorizeAction) =>{
const { payload } = action;
switch (action.type) {
case AuthorizeActionType.LOGIN:
return{
...state,
uid: payload.uid,
authed: true,
guest:false
}
case AuthorizeActionType.LOGOUT:
return{
...state,
uid: 0,
authed: false,
guest:true
}
case AuthorizeActionType.SIGNUP:
return{
...state,
uid: payload.userId
}
case AuthorizeActionType.UPDATE_PASSWORD:
return{
...state,
updatePassword: payload.updatePassword
}
default:
return state
}
}