Migrate authorize{ actions, actionType, reducer} to TS & make factory service for interfaces #15

This commit is contained in:
Qolzam
2017-10-08 17:30:03 +07:00
parent f7c1a1ac00
commit 3b3899e7af
26 changed files with 652 additions and 218 deletions

View File

@@ -1,53 +0,0 @@
// - Import action types
import * as types from 'actionTypes'
/**
* Default state
*/
var defaultState = {
uid: 0,
authed: false,
updatePassword: false,
guest:false
}
/**
* Authorize reducer
* @param {object} state
* @param {object} action
*/
export var authorizeReducer = (state = defaultState, action) =>{
switch (action.type) {
case types.LOGIN:
return{
...state,
uid: action.uid,
authed: true,
guest:false
}
case types.LOGOUT:
return{
...state,
uid: 0,
authed: false,
guest:true
}
case types.SIGNUP:
return{
...state,
uid: action.uid
}
case types.UPDATE_PASSWORD:
return{
...state,
updatePassword: action.updatePassword
}
default:
return state
}
}

View File

@@ -0,0 +1,96 @@
// - 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
}
}

View File

@@ -6,7 +6,7 @@ import {Reducer, Action} from "redux";
// - Import action types
import { postActionType } from "constants/postActionType";
import { PostActionType } from "constants/postActionType";
/* ---------------- */
@@ -28,15 +28,22 @@ export interface IPostState {
*
*
* @export
* @interface postState
* @interface IPostAction
*/
export interface IPostAction {
payload: any,
type: postActionType
type: PostActionType
}
export class defaultPostState implements IPostState{
/**
* Default post reducer state
*
* @export
* @class DefaultPostState
* @implements {IPostState}
*/
export class DefaultPostState implements IPostState{
userPosts: any = {};
loaded: boolean = false;
@@ -47,13 +54,13 @@ export class defaultPostState implements IPostState{
* @param {object} state
* @param {object} action
*/
export var postReducer = (state : IPostState = new defaultPostState(), action : IPostAction) => {
const { payload } = action
export var postReducer = (state : IPostState = new DefaultPostState(), action : IPostAction) => {
const { payload } = action;
switch (action.type) {
case postActionType.CLEAR_ALL_DATA_POST:
return new defaultPostState()
case PostActionType.CLEAR_ALL_DATA_POST:
return new DefaultPostState()
case postActionType.ADD_IMAGE_POST:
case PostActionType.ADD_IMAGE_POST:
return {
...state,
userPosts: {
@@ -65,7 +72,7 @@ export var postReducer = (state : IPostState = new defaultPostState(), action :
}
}
case postActionType.ADD_POST:
case PostActionType.ADD_POST:
return {
...state,
userPosts: {
@@ -77,7 +84,7 @@ export var postReducer = (state : IPostState = new defaultPostState(), action :
}
}
case postActionType.UPDATE_POST:
case PostActionType.UPDATE_POST:
return {
...state,
userPosts: {
@@ -92,7 +99,7 @@ export var postReducer = (state : IPostState = new defaultPostState(), action :
}
}
case postActionType.DELETE_POST:
case PostActionType.DELETE_POST:
let filteredPosts = {}
Object.keys(state.userPosts[payload.uid]).map((key) => {
if (key !== payload.id) {
@@ -108,7 +115,7 @@ export var postReducer = (state : IPostState = new defaultPostState(), action :
}
}
}
case postActionType.ADD_LIST_POST:
case PostActionType.ADD_LIST_POST:
return {
...state,
userPosts: {