UNPKG

react-native-chating-ui-kit

Version:

CometChat React Native UI Kit is a collection of custom UI Components designed to build text , chat and calling features in your application. The UI Kit is developed to keep developers in mind and aims to reduce development efforts significantly

95 lines 4.13 kB
import { DataSourceDecorator } from '../../shared/framework'; // @ts-ignore import { CometChat } from '@cometchat-pro/react-native-chat'; import { ReceiverTypeConstants } from '../../shared/constants/UIKitConstants'; import { ViewAlignment } from '../../shared/constants/UIKitConstants'; import { ExtensionConstants } from '../ExtensionConstants'; import { getExtentionData } from '../ExtensionModerator'; // @ts-ignore import React from 'react'; // @ts-ignore import { CometChatUIEvents, MessageEvents } from '../../shared/events'; import { SmartRepliesView } from './SmartRepliesView'; import { getUnixTimestamp, } from '../../shared/utils/CometChatMessageHelper'; import { CometChatUIEventHandler } from '../../shared/events/CometChatUIEventHandler/CometChatUIEventHandler'; import { CometChatUIKit } from '../../shared/CometChatUiKit/CometChatUIKit'; export class SmartRepliesDecorator extends DataSourceDecorator { smartRepliesConfiguration; messageListenerId = 'message_' + new Date().getTime(); loggedInUser; constructor(dataSource, smartRepliesConfiguration) { super(dataSource); if (smartRepliesConfiguration != undefined) { this.smartRepliesConfiguration = smartRepliesConfiguration; } CometChat.getLoggedinUser() .then((u) => { this.loggedInUser = u; }) .catch((err) => console.log(err)); CometChat.addMessageListener(this.messageListenerId, new CometChat.MessageListener({ onTextMessageReceived: (textMessage) => { this.getReplies(textMessage); }, })); CometChatUIEventHandler.addMessageListener(MessageEvents.ccActiveChatChanged, { ccActiveChatChanged: ({ message }) => { if (message['sender']?.['uid'] != this.loggedInUser.getUid()) this.getReplies(message); }, }); } isDeletedMessage(message) { return message.getDeletedBy() != null; } getId() { return 'SmartReply'; } getReplies(message) { const smartReplyData = getExtentionData(message, ExtensionConstants.smartReply); let options = []; if (smartReplyData && Object.keys(smartReplyData).length && !smartReplyData.hasOwnProperty('error')) { options.push(smartReplyData['reply_positive']); options.push(smartReplyData['reply_neutral']); options.push(smartReplyData['reply_negative']); } CometChatUIEventHandler.emitUIEvent(CometChatUIEvents.showPanel, { alignment: ViewAlignment.messageListBottom, child: () => (<SmartRepliesView replies={options} onClose={this.onCloseRepliesPannel} onClick={(smartReply) => { this.handleSendMessage(message, smartReply); }} {...this.smartRepliesConfiguration}/>), }); } handleSendMessage = (message, smartReply) => { let chatWithId = ''; let chatWith; if (!smartReply.trim().length) { return; } if (typeof message !== 'object') return; if (message?.receiverType === ReceiverTypeConstants.user) { chatWithId = message?.sender?.uid; chatWith = ReceiverTypeConstants.user; } else { chatWithId = message?.receiverId; chatWith = ReceiverTypeConstants.group; } let textMessage = new CometChat.TextMessage(chatWithId, smartReply, chatWith); textMessage.setParentMessageId(message.getParentMessageId()); textMessage.setSender(this.loggedInUser); textMessage.setText(smartReply); textMessage.setSentAt(getUnixTimestamp()); textMessage.setMuid(String(getUnixTimestamp())); CometChatUIKit.sendTextMessage(textMessage, () => { }, () => { }); }; onCloseRepliesPannel = () => { CometChatUIEventHandler.emitUIEvent(CometChatUIEvents.hidePanel, { alignment: ViewAlignment.messageListBottom, }); }; } //# sourceMappingURL=SmartRepliesDecorator.js.map