stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
38 lines • 1.82 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NotificationAnnouncer = void 0;
var _react = require("react");
var _useAccessibilityAnnouncer = require("./useAccessibilityAnnouncer");
var _AccessibilityContext = require("../../contexts/accessibilityContext/AccessibilityContext");
var _ChatContext = require("../../contexts/chatContext/ChatContext");
var _TranslationContext = require("../../contexts/translationContext/TranslationContext");
var NotificationAnnouncer = () => {
var _useAccessibilityCont = (0, _AccessibilityContext.useAccessibilityContext)(),
announceConnectionState = _useAccessibilityCont.announceConnectionState,
enabled = _useAccessibilityCont.enabled;
var _useChatContext = (0, _ChatContext.useChatContext)(),
connectionRecovering = _useChatContext.connectionRecovering,
isOnline = _useChatContext.isOnline;
var announce = (0, _useAccessibilityAnnouncer.useAccessibilityAnnouncer)();
var _useTranslationContex = (0, _TranslationContext.useTranslationContext)(),
t = _useTranslationContex.t;
var previousIsOnlineRef = (0, _react.useRef)(undefined);
(0, _react.useEffect)(() => {
if (!enabled || !announceConnectionState) return;
if (previousIsOnlineRef.current === undefined) {
previousIsOnlineRef.current = isOnline;
return;
}
if (previousIsOnlineRef.current === isOnline) return;
previousIsOnlineRef.current = isOnline;
if (isOnline) {
announce(t('a11y/Connected'), 'polite');
} else {
announce(connectionRecovering ? t('a11y/Reconnecting') : t('a11y/Offline'), 'assertive');
}
}, [announce, announceConnectionState, connectionRecovering, enabled, isOnline, t]);
return null;
};
exports.NotificationAnnouncer = NotificationAnnouncer;
//# sourceMappingURL=NotificationAnnouncer.js.map