stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
50 lines • 1.89 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useHandleLiveLocationEvents = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = require("react");
var _ChatContext = require("../../../contexts/chatContext/ChatContext");
var useHandleLiveLocationEvents = ({
channel,
messageId,
onLocationUpdate
}) => {
var _useChatContext = (0, _ChatContext.useChatContext)(),
client = _useChatContext.client;
var _useState = (0, _react.useState)(undefined),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
locationResponse = _useState2[0],
setLocationResponse = _useState2[1];
var _useState3 = (0, _react.useState)(null),
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
isLiveLocationStopped = _useState4[0],
setIsLiveLocationStopped = _useState4[1];
(0, _react.useEffect)(() => {
var handleMessageUpdate = event => {
var message = event.message;
if (!message || !message.shared_location) {
return;
}
var shared_location = message.shared_location;
if (message.id === messageId) {
setLocationResponse(message.shared_location);
onLocationUpdate?.(message.shared_location);
}
if (shared_location.end_at && shared_location.end_at <= new Date().toISOString()) {
setIsLiveLocationStopped(true);
}
};
var listener = [channel.on('message.updated', handleMessageUpdate)];
return () => {
listener.forEach(l => l.unsubscribe());
};
}, [channel, client, messageId, onLocationUpdate]);
return {
isLiveLocationStopped,
locationResponse
};
};
exports.useHandleLiveLocationEvents = useHandleLiveLocationEvents;
//# sourceMappingURL=useHandleLiveLocationEvents.js.map