| author | Alexandre Segura <mex.zktk@gmail.com> |
| Wed, 28 Jun 2017 12:54:48 +0200 | |
| changeset 101 | e165aa89ac82 |
| parent 100 | 6fd752d98933 |
| child 132 | 906a6c7c7943 |
| permissions | -rw-r--r-- |
|
100
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
1 |
import { put, take, all } from 'redux-saga/effects' |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
2 |
import * as types from '../constants/actionTypes'; |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
3 |
|
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
4 |
function* watchCreateGroup(context) { |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
5 |
while (true) { |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
6 |
const { group } = yield take(types.GROUP_CREATE_ASYNC); |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
7 |
const client = context.client; |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
8 |
try { |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
9 |
const response = yield client.post('/api/auth/group/', group); |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
10 |
yield put({ type: types.GROUP_CREATE_SUCCESS, group: response }); |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
11 |
} catch (e) { |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
12 |
yield put({ type: types.GROUP_CREATE_ERROR, error: e }); |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
13 |
} |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
14 |
} |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
15 |
} |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
16 |
|
|
101
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
17 |
function* watchCreateGroupAndUpdateSession(context) { |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
18 |
while (true) { |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
19 |
const { session, group } = yield take(types.GROUP_CREATE_AND_UPDATE_ASYNC); |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
20 |
const client = context.client; |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
21 |
try { |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
22 |
const response = yield client.post('/api/auth/group/', group); |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
23 |
|
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
24 |
const actions = [ |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
25 |
{ |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
26 |
type: types.GROUP_CREATE_SUCCESS, |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
27 |
group: response |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
28 |
}, |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
29 |
{ |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
30 |
type: types.UPDATE_SESSION, |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
31 |
session: session, |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
32 |
values: { group: response }, |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
33 |
} |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
34 |
]; |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
35 |
|
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
36 |
yield all(actions.map(action => put(action))); |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
37 |
|
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
38 |
} catch (e) { |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
39 |
yield put({ type: types.GROUP_CREATE_ERROR, error: e }); |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
40 |
} |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
41 |
} |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
42 |
} |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
43 |
|
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
44 |
function* watchLoadGroups(context) { |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
45 |
const client = context.client; |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
46 |
while (true) { |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
47 |
yield take(types.GROUP_LOAD_ASYNC); |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
48 |
try { |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
49 |
const response = yield client.get('/api/auth/group/'); |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
50 |
yield put({ type: types.GROUP_LOAD_SUCCESS, groups: response }); |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
51 |
} catch (e) { |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
52 |
yield put({ type: types.GROUP_LOAD_ERROR, error: e }); |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
53 |
} |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
54 |
} |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
55 |
} |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
56 |
|
|
100
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
57 |
export default function* rootSaga(context) { |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
58 |
yield all([ |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
59 |
watchCreateGroup(context), |
|
101
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
60 |
watchCreateGroupAndUpdateSession(context), |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
61 |
watchLoadGroups(context), |
|
100
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
62 |
]) |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
63 |
} |