@fle-ui/plus-im-record
Version:
76 lines (75 loc) • 4.42 kB
JavaScript
"use strict";
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _ChatMessageItem = _interopRequireDefault(require("../ChatMessageItem"));
var _utils = require("../utils");
require("./index.less");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
var LOADING_STATUS = {
loading: '加载中...',
nomore: '没有更多了~'
};
var LOAD_LIMIT = 15;
var ChatMessageList = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
var searchValue = _ref.searchValue,
h5 = _ref.h5,
msgs = _ref.msgs,
onScrollTop = _ref.onScrollTop,
onScrollBottom = _ref.onScrollBottom,
_ref$loadingStarus = _ref.loadingStarus,
loadingStarus = _ref$loadingStarus === void 0 ? '' : _ref$loadingStarus,
myAccount = _ref.myAccount,
style = _ref.style,
recordSession = _ref.recordSession,
_ref$accountsMap = _ref.accountsMap,
accountsMap = _ref$accountsMap === void 0 ? {} : _ref$accountsMap,
_ref$isSessionEnd = _ref.isSessionEnd,
isSessionEnd = _ref$isSessionEnd === void 0 ? false : _ref$isSessionEnd;
var prefixCls = "chart-messages";
var onScrollHandler = (0, _utils.debounce)(function (e) {
var scrollElRef = ref;
if (!(scrollElRef === null || scrollElRef === void 0 ? void 0 : scrollElRef.current)) return;
var isBottom = scrollElRef.current.scrollTop >= scrollElRef.current.scrollHeight - scrollElRef.current.clientHeight - 20;
var isTop = scrollElRef.current.scrollTop < 20;
isTop && (onScrollTop === null || onScrollTop === void 0 ? void 0 : onScrollTop(e));
isBottom && (onScrollBottom === null || onScrollBottom === void 0 ? void 0 : onScrollBottom(e));
}, 200);
var filteredMsgs = (0, _react.useMemo)(function () {
return msgs.filter(function (msg) {
var _msg$attach, _msg$attach2;
return ((_msg$attach = msg.attach) === null || _msg$attach === void 0 ? void 0 : _msg$attach.type) === 'text' && (((_msg$attach2 = msg.attach) === null || _msg$attach2 === void 0 ? void 0 : _msg$attach2.content) || '').indexOf(searchValue) > -1;
});
}, [msgs, searchValue]);
var messagesToRender = searchValue ? filteredMsgs : msgs;
return /*#__PURE__*/_react.default.createElement("div", {
className: prefixCls,
style: style || {}
}, /*#__PURE__*/_react.default.createElement("div", {
ref: ref,
className: "".concat(prefixCls, "-content scrollmini"),
onScroll: onScrollHandler
}, /*#__PURE__*/_react.default.createElement("div", {
className: "".concat(prefixCls, "-status")
}, msgs.length < LOAD_LIMIT || !LOADING_STATUS[loadingStarus] ? null : LOADING_STATUS[loadingStarus]), messagesToRender.map(function (msg) {
return /*#__PURE__*/_react.default.createElement("div", {
id: msg.idServer,
key: msg.idServer
}, /*#__PURE__*/_react.default.createElement(_ChatMessageItem.default, {
h5: h5,
keyword: searchValue || '',
myAccount: myAccount,
prefix: "".concat(prefixCls, "-item"),
msg: msg,
isSessionEnd: isSessionEnd,
recordSession: recordSession,
accountInfo: accountsMap[msg.from] || {}
}));
})));
});
var _default = exports.default = ChatMessageList;