2018-09-18 16:06:08 +00:00
|
|
|
import * as Actions from "../actions";
|
|
|
|
|
2018-09-18 16:59:15 +00:00
|
|
|
import { ILearner } from "../models/learner";
|
|
|
|
import { IUser } from "../models/user";
|
|
|
|
|
|
|
|
interface IState {
|
|
|
|
drawer: boolean;
|
|
|
|
drawerButton: boolean;
|
|
|
|
authenticated: boolean;
|
|
|
|
|
|
|
|
// TODO: Rework this
|
|
|
|
user: IUser | {},
|
|
|
|
|
|
|
|
login: {
|
|
|
|
loading: boolean;
|
|
|
|
snackMsg: string;
|
|
|
|
snackOpen: boolean;
|
|
|
|
};
|
|
|
|
|
|
|
|
topTen: ILearner[];
|
|
|
|
};
|
|
|
|
|
|
|
|
const initialState: IState = {
|
2018-09-18 16:06:08 +00:00
|
|
|
// Show the drawer?
|
|
|
|
drawer: false,
|
|
|
|
// Should we show the button to open the drawer?
|
|
|
|
drawerButton: true,
|
|
|
|
// Is the user authenticated?
|
|
|
|
// TODO: Set this to false
|
2018-09-18 16:59:15 +00:00
|
|
|
authenticated: false,
|
|
|
|
|
|
|
|
user: {},
|
|
|
|
|
|
|
|
login: {
|
|
|
|
loading: false,
|
|
|
|
snackMsg: "",
|
|
|
|
snackOpen: false,
|
|
|
|
},
|
|
|
|
|
|
|
|
// The top ten
|
|
|
|
topTen: [],
|
2018-09-18 16:06:08 +00:00
|
|
|
};
|
|
|
|
|
2018-09-18 16:59:15 +00:00
|
|
|
export function LateinicusApp(state: IState = initialState, action: any) {
|
2018-09-18 16:06:08 +00:00
|
|
|
switch (action.type) {
|
|
|
|
case Actions.SET_DRAWER:
|
|
|
|
return Object.assign({}, state, {
|
|
|
|
drawer: action.show,
|
|
|
|
});
|
|
|
|
case Actions.SET_DRAWER_BUTTON:
|
|
|
|
return Object.assign({}, state, {
|
|
|
|
drawerButton: action.show,
|
|
|
|
});
|
2018-09-18 16:59:15 +00:00
|
|
|
case Actions.LOGIN_SET_SNACKBAR:
|
|
|
|
return Object.assign({}, state, {
|
|
|
|
login: {
|
|
|
|
loading: state.login.loading,
|
|
|
|
snackMsg: action.msg,
|
|
|
|
snackOpen: action.show,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
case Actions.LOGIN_SET_LOADING:
|
|
|
|
return Object.assign({}, state, {
|
|
|
|
login: {
|
|
|
|
loading: action.show,
|
|
|
|
snackMsg: state.login.snackMsg,
|
|
|
|
snackOpen: state.login.snackOpen,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
case Actions.SET_AUTHENTICATED:
|
|
|
|
return Object.assign({}, state, {
|
|
|
|
authenticated: action.status,
|
|
|
|
});
|
|
|
|
case Actions.SET_USER:
|
|
|
|
return Object.assign({}, state, {
|
|
|
|
user: action.user,
|
|
|
|
});
|
2018-09-18 16:06:08 +00:00
|
|
|
default:
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
};
|