shierro/territory-manager

View on GitHub
app/containers/MapPage/saga.js

Summary

Maintainability
A
0 mins
Test Coverage
import { call, put, takeLatest } from 'redux-saga/effects';
import {
  SET_INITIAL_LOCATION,
  GET_INITIAL_LOCATION,
  SET_PAGE_ERROR,
  SET_LOADING,
  ADD_PERSON_START,
} from './constants';
import { getLocation } from '../../utils/location';

export function* setInitLocation() {
  try {
    const { latitude, longitude } = yield call(getLocation);
    yield put({ type: SET_INITIAL_LOCATION, coords: [latitude, longitude] });
  } catch (error) {
    yield put({ type: SET_PAGE_ERROR, error });
    yield put({ type: SET_LOADING, value: false });
  }
}

/**
 * Root saga manages watcher lifecycle
 */
export default function* watchMapsPageSagas() {
  // Watches for GET_TICKETS_BY_EVENT_ID actions and calls getRepos when one comes in.
  // By using `takeLatest` only the result of the latest API call is applied.
  // It returns task descriptor (just like fork) so we can continue execution
  // It will be cancelled automatically on component unmount
  yield takeLatest(GET_INITIAL_LOCATION, setInitLocation);
  yield takeLatest(ADD_PERSON_START, setInitLocation);
}