blob: fb5197d15b3861d439742db154358188fb139d9e (
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
51
|
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 } 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,
)
console.log(tokenResponse)
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 user = yield call(fetchAndStoreUser, action.userId)
for (const authorization of user.authorizations) {
yield put(addToStore('authorization', authorization))
yield fetchAndStoreSimulation(authorization.simulationId)
yield fetchAndStoreUser(authorization.userId)
}
const authorizationIds = user.authorizations.map(authorization => [
authorization.userId,
authorization.simulationId,
])
yield put(fetchAuthorizationsOfCurrentUserSucceeded(authorizationIds))
} catch (error) {
console.error(error)
}
}
|