34 lines
1.0 KiB
TypeScript
34 lines
1.0 KiB
TypeScript
import { Edition } from "@/data/edition";
|
|
import { EditionAction, EditionActions } from "@/state/actions/edition";
|
|
import { editionSerializationTransformer, Serializable } from "@/serialization";
|
|
import { LoginAction, LogoutAction, UserActions } from "@/state/actions";
|
|
import { InternshipProgramEntry } from "@/data";
|
|
|
|
export type EditionState = Serializable<{
|
|
edition: Edition | null,
|
|
program: InternshipProgramEntry[],
|
|
}>
|
|
|
|
const initialEditionState: EditionState = {
|
|
edition: null,
|
|
program: [],
|
|
};
|
|
|
|
const editionReducer = (state: EditionState = initialEditionState, action: EditionAction | LogoutAction | LoginAction): EditionState => {
|
|
switch (action.type) {
|
|
case EditionActions.Set:
|
|
return {
|
|
...state,
|
|
edition: editionSerializationTransformer.transform(action.edition),
|
|
program: action.program,
|
|
};
|
|
case UserActions.Login:
|
|
case UserActions.Logout:
|
|
return initialEditionState;
|
|
}
|
|
|
|
return state;
|
|
}
|
|
|
|
export default editionReducer;
|