blob: 3825443ae8db69f5c07b1172c19d02d8fff39654 (
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
47
48
49
50
|
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);
}
}
|