blob: 74e652f621735f844b5a5f678ac7c0ae92261ba9 (
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
|
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 { fetchAndStoreProject, 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 user = yield call(fetchAndStoreUser, action.userId)
for (const authorization of user.authorizations) {
authorization.userId = action.userId
yield put(addToStore('authorization', authorization))
yield fetchAndStoreProject(authorization.projectId)
}
const authorizationIds = user.authorizations.map((authorization) => [action.userId, authorization.projectId])
yield put(fetchAuthorizationsOfCurrentUserSucceeded(authorizationIds))
} catch (error) {
console.error(error)
}
}
|