42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
import { call, put, select, takeEvery } from 'redux-saga/effects';
|
|
import { createFlashMessage } from '../components/Flash/redux';
|
|
import { FlashMessages } from '../components/Flash/redux/flash-messages';
|
|
import { postUserToken } from '../utils/ajax';
|
|
import {
|
|
isSignedInSelector,
|
|
showCodeAlly,
|
|
updateUserToken,
|
|
userTokenSelector
|
|
} from './';
|
|
|
|
const startProjectErrMessage = {
|
|
type: 'danger',
|
|
message: FlashMessages.StartProjectErr
|
|
};
|
|
|
|
function* tryToShowCodeAllySaga() {
|
|
const isSignedIn = yield select(isSignedInSelector);
|
|
const hasUserToken = !!(yield select(userTokenSelector));
|
|
|
|
if (!isSignedIn || hasUserToken) {
|
|
yield put(showCodeAlly());
|
|
} else {
|
|
try {
|
|
const response = yield call(postUserToken);
|
|
|
|
if (response?.userToken) {
|
|
yield put(updateUserToken(response.userToken));
|
|
yield put(showCodeAlly());
|
|
} else {
|
|
yield put(createFlashMessage(startProjectErrMessage));
|
|
}
|
|
} catch (e) {
|
|
yield put(createFlashMessage(startProjectErrMessage));
|
|
}
|
|
}
|
|
}
|
|
|
|
export function createCodeAllySaga(types) {
|
|
return [takeEvery(types.tryToShowCodeAlly, tryToShowCodeAllySaga)];
|
|
}
|