UNPKG

stream-chat-react-native-core

Version:

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

36 lines 1.65 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.useAnnounceOnStateChange = void 0; var _react = require("react"); var _useAccessibilityAnnouncer = require("../../components/Accessibility/useAccessibilityAnnouncer"); var _AccessibilityContext = require("../../contexts/accessibilityContext/AccessibilityContext"); var DEFAULT_DEBOUNCE_MS = 250; var useAnnounceOnStateChange = (message, options = {}) => { var _options$debounceMs = options.debounceMs, debounceMs = _options$debounceMs === void 0 ? DEFAULT_DEBOUNCE_MS : _options$debounceMs, _options$priority = options.priority, priority = _options$priority === void 0 ? 'polite' : _options$priority; var _useAccessibilityCont = (0, _AccessibilityContext.useAccessibilityContext)(), enabled = _useAccessibilityCont.enabled; var announce = (0, _useAccessibilityAnnouncer.useAccessibilityAnnouncer)(); var timeoutRef = (0, _react.useRef)(null); var lastAnnouncedRef = (0, _react.useRef)(null); (0, _react.useEffect)(() => { if (!enabled || !message || message === lastAnnouncedRef.current) return; if (timeoutRef.current) clearTimeout(timeoutRef.current); timeoutRef.current = setTimeout(() => { announce(message, priority); lastAnnouncedRef.current = message; timeoutRef.current = null; }, debounceMs); return () => { if (timeoutRef.current) { clearTimeout(timeoutRef.current); timeoutRef.current = null; } }; }, [announce, debounceMs, enabled, message, priority]); }; exports.useAnnounceOnStateChange = useAnnounceOnStateChange; //# sourceMappingURL=useAnnounceOnStateChange.js.map