| author | ymh <ymh.work@gmail.com> |
| Tue, 01 Aug 2017 12:20:14 +0200 | |
| changeset 132 | 906a6c7c7943 |
| parent 101 | e165aa89ac82 |
| child 133 | 6f3078f7fd47 |
| 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'; |
|
132
906a6c7c7943
add group to sync + create groups + various component cleaning
ymh <ymh.work@gmail.com>
parents:
101
diff
changeset
|
3 |
import { groupCreateSuccess, groupCreateError, groupLoadSucess, groupLoadError } from '../actions/groupActions'; |
|
906a6c7c7943
add group to sync + create groups + various component cleaning
ymh <ymh.work@gmail.com>
parents:
101
diff
changeset
|
4 |
import { updateSession } from '../actions/sessionsActions'; |
|
100
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
5 |
|
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
6 |
function* watchCreateGroup(context) { |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
7 |
while (true) { |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
8 |
const { group } = yield take(types.GROUP_CREATE_ASYNC); |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
9 |
const client = context.client; |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
10 |
try { |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
11 |
const response = yield client.post('/api/auth/group/', group); |
|
132
906a6c7c7943
add group to sync + create groups + various component cleaning
ymh <ymh.work@gmail.com>
parents:
101
diff
changeset
|
12 |
yield put(groupCreateSuccess(response)); |
|
100
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
13 |
} catch (e) { |
|
132
906a6c7c7943
add group to sync + create groups + various component cleaning
ymh <ymh.work@gmail.com>
parents:
101
diff
changeset
|
14 |
yield put(groupCreateError(e)); |
|
100
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 |
} |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
17 |
} |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
18 |
|
|
101
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
19 |
function* watchCreateGroupAndUpdateSession(context) { |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
20 |
while (true) { |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
21 |
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
|
22 |
const client = context.client; |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
23 |
try { |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
24 |
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
|
25 |
|
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
26 |
const actions = [ |
|
132
906a6c7c7943
add group to sync + create groups + various component cleaning
ymh <ymh.work@gmail.com>
parents:
101
diff
changeset
|
27 |
groupCreateSuccess(response), |
|
906a6c7c7943
add group to sync + create groups + various component cleaning
ymh <ymh.work@gmail.com>
parents:
101
diff
changeset
|
28 |
updateSession(session, {group: response.name}) |
|
101
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 |
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
|
31 |
|
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
32 |
} catch (e) { |
|
132
906a6c7c7943
add group to sync + create groups + various component cleaning
ymh <ymh.work@gmail.com>
parents:
101
diff
changeset
|
33 |
yield put(groupCreateError(e)); |
|
101
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 |
} |
|
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 |
function* watchLoadGroups(context) { |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
39 |
const client = context.client; |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
40 |
while (true) { |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
41 |
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
|
42 |
try { |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
43 |
const response = yield client.get('/api/auth/group/'); |
|
132
906a6c7c7943
add group to sync + create groups + various component cleaning
ymh <ymh.work@gmail.com>
parents:
101
diff
changeset
|
44 |
yield put(groupLoadSucess(response.results)); |
|
101
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
45 |
} catch (e) { |
|
132
906a6c7c7943
add group to sync + create groups + various component cleaning
ymh <ymh.work@gmail.com>
parents:
101
diff
changeset
|
46 |
yield put(groupLoadError(e)); |
|
101
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
47 |
} |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
48 |
} |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
49 |
} |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
50 |
|
|
100
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
51 |
export default function* rootSaga(context) { |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
52 |
yield all([ |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
53 |
watchCreateGroup(context), |
|
101
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
54 |
watchCreateGroupAndUpdateSession(context), |
|
e165aa89ac82
Add group dropdown, update session after group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
100
diff
changeset
|
55 |
watchLoadGroups(context), |
|
100
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
56 |
]) |
|
6fd752d98933
Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff
changeset
|
57 |
} |