import types from '../types' import { put } from '../api/crud.fetch' export const setToken = (data) => { return { type: types.auth.set_token, data } } export const setReturnTo = (data) => { return { type: types.auth.set_return_to, data } } export const setError = (data) => { return { type: types.auth.set_error, data } } export const setCurrentUser = (data) => { return { type: types.auth.set_current_user, data } } export function logout() { return { type: types.auth.logout_user } } export function initialized() { return { type: types.auth.initialized } } export function loading() { return { type: types.auth.loading } } export function InvalidCredentialsException(message) { this.message = message this.name = 'InvalidCredentialsException' } const api = { login: '/api/login', logout: '/api/logout', signup: '/api/signup', checkin: '/api/checkin', } export function login(username, password) { return (dispatch) => { dispatch(loading()) fetch(api.login, put({ username, password })) .then(req => req.json()) .then(data => { console.log(data) dispatch(setCurrentUser(data)) // dispatch(setToken(data.token)) dispatch(checkin()) }) .catch(error => { console.log(error) dispatch(setError(true)) }) } } export function signup(data) { return (dispatch) => { dispatch(loading()) fetch(api.signup, put(data)) .then(req => req.json()) .then(data => { console.log(data) dispatch(login(data.username, data.password)) }) .catch(error => { console.log(error) dispatch(initialized()) }) } } export function checkin() { return (dispatch) => { dispatch(loading()) fetch(api.checkin, put({})) .then(req => req.json()) .then(data => { console.log(data) dispatch(setCurrentUser(data)) console.log('set current user') }) .catch(error => { console.log(error) dispatch(initialized(true)) }) } }