member_webapp/src/packages/member/store/auth/auth.reducer.ts

103 lines
1.9 KiB
TypeScript
Raw Normal View History

2018-04-06 06:59:49 +00:00
import {
Actions,
ActionType,
Signin,
} from './auth.action';
import {
State,
initialState,
} from './auth.state';
import { Member } from '../../model';
import { DomainMember } from '../../../domain/model';
export function reducer(state = initialState, action: Actions): State {
switch (action.type) {
case ActionType.Signin: {
return {
...state,
error: null,
pending: true,
};
}
case ActionType.SigninSuccess: {
const domainMember = action.payload.domainMember;
return {
...state,
signined: true,
error: null,
pending: false,
member: domainMember.member,
domain: domainMember.domain,
};
}
case ActionType.SigninFailure: {
return {
...state,
signined: false,
error: action.payload,
pending: false,
member: null,
domain: null,
};
}
case ActionType.SigninCookieSuccess: {
return {
...state,
signined: true,
error: null,
pending: false,
member: action.payload.member,
domain: action.payload.domain,
};
}
case ActionType.SigninCookieFailure: {
return {
...state,
signined: false,
error: action.payload,
pending: false,
member: null,
domain: null,
};
}
case ActionType.Signout: {
return {
...state,
error: null,
pending: true,
};
}
case ActionType.SignoutSuccess: {
return {
...state,
signined: false,
error: null,
pending: false,
member: null,
domain: null,
};
}
case ActionType.SignoutFailure: {
return {
...state,
error: action.payload,
pending: false,
};
}
default: {
return state;
}
}
}