member_webapp/@overflow/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';
2018-05-02 08:09:39 +00:00
import { Member } from '@overflow/commons-typescript/model/member';
import { DomainMember } from '@overflow/commons-typescript/model/domain';
2018-04-06 06:59:49 +00:00
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;
}
}
}