blob: f1ee9823a138ef5b18829e9cd552d4e00fa80f9e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
import {call, put} from "redux-saga/effects";
import {logInSucceeded} from "../actions/auth";
import {addToStore} from "../actions/objects";
import {fetchAuthorizationsOfCurrentUserSucceeded} from "../actions/users";
import {performTokenSignIn} from "../api/routes/token-signin";
import {addUser, getAuthorizationsByUser} from "../api/routes/users";
import {saveAuthLocalStorage} from "../auth/index";
import {fetchAndStoreSimulation, fetchAndStoreUser} from "./objects";
export function* onFetchLoggedInUser(action) {
try {
const tokenResponse = yield call(performTokenSignIn, action.payload.authToken);
let userId = tokenResponse.userId;
if (tokenResponse.isNewUser) {
saveAuthLocalStorage({authToken: action.payload.authToken});
const newUser = yield call(addUser, action.payload);
userId = newUser.id;
}
yield put(logInSucceeded(Object.assign({userId}, action.payload)));
} catch (error) {
console.error(error);
}
}
export function* onFetchAuthorizationsOfCurrentUser(action) {
try {
const authorizations = yield call(getAuthorizationsByUser, action.userId);
for (const authorization of authorizations) {
yield put(addToStore("authorization", authorization));
yield fetchAndStoreSimulation(authorization.simulationId);
yield fetchAndStoreUser(authorization.userId);
}
const authorizationIds = authorizations.map(authorization => (
[authorization.userId, authorization.simulationId]
));
yield put(fetchAuthorizationsOfCurrentUserSucceeded(authorizationIds));
} catch (error) {
console.error(error);
}
}
|