@sendbird/uikit-react
Version:
Sendbird UIKit for React: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.
82 lines (75 loc) • 4.17 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var groupChannel = require('@sendbird/chat/groupChannel');
var ui_Label = require('../../chunks/bundle-zgmRG2KL.js');
var LocalizationContext = require('../../chunks/bundle-DPDyqKIJ.js');
var uuid = require('../../chunks/bundle-t8BQsgL5.js');
var useSendbird = require('../../chunks/bundle-Bq15P9qk.js');
require('../../chunks/bundle-Conb-pOy.js');
require('../../chunks/bundle-BbrBawlX.js');
require('../../chunks/bundle-Cyl6_qLo.js');
require('../../chunks/bundle-B19RHFpR.js');
require('../../chunks/bundle-Cfh78Xnm.js');
require('@sendbird/chat');
require('@sendbird/chat/openChannel');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
var TypingIndicatorText = function (_a) {
var members = _a.members;
function getText() {
var stringSet = React.useContext(LocalizationContext.LocalizationContext).stringSet;
if (!members || members.length === 0) {
return '';
}
if (members && members.length === 1) {
return "".concat(members[0].nickname, " ").concat(stringSet.TYPING_INDICATOR__IS_TYPING);
}
if (members && members.length === 2) {
return "".concat(members[0].nickname, " ").concat(stringSet.TYPING_INDICATOR__AND, " ").concat(members[1].nickname, " ").concat(stringSet.TYPING_INDICATOR__ARE_TYPING);
}
return stringSet.TYPING_INDICATOR__MULTIPLE_TYPING;
}
return React__default.default.createElement(React__default.default.Fragment, null, getText());
};
var TypingIndicator = function (_a) {
var _b, _c, _d;
var channelUrl = _a.channelUrl;
var state = useSendbird.useSendbird().state;
var sb = (_c = (_b = state === null || state === void 0 ? void 0 : state.stores) === null || _b === void 0 ? void 0 : _b.sdkStore) === null || _c === void 0 ? void 0 : _c.sdk;
var logger = (_d = state === null || state === void 0 ? void 0 : state.config) === null || _d === void 0 ? void 0 : _d.logger;
var _e = React.useState(uuid.uuidv4()), handlerId = _e[0], setHandlerId = _e[1];
var _f = React.useState([]), typingMembers = _f[0], setTypingMembers = _f[1];
React.useEffect(function () {
var _a;
if ((_a = sb === null || sb === void 0 ? void 0 : sb.groupChannel) === null || _a === void 0 ? void 0 : _a.addGroupChannelHandler) {
sb.groupChannel.removeGroupChannelHandler(handlerId);
var newHandlerId = uuid.uuidv4();
var handler = new groupChannel.GroupChannelHandler({
onTypingStatusUpdated: function (groupChannel) {
// there is a possible warning in here - setState called after unmount
logger.info('Channel > Typing Indicator: onTypingStatusUpdated', groupChannel);
if (groupChannel.url === channelUrl) {
var members = groupChannel.getTypingUsers();
setTypingMembers(members);
}
},
});
sb.groupChannel.addGroupChannelHandler(newHandlerId, handler);
setHandlerId(newHandlerId);
}
return function () {
var _a;
setTypingMembers([]);
if ((_a = sb === null || sb === void 0 ? void 0 : sb.groupChannel) === null || _a === void 0 ? void 0 : _a.removeGroupChannelHandler) {
sb.groupChannel.removeGroupChannelHandler(handlerId);
}
};
}, [channelUrl]);
return (React__default.default.createElement(ui_Label.Label, { className: "sendbird-conversation__footer__typing-indicator__text", type: ui_Label.LabelTypography.CAPTION_2, color: ui_Label.LabelColors.ONBACKGROUND_2 },
React__default.default.createElement(TypingIndicatorText, { members: typingMembers })));
};
exports.TypingIndicator = TypingIndicator;
exports.TypingIndicatorText = TypingIndicatorText;
exports.default = TypingIndicator;
//# sourceMappingURL=TypingIndicator.js.map