Project managers, board members, auto-update after reconnection, refactoring

This commit is contained in:
Maksim Eltyshev
2021-06-24 01:05:22 +05:00
parent 7956503a46
commit fe91b5241e
478 changed files with 21226 additions and 19495 deletions

View File

@@ -0,0 +1,36 @@
import { call, fork, join, put, select, take } from 'redux-saga/effects';
import { accessTokenSelector } from '../../selectors';
import { logout } from '../../actions';
import ErrorCodes from '../../constants/ErrorCodes';
let lastRequestTask;
function* queueRequest(method, ...args) {
if (lastRequestTask) {
try {
yield join(lastRequestTask);
} catch {} // eslint-disable-line no-empty
}
const accessToken = yield select(accessTokenSelector);
try {
return yield call(method, ...args, {
Authorization: `Bearer ${accessToken}`,
});
} catch (error) {
if (error.code === ErrorCodes.UNAUTHORIZED) {
yield put(logout()); // TODO: next url
yield take();
}
throw error;
}
}
export default function* request(method, ...args) {
lastRequestTask = yield fork(queueRequest, method, ...args);
return yield join(lastRequestTask);
}