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
JavaScript
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