1 import { put, take, all } from 'redux-saga/effects' |
1 import { put, take, all } from 'redux-saga/effects' |
2 import * as types from '../constants/actionTypes'; |
2 import * as types from '../constants/actionTypes'; |
3 import { groupCreateSuccess, groupCreateError, groupLoadSucess, groupLoadError } from '../actions/groupActions'; |
3 import { groupCreateSuccess, groupCreateError, groupLoadSucess, groupLoadError } from '../actions/groupActions'; |
4 import { updateSession } from '../actions/sessionsActions'; |
|
5 |
4 |
6 function* watchCreateGroup(context) { |
5 function* watchCreateGroup(context) { |
7 while (true) { |
6 while (true) { |
8 const { group } = yield take(types.GROUP_CREATE_ASYNC); |
7 const { group } = yield take(types.GROUP_CREATE_ASYNC); |
9 const client = context.client; |
8 const client = context.client; |
10 try { |
9 try { |
11 const response = yield client.post('/api/auth/group/', group); |
10 const response = yield client.post('/api/auth/group/', group); |
12 yield put(groupCreateSuccess(response)); |
11 yield put(groupCreateSuccess(response)); |
13 context.history.push('/sessions'); |
12 context.history.push('/sessions'); |
14 } catch (e) { |
|
15 yield put(groupCreateError(e)); |
|
16 } |
|
17 } |
|
18 } |
|
19 |
|
20 function* watchCreateGroupAndUpdateSession(context) { |
|
21 while (true) { |
|
22 const { session, group } = yield take(types.GROUP_CREATE_AND_UPDATE_ASYNC); |
|
23 const client = context.client; |
|
24 try { |
|
25 const response = yield client.post('/api/auth/group/', group); |
|
26 |
|
27 const actions = [ |
|
28 groupCreateSuccess(response), |
|
29 updateSession(session, {group: response.name, protocol: response.protocol}) |
|
30 ]; |
|
31 yield all(actions.map(action => put(action))); |
|
32 |
|
33 } catch (e) { |
13 } catch (e) { |
34 yield put(groupCreateError(e)); |
14 yield put(groupCreateError(e)); |
35 } |
15 } |
36 } |
16 } |
37 } |
17 } |