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.99 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useTargetedMessage = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = require("react");
var useTargetedMessage = messageId => {
var clearTargetedMessageCall = (0, _react.useRef)(undefined);
var _useState = (0, _react.useState)(messageId),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
targetedMessage = _useState2[0],
setTargetedMessage = _useState2[1];
var _useState3 = (0, _react.useState)(),
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
highlightedMessageId = _useState4[0],
setHighlightedMessageId = _useState4[1];
var prevTargetedMessageRef = (0, _react.useRef)(undefined);
(0, _react.useEffect)(() => {
prevTargetedMessageRef.current = targetedMessage;
if (targetedMessage) {
setHighlightedMessageId(targetedMessage);
}
}, [targetedMessage]);
(0, _react.useEffect)(() => {
clearTargetedMessageCall.current = setTimeout(() => {
setTargetedMessage(undefined);
setHighlightedMessageId(undefined);
}, 3000);
return () => {
clearTargetedMessageCall.current && clearTimeout(clearTargetedMessageCall.current);
};
}, []);
var setTargetedMessageTimeoutRef = (0, _react.useRef)(messageId => {
clearTargetedMessageCall.current && clearTimeout(clearTargetedMessageCall.current);
clearTargetedMessageCall.current = setTimeout(() => {
setTargetedMessage(undefined);
setHighlightedMessageId(undefined);
}, 3000);
setTargetedMessage(messageId);
});
return {
highlightedMessageId,
prevTargetedMessage: prevTargetedMessageRef.current,
setTargetedMessage: setTargetedMessageTimeoutRef.current,
targetedMessage
};
};
exports.useTargetedMessage = useTargetedMessage;
//# sourceMappingURL=useTargetedMessage.js.map