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