ringcentral-widget
Version:
RingCentral Integration Widget Library
231 lines (189 loc) • 8.38 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _reactRedux = require('react-redux');
var _Header = require('../../components/Header');
var _Header2 = _interopRequireDefault(_Header);
var _SpinnerOverlay = require('../../components/SpinnerOverlay');
var _SpinnerOverlay2 = _interopRequireDefault(_SpinnerOverlay);
var _MessageList = require('../../components/MessageList');
var _MessageList2 = _interopRequireDefault(_MessageList);
var _styles = require('./styles.scss');
var _styles2 = _interopRequireDefault(_styles);
var _i18n = require('./i18n');
var _i18n2 = _interopRequireDefault(_i18n);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function MessagesPanel(_ref) {
var currentLocale = _ref.currentLocale,
showSpinner = _ref.showSpinner,
showTitle = _ref.showTitle,
props = (0, _objectWithoutProperties3.default)(_ref, ['currentLocale', 'showSpinner', 'showTitle']);
var header = showTitle ? _react2.default.createElement(
_Header2.default,
null,
_i18n2.default.getString('title', currentLocale)
) : null;
var content = showSpinner ? _react2.default.createElement(_SpinnerOverlay2.default, null) : _react2.default.createElement(_MessageList2.default, (0, _extends3.default)({
className: (0, _classnames2.default)(_styles2.default.content, showTitle && _styles2.default.contentWithHeader)
}, props, {
currentLocale: currentLocale
}));
return _react2.default.createElement(
'div',
{ className: _styles2.default.root },
header,
content
);
}
MessagesPanel.propTypes = {
currentLocale: _react.PropTypes.string.isRequired,
showSpinner: _react.PropTypes.bool,
showTitle: _react.PropTypes.bool
};
MessagesPanel.defaultProps = {
showSpinner: false,
showTitle: false
};
function mapToProps(_, _ref2) {
var locale = _ref2.locale,
messages = _ref2.messages,
contactMatcher = _ref2.contactMatcher,
dateTimeFormat = _ref2.dateTimeFormat,
regionSettings = _ref2.regionSettings,
rolesAndPermissions = _ref2.rolesAndPermissions,
call = _ref2.call,
conversationLogger = _ref2.conversationLogger,
connectivityMonitor = _ref2.connectivityMonitor,
rateLimiter = _ref2.rateLimiter,
_ref2$showTitle = _ref2.showTitle,
showTitle = _ref2$showTitle === undefined ? false : _ref2$showTitle;
return {
showTitle: showTitle,
currentLocale: locale.currentLocale,
conversations: messages.filteredConversations,
areaCode: regionSettings.areaCode,
countryCode: regionSettings.countryCode,
disableLinks: !connectivityMonitor.connectivity || rateLimiter.throttling,
disableClickToDial: !(call && call.isIdle),
outboundSmsPermission: !!(rolesAndPermissions.permissions && rolesAndPermissions.permissions.OutboundSMS),
internalSmsPermission: !!(rolesAndPermissions.permissions && rolesAndPermissions.permissions.InternalSMS),
loggingMap: conversationLogger && conversationLogger.loggingMap,
showSpinner: !(locale.ready && messages.ready && (!contactMatcher || contactMatcher.ready) && dateTimeFormat.ready && regionSettings.ready && rolesAndPermissions.ready && connectivityMonitor.ready && rateLimiter.ready && (!rolesAndPermissions || rolesAndPermissions.ready) && (!call || call.ready) && (!conversationLogger || conversationLogger.ready)),
searchInput: messages.searchInput
};
}
function mapToFunctions(_, _ref3) {
var _this = this;
var dateTimeFormat = _ref3.dateTimeFormat,
_ref3$dateTimeFormatt = _ref3.dateTimeFormatter,
dateTimeFormatter = _ref3$dateTimeFormatt === undefined ? function () {
return dateTimeFormat.formatDateTime.apply(dateTimeFormat, arguments);
} : _ref3$dateTimeFormatt,
messages = _ref3.messages,
conversationLogger = _ref3.conversationLogger,
contactMatcher = _ref3.contactMatcher,
call = _ref3.call,
router = _ref3.router,
_ref3$dialerRoute = _ref3.dialerRoute,
dialerRoute = _ref3$dialerRoute === undefined ? '/' : _ref3$dialerRoute,
onViewContact = _ref3.onViewContact,
onCreateContact = _ref3.onCreateContact,
onLogConversation = _ref3.onLogConversation,
isLoggedContact = _ref3.isLoggedContact,
_ref3$conversationDet = _ref3.conversationDetailRoute,
conversationDetailRoute = _ref3$conversationDet === undefined ? '/conversations/{conversationId}' : _ref3$conversationDet;
return {
dateTimeFormatter: dateTimeFormatter,
onViewContact: onViewContact,
onCreateContact: onCreateContact ? function () {
var _ref4 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(_ref5) {
var phoneNumber = _ref5.phoneNumber,
name = _ref5.name,
entityType = _ref5.entityType;
var hasMatchNumber;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return contactMatcher.hasMatchNumber({
phoneNumber: phoneNumber,
ignoreCache: true
});
case 2:
hasMatchNumber = _context.sent;
if (hasMatchNumber) {
_context.next = 8;
break;
}
_context.next = 6;
return onCreateContact({ phoneNumber: phoneNumber, name: name, entityType: entityType });
case 6:
_context.next = 8;
return contactMatcher.forceMatchNumber({ phoneNumber: phoneNumber });
case 8:
case 'end':
return _context.stop();
}
}
}, _callee, _this);
}));
return function (_x) {
return _ref4.apply(this, arguments);
};
}() : undefined,
onClickToDial: call ? function (phoneNumber) {
if (call.isIdle) {
router.history.push(dialerRoute);
call.onToNumberChange(phoneNumber);
call.onCall();
}
} : undefined,
isLoggedContact: isLoggedContact,
onLogConversation: onLogConversation || conversationLogger && function () {
var _ref6 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(_ref7) {
var _ref7$redirect = _ref7.redirect,
redirect = _ref7$redirect === undefined ? true : _ref7$redirect,
options = (0, _objectWithoutProperties3.default)(_ref7, ['redirect']);
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return conversationLogger.logConversation((0, _extends3.default)({}, options, {
redirect: redirect
}));
case 2:
case 'end':
return _context2.stop();
}
}
}, _callee2, _this);
}));
return function (_x2) {
return _ref6.apply(this, arguments);
};
}(),
onSearchInputChange: function onSearchInputChange(e) {
messages.updateSearchInput(e.currentTarget.value);
},
showConversationDetail: function showConversationDetail(conversationId) {
router.history.push(conversationDetailRoute.replace('{conversationId}', conversationId));
}
};
}
exports.default = (0, _reactRedux.connect)(mapToProps, mapToFunctions)(MessagesPanel);
//# sourceMappingURL=index.js.map
;