mirror of
https://github.com/plankanban/planka.git
synced 2025-12-17 17:23:25 +03:00
32 lines
717 B
JavaScript
Executable File
32 lines
717 B
JavaScript
Executable File
import { call, fork, join, put, take } from 'redux-saga/effects';
|
|
|
|
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
|
|
}
|
|
|
|
try {
|
|
return yield call(method, ...args);
|
|
} 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);
|
|
}
|