UNPKG

stream-chat-react-native-core

Version:

The official React Native and Expo components for Stream Chat, a service for building chat applications

68 lines 2.48 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.useCreateMessageComposer = void 0; var _react = require("react"); var _streamChat = require("stream-chat"); var _ChatContext = require("../../chatContext/ChatContext"); var useCreateMessageComposer = ({ editing: editedMessage, thread: parentMessage, threadInstance, channel }) => { var _useChatContext = (0, _ChatContext.useChatContext)(), client = _useChatContext.client; var queueCache = client.messageComposerCache; var cachedEditedMessage = (0, _react.useMemo)(() => { if (!editedMessage) return undefined; return editedMessage; }, [editedMessage?.id]); var cachedParentMessage = (0, _react.useMemo)(() => { if (!parentMessage) return undefined; return parentMessage; }, [parentMessage?.id]); var messageComposer = (0, _react.useMemo)(() => { if (cachedEditedMessage) { var tag = _streamChat.MessageComposer.constructTag(cachedEditedMessage); var cachedComposer = queueCache.get(tag); if (cachedComposer) { cachedComposer.editedMessage = cachedEditedMessage; return cachedComposer; } return new _streamChat.MessageComposer({ client, composition: cachedEditedMessage, compositionContext: cachedEditedMessage }); } else if (threadInstance) { return threadInstance.messageComposer; } else if (cachedParentMessage) { var compositionContext = { ...cachedParentMessage, legacyThreadId: cachedParentMessage.id }; var _tag = _streamChat.MessageComposer.constructTag(compositionContext); var _cachedComposer = queueCache.get(_tag); if (_cachedComposer) return _cachedComposer; return new _streamChat.MessageComposer({ client, compositionContext }); } else { return channel.messageComposer; } }, [cachedEditedMessage, cachedParentMessage, channel.messageComposer, client, queueCache, threadInstance]); if (['legacy_thread', 'message'].includes(messageComposer.contextType) && !queueCache.peek(messageComposer.tag)) { queueCache.add(messageComposer.tag, messageComposer); } (0, _react.useEffect)(() => { var unsubscribe = messageComposer.registerSubscriptions(); return () => { unsubscribe(); }; }, [messageComposer]); return messageComposer; }; exports.useCreateMessageComposer = useCreateMessageComposer; //# sourceMappingURL=useCreateMessageComposer.js.map