103 lines
1.9 KiB
TypeScript
103 lines
1.9 KiB
TypeScript
|
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;
|
||
|
}
|
||
|
}
|
||
|
}
|