UNPKG

@zohodesk/platform-middleware

Version:

Generalized Contract for the events from Marketplace App, In-App widgets, CRM-Plus and EFC

104 lines (84 loc) 3.06 kB
import _Object$getPrototypeOf from "babel-runtime/core-js/object/get-prototype-of"; import _classCallCheck from "babel-runtime/helpers/classCallCheck"; import _createClass from "babel-runtime/helpers/createClass"; import _possibleConstructorReturn from "babel-runtime/helpers/possibleConstructorReturn"; import _inherits from "babel-runtime/helpers/inherits"; import React from "react"; import { connect } from "react-redux"; import { constructWidgetData } from '../utils'; import { renderWidgetsAction as _renderWidgetsAction } from '../actions/widgetsActions'; export var WidgetContext = React.createContext(); export var WidgetProvider = function (_React$Component) { _inherits(WidgetProvider, _React$Component); function WidgetProvider(props) { _classCallCheck(this, WidgetProvider); var _this = _possibleConstructorReturn(this, (WidgetProvider.__proto__ || _Object$getPrototypeOf(WidgetProvider)).call(this, props)); _this.getWidgets = _this.getWidgets.bind(_this); _this.fetchWidgets = _this.fetchWidgets.bind(_this); _this.value = { getWidgets: _this.getWidgets, fetchWidgets: _this.fetchWidgets }; return _this; } /* Sample reqObj = { locations: 'desk.ticket.detail.rightpanel, desk.ticket.detail.lefttab', from : '0', limit: '10', sortBy: 'position', departmentId:'1234567890' } */ //TODO: add the intelisense to handle from and limit _createClass(WidgetProvider, [{ key: "fetchWidgets", value: function fetchWidgets(reqObj) { return this.props.apiCallHandler(reqObj); } }, { key: "getWidgets", value: function getWidgets(location, uID) { var widgetState = this.props.widgetState; return constructWidgetData(widgetState, location, uID); } }, { key: "renderWidgets", value: function renderWidgets(location, uID) { var _props = this.props, renderWidgetsAction = _props.renderWidgetsAction, widgetState = _props.widgetState; renderWidgetsAction(constructWidgetData(widgetState, location, uID)); } }, { key: "getWidgetInfo", value: function getWidgetInfo(widgetId) { var widgetState = this.props.widgetState; return widgetState.widgets[widgetId]; } }, { key: "render", value: function render() { var children = this.props.children; return React.createElement( WidgetContext.Provider, { value: this.value }, children ); } }]); return WidgetProvider; }(React.Component); var mapStateToProps = function mapStateToProps(state, props) { return { widgetState: state[props.stateName] }; }; var mapDispatchToProps = function mapDispatchToProps(dispatch, props) { return { apiCallHandler: function apiCallHandler(reqObj) { return dispatch(props.apiCallHandler(reqObj)); }, renderWidgetsAction: function renderWidgetsAction(widgets) { dispatch(_renderWidgetsAction(widgets)); } }; }; export default connect(mapStateToProps, mapDispatchToProps)(WidgetProvider);