Files
app/nextjs/sagas/userSaga.js
T
2019-06-26 17:28:38 +02:00

116 lines
2.9 KiB
JavaScript

import { call, put } from "redux-saga/effects";
import { userLoggedIn, requestLoginFailure, userLoggedOut } from "../actions/auth";
import {
fetchCurrentUserSuccess, fetchCurrentUserFailure,
subscribeToNewsletterSuccess, subscribeToNewsletterFailure,
registerUserSuccess, registerUserFailure
} from "../actions/user";
import setAuthorizationHeader from "../data/setAuthorizationHeader";
import api from "../data/api";
import Router from 'next/router';
export function* requestLoginSaga(action) {
try {
const res = yield call(api.user.login, action.data);
console.log("requestLoginSaga")
console.log(res)
// console.log(!!res.token)
// console.log("---")
if (!!res.token) {
localStorage.setItem('ttJWT', res.token)
// console.log("-token is good-")
setAuthorizationHeader(res.token)
// console.debug(localStorage.ttJWT)
// console.log("-localStorage.ttJWT-")
yield put(userLoggedIn(res));
//TODO: temporary redirect
Router.push('/Offres');
} else
throw new Error("no token")
} catch (error) {
console.log(error)
localStorage.removeItem("ttJWT");
setAuthorizationHeader();
yield put(requestLoginFailure(error.response));
}
}
export function* requestLogoutSaga(action) {
console.log("function* requestLogoutSaga")
try {
localStorage.removeItem("ttJWT")
setAuthorizationHeader()
} catch (error) {
console.log(error)
} finally {
yield put(userLoggedOut());
}
}
export function* requestUserSaga(action) {
try {
console.log('function* requestUserSaga')
const res = yield call(api.user.fetchUser);
console.log(res);
if (res.status === "success") {
yield put(fetchCurrentUserSuccess(res.user));
} else
throw new Error("no user")
} catch (error) {
console.log(error)
yield put(fetchCurrentUserFailure(error.response));
}
}
///
///{
// type: 'SUBSCRIBE_NEWSLETTER_REQUEST',
// payload: {"email":"thomas.berrod@e-declic.com"}
// }
export function* requestNewsletterSubscribitionSaga(action) {
try {
console.log('function* requestNewsletterSubscribitionSaga')
const res = yield call(api.user.subscribeToNewsletter, action.payload);
console.log(res);
if (res.data.success === true) {
yield put(subscribeToNewsletterSuccess(res));
} else
throw new Error("not subscribed")
} catch (error) {
console.log(error)
yield put(subscribeToNewsletterFailure(error));
}
}
export function* requestRegisterSaga(action) {
try {
console.log('function* requestRegisterSaga')
const res = yield call(api.user.register, action.payload);
console.log(res);
if (res.data.success === true) {
yield put(registerUserSuccess(res));
Router.push('/VerifyEmail');
} else
throw new Error("not subscribed")
} catch (error) {
console.log(error)
yield put(registerUserFailure(error));
}
}