client/src/sagas/groupSaga.js
author Alexandre Segura <mex.zktk@gmail.com>
Tue, 27 Jun 2017 18:12:10 +0200
changeset 100 6fd752d98933
child 101 e165aa89ac82
permissions -rw-r--r--
Introduce group creation.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    17
export default function* rootSaga(context) {
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    18
  yield all([
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    19
    watchCreateGroup(context),
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    20
  ])
6fd752d98933 Introduce group creation.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    21
}