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    
Size: Mime:
'use strict';

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

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; };

var _actions = require('../actions');

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

var initialState = {
  initialized: false,
  enabled: false,
  gpt: {
    loading: false,
    loaded: false,
    error: null
  },
  urbanMedia: {
    loading: false,
    loaded: false,
    error: null
  },

  slots: {},
  targeting: {}
};

var reducer = function reducer() {
  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
  var action = arguments[1];

  switch (action.type) {
    case _actions.ActionTypes.INITIALIZE:
      return _extends({}, state, {
        initialized: true
      });

    case _actions.ActionTypes.LOAD_GPT:
      return _extends({}, state, {
        gpt: {
          loading: true,
          loaded: state.gpt.loaded,
          error: null
        }
      });

    case _actions.ActionTypes.GPT_LOAD_SUCCESS:
      {
        return _extends({}, state, {
          gpt: {
            loading: false,
            loaded: true,
            error: null
          }
        });
      }

    case _actions.ActionTypes.GPT_LOAD_ERROR:
      {
        return _extends({}, state, {
          gpt: {
            loading: false,
            loaded: false,
            error: action.payload.error
          }
        });
      }

    case _actions.ActionTypes.LOAD_URBAN_MEDIA:
      return _extends({}, state, {
        urbanMedia: { loading: true, error: null }
      });

    case _actions.ActionTypes.URBAN_MEDIA_LOAD_SUCCESS:
      {
        return _extends({}, state, {
          urbanMedia: {
            loading: false,
            loaded: true,
            error: null
          }
        });
      }

    case _actions.ActionTypes.URBAN_MEDIA_LOAD_ERROR:
      {
        return _extends({}, state, {
          urbanMedia: {
            loading: false,
            loaded: false,
            error: action.payload.error
          }
        });
      }

    case _actions.ActionTypes.ENABLE:
      {
        return _extends({}, state, {
          enabled: true
        });
      }

    case _actions.ActionTypes.DISABLE:
      {
        return _extends({}, state, {
          enabled: false,
          slots: {}
        });
      }

    case _actions.ActionTypes.DEFINE_SLOT:
      {
        return _extends({}, state, {
          slots: _extends({}, state.slots, _defineProperty({}, action.payload.slot.id, _extends({}, action.payload.slot)))
        });
      }
    case _actions.ActionTypes.DESTROY_SLOT:
      {
        return _extends({}, state, {
          slots: _extends({}, state.slots, _defineProperty({}, action.payload.slot.id, undefined))
        });
      }

    case _actions.ActionTypes.SET_TARGETING:
      {
        return _extends({}, state, {
          targeting: _extends({}, state.targeting, action.payload.targeting)
        });
      }
    case _actions.ActionTypes.REFRESH:
      {
        return _extends({}, state, {
          lastRefreshed: state.enabled && Date.now() - 3000 > state.lastRefreshed ? Date.now() : state.lastRefreshed
        });
      }

    default:
      return state;
  }
};

/**
 * Creates a reducer that can be used with [`combineReducer`](http://redux.js.org/docs/api/combineReducers.html)
 */

exports.default = function () {
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  return _defineProperty({}, options.domain || 'advertising', reducer);
};