UNPKG

stream-chat-react-native-core

Version:

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

51 lines 2.21 kB
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useMessageDeliveredData = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _ChannelContext = require("../../../contexts/channelContext/ChannelContext"); var _ChatContext = require("../../../contexts/chatContext/ChatContext"); var _hooks = require("../../../hooks"); var useMessageDeliveredData = ({ message }) => { var _client$user2; var _useChannelContext = (0, _ChannelContext.useChannelContext)(), channel = _useChannelContext.channel; var _useChatContext = (0, _ChatContext.useChatContext)(), client = _useChatContext.client; var messageIdRef = (0, _react.useRef)(message == null ? void 0 : message.id); var calculate = (0, _hooks.useStableCallback)(() => { if (!(message != null && message.created_at)) { return []; } var messageRef = { msgId: message.id, timestampMs: new Date(message.created_at).getTime() }; return channel.messageReceiptsTracker.deliveredForMessage(messageRef); }); var _useState = (0, _react.useState)(() => calculate()), _useState2 = (0, _slicedToArray2.default)(_useState, 2), deliveredTo = _useState2[0], setDeliveredTo = _useState2[1]; if (!!messageIdRef.current && !!(message != null && message.id) && messageIdRef.current !== message.id) { setDeliveredTo(calculate()); messageIdRef.current = message.id; } (0, _react.useEffect)(() => { var _channel$on = channel.on('message.delivered', event => { var _event$user, _client$user; if (((_event$user = event.user) == null ? void 0 : _event$user.id) !== ((_client$user = client.user) == null ? void 0 : _client$user.id)) { setDeliveredTo(calculate()); } }), unsubscribe = _channel$on.unsubscribe; return unsubscribe; }, [channel, calculate, (_client$user2 = client.user) == null ? void 0 : _client$user2.id]); return deliveredTo; }; exports.useMessageDeliveredData = useMessageDeliveredData; //# sourceMappingURL=useMessageDeliveryData.js.map