Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@doodle/users-api-connector / state / saga / selectPrimaryCalendar.js
Size: Mime:
'use strict';

Object.defineProperty(exports, "__esModule", {
  value: true
});

var _regenerator = require('babel-runtime/regenerator');

var _regenerator2 = _interopRequireDefault(_regenerator);

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

exports.onSelectPrimaryCalendar = onSelectPrimaryCalendar;
exports.watchSelectPrimaryCalendar = watchSelectPrimaryCalendar;
exports.default = selectPrimaryCalendarSaga;

var _effects = require('redux-saga/effects');

var _selectPrimaryCalendar = require('../actions/selectPrimaryCalendar');

var _api = require('./api');

var _api2 = _interopRequireDefault(_api);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var _marked = /*#__PURE__*/_regenerator2.default.mark(onSelectPrimaryCalendar),
    _marked2 = /*#__PURE__*/_regenerator2.default.mark(watchSelectPrimaryCalendar),
    _marked3 = /*#__PURE__*/_regenerator2.default.mark(selectPrimaryCalendarSaga);

function onSelectPrimaryCalendar(options, action) {
  var calendarId, fetchOptions, state, token, user;
  return _regenerator2.default.wrap(function onSelectPrimaryCalendar$(_context) {
    while (1) {
      switch (_context.prev = _context.next) {
        case 0:
          calendarId = action.calendarId;
          fetchOptions = _extends({}, options, {
            method: 'PUT',
            headers: {
              'Content-Type': 'application/json'
            },
            body: JSON.stringify({
              primaryCalendarAccountId: calendarId
            })
          });
          _context.prev = 2;
          _context.next = 5;
          return (0, _effects.select)(function (globalState) {
            return globalState[options.domain || 'user'];
          });

        case 5:
          state = _context.sent;
          token = state.data.accessToken;

          // Given we're logged in (otherwise you can't see the settings), 
          // we don't need to force a call to retrieve the token as a fallback)

          _context.next = 9;
          return (0, _effects.call)(_api2.default.me, token, fetchOptions);

        case 9:
          user = _context.sent;
          _context.next = 12;
          return (0, _effects.put)((0, _selectPrimaryCalendar.selectPrimaryCalendarSuccess)(user.primaryCalendarAccountId));

        case 12:
          _context.next = 18;
          break;

        case 14:
          _context.prev = 14;
          _context.t0 = _context['catch'](2);
          _context.next = 18;
          return (0, _effects.put)((0, _selectPrimaryCalendar.selectPrimaryCalendarError)(_context.t0));

        case 18:
        case 'end':
          return _context.stop();
      }
    }
  }, _marked, this, [[2, 14]]);
}

function watchSelectPrimaryCalendar(options) {
  return _regenerator2.default.wrap(function watchSelectPrimaryCalendar$(_context2) {
    while (1) {
      switch (_context2.prev = _context2.next) {
        case 0:
          _context2.next = 2;
          return (0, _effects.takeLatest)(_selectPrimaryCalendar.SelectPrimaryCalendarActionTypes.SELECT_PRIMARY_CALENDAR, onSelectPrimaryCalendar, options);

        case 2:
        case 'end':
          return _context2.stop();
      }
    }
  }, _marked2, this);
}

function selectPrimaryCalendarSaga() {
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  return _regenerator2.default.wrap(function selectPrimaryCalendarSaga$(_context3) {
    while (1) {
      switch (_context3.prev = _context3.next) {
        case 0:
          _context3.next = 2;
          return (0, _effects.all)([(0, _effects.call)(watchSelectPrimaryCalendar, options)]);

        case 2:
        case 'end':
          return _context3.stop();
      }
    }
  }, _marked3, this);
}