ringcentral-widgets
Version:
RingCentral Integration Widget Library
180 lines (146 loc) • 7.48 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = LogBasicInfo;
require("core-js/modules/es6.object.define-property");
var _classnames = _interopRequireDefault(require("classnames"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireDefault(require("react"));
var _callDirections = _interopRequireDefault(require("ringcentral-integration/enums/callDirections"));
var _callResults = _interopRequireDefault(require("ringcentral-integration/enums/callResults"));
var _telephonyStatus = _interopRequireDefault(require("ringcentral-integration/enums/telephonyStatus"));
var _recordStatus = _interopRequireDefault(require("ringcentral-integration/modules/Webphone/recordStatus"));
var _callLogHelpers = require("ringcentral-integration/lib/callLogHelpers");
var _DynamicsFont = _interopRequireDefault(require("../../assets/DynamicsFont/DynamicsFont.scss"));
var _DurationCounter = _interopRequireDefault(require("../DurationCounter"));
var _RecordingIndicator = require("../RecordingIndicator");
var _formatDuration = _interopRequireDefault(require("../../lib/formatDuration"));
var _i18n = _interopRequireDefault(require("./i18n"));
var _styles = _interopRequireDefault(require("./styles.scss"));
var _CallIcon = require("./CallIcon");
var _ShinyBar = require("./ShinyBar");
var _callIconMap;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
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 callIconMap = (_callIconMap = {}, _defineProperty(_callIconMap, _callResults["default"].missed, _DynamicsFont["default"].missed), _defineProperty(_callIconMap, _callDirections["default"].inbound, _DynamicsFont["default"].inbound), _defineProperty(_callIconMap, _callDirections["default"].outbound, _DynamicsFont["default"].outbound), _defineProperty(_callIconMap, _telephonyStatus["default"].ringing, _DynamicsFont["default"].callHover), _callIconMap);
function getInfoStatus(status) {
switch (status) {
case _telephonyStatus["default"].onHold:
return 'onHold';
case _telephonyStatus["default"].callConnected:
case _telephonyStatus["default"].ringing:
return 'active';
default:
return 'callEnd';
}
}
function LogBasicInfo(props) {
var _props$currentLog = props.currentLog,
call = _props$currentLog.call,
logName = _props$currentLog.logName,
formatPhone = props.formatPhone,
currentLocale = props.currentLocale,
dataSign = props.dataSign,
disableLinks = props.disableLinks,
dateTimeFormatter = props.dateTimeFormatter,
isWide = props.isWide,
className = props.className,
recordStatus = props.recordStatus,
showRecordingIndicator = props.showRecordingIndicator;
if (!call) return null;
var direction = call.direction,
to = call.to,
from = call.from,
startTime = call.startTime,
offset = call.offset,
duration = call.duration,
result = call.result,
telephonyStatus = call.telephonyStatus;
function getDurationElm() {
var durationElement = null;
if (typeof duration === 'undefined') {
durationElement = disableLinks ? _i18n["default"].getString('unavailable', currentLocale) : /*#__PURE__*/_react["default"].createElement(_DurationCounter["default"], {
startTime: startTime,
offset: offset
});
} else {
durationElement = (0, _formatDuration["default"])(duration);
}
return durationElement;
}
var number = direction === _callDirections["default"].outbound ? to && (to.phoneNumber || to.extensionNumber) : from && (from.phoneNumber || from.extensionNumber);
var formatNumber = formatPhone(number);
var missed = (0, _callLogHelpers.isMissed)(call);
var durationElement = getDurationElm();
var status = result || telephonyStatus;
var statusI18n = _i18n["default"].getString(status, currentLocale);
var isRinging = status === _telephonyStatus["default"].ringing;
var infoStatus = getInfoStatus(status);
var isRecording = recordStatus === _recordStatus["default"].recording;
return /*#__PURE__*/_react["default"].createElement("div", {
"data-sign": "logSection",
className: (0, _classnames["default"])(_styles["default"].root, !isWide && _styles["default"].classic, _styles["default"][infoStatus], className)
}, /*#__PURE__*/_react["default"].createElement(_ShinyBar.ShinyBar, {
className: _styles["default"].top,
isRinging: isRinging,
status: infoStatus
}), /*#__PURE__*/_react["default"].createElement("div", {
"data-sign": dataSign,
className: _styles["default"].leftSectionInfo
}, /*#__PURE__*/_react["default"].createElement(_CallIcon.CallIcon, {
title: missed ? _i18n["default"].getString(_callResults["default"].missed, currentLocale) : _i18n["default"].getString(direction, currentLocale),
iconClassName: (0, _classnames["default"])(_styles["default"].icon, callIconMap[missed ? _callResults["default"].missed : direction])
}), showRecordingIndicator && isRecording && /*#__PURE__*/_react["default"].createElement(_RecordingIndicator.RecordingIndicator, {
customClass: _styles["default"].recordingIndicator
}), /*#__PURE__*/_react["default"].createElement("ul", {
className: _styles["default"].callDisplay
}, /*#__PURE__*/_react["default"].createElement("li", {
className: _styles["default"].info
}, /*#__PURE__*/_react["default"].createElement("p", {
className: _styles["default"].logName,
title: logName,
"data-sign": "logName"
}, logName), /*#__PURE__*/_react["default"].createElement("p", {
className: (0, _classnames["default"])(_styles["default"].follow, _styles["default"]['text-ellipsis'])
}, /*#__PURE__*/_react["default"].createElement("span", {
title: formatNumber,
"data-sign": "phoneNumber"
}, formatNumber), /*#__PURE__*/_react["default"].createElement("span", {
"data-sign": "callStatus",
title: statusI18n
}, statusI18n))), /*#__PURE__*/_react["default"].createElement("li", {
className: _styles["default"]['flex-fill']
}), /*#__PURE__*/_react["default"].createElement("li", {
className: (0, _classnames["default"])(_styles["default"].follow, _styles["default"].time)
}, /*#__PURE__*/_react["default"].createElement("p", null, durationElement), /*#__PURE__*/_react["default"].createElement("p", null, dateTimeFormatter({
utcTimestamp: startTime,
locale: currentLocale
}))))));
}
LogBasicInfo.propTypes = {
currentLocale: _propTypes["default"].string,
formatPhone: _propTypes["default"].func,
currentLog: _propTypes["default"].object,
dataSign: _propTypes["default"].string,
disableLinks: _propTypes["default"].bool,
dateTimeFormatter: _propTypes["default"].func.isRequired,
isWide: _propTypes["default"].bool,
className: _propTypes["default"].string,
recordStatus: _propTypes["default"].string,
showRecordingIndicator: _propTypes["default"].bool
};
LogBasicInfo.defaultProps = {
formatPhone: function formatPhone(value) {
return value;
},
currentLog: {},
dataSign: undefined,
disableLinks: false,
isWide: true,
currentLocale: 'en',
className: null,
recordStatus: '',
showRecordingIndicator: false
};
//# sourceMappingURL=LogBasicInfo.js.map