stream-chat-react-native-core 9.1.3 → 9.2.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/a11y/a11yUtils.js +40 -0
- package/lib/commonjs/a11y/a11yUtils.js.map +1 -0
- package/lib/commonjs/a11y/hooks/useA11yLabel.js +15 -0
- package/lib/commonjs/a11y/hooks/useA11yLabel.js.map +1 -0
- package/lib/commonjs/a11y/hooks/useAnnounceOnStateChange.js +36 -0
- package/lib/commonjs/a11y/hooks/useAnnounceOnStateChange.js.map +1 -0
- package/lib/commonjs/a11y/hooks/useReducedMotionPreference.js +34 -0
- package/lib/commonjs/a11y/hooks/useReducedMotionPreference.js.map +1 -0
- package/lib/commonjs/a11y/hooks/useResolvedModalAccessibilityProps.js +20 -0
- package/lib/commonjs/a11y/hooks/useResolvedModalAccessibilityProps.js.map +1 -0
- package/lib/commonjs/a11y/hooks/useScreenReaderEnabled.js +37 -0
- package/lib/commonjs/a11y/hooks/useScreenReaderEnabled.js.map +1 -0
- package/lib/commonjs/a11y/index.js +70 -0
- package/lib/commonjs/a11y/index.js.map +1 -0
- package/lib/commonjs/components/AITypingIndicatorView/AITypingIndicatorView.js +10 -0
- package/lib/commonjs/components/AITypingIndicatorView/AITypingIndicatorView.js.map +1 -1
- package/lib/commonjs/components/Accessibility/NotificationAnnouncer.js +37 -0
- package/lib/commonjs/components/Accessibility/NotificationAnnouncer.js.map +1 -0
- package/lib/commonjs/components/Accessibility/hooks/useIncomingMessageAnnouncements.js +109 -0
- package/lib/commonjs/components/Accessibility/hooks/useIncomingMessageAnnouncements.js.map +1 -0
- package/lib/commonjs/components/Accessibility/index.js +37 -0
- package/lib/commonjs/components/Accessibility/index.js.map +1 -0
- package/lib/commonjs/components/Accessibility/useAccessibilityAnnouncer.js +15 -0
- package/lib/commonjs/components/Accessibility/useAccessibilityAnnouncer.js.map +1 -0
- package/lib/commonjs/components/Channel/Channel.js +2 -1
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.js +4 -0
- package/lib/commonjs/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.js.map +1 -1
- package/lib/commonjs/components/Indicators/LoadingDots.js +2 -0
- package/lib/commonjs/components/Indicators/LoadingDots.js.map +1 -1
- package/lib/commonjs/components/Indicators/LoadingErrorIndicator.js +3 -0
- package/lib/commonjs/components/Indicators/LoadingErrorIndicator.js.map +1 -1
- package/lib/commonjs/components/Indicators/LoadingIndicator.js +2 -0
- package/lib/commonjs/components/Indicators/LoadingIndicator.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageList.js +13 -6
- package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
- package/lib/commonjs/components/MessageList/ScrollToBottomButton.js +5 -0
- package/lib/commonjs/components/MessageList/ScrollToBottomButton.js.map +1 -1
- package/lib/commonjs/components/MessageMenu/MessageActionList.js +4 -1
- package/lib/commonjs/components/MessageMenu/MessageActionList.js.map +1 -1
- package/lib/commonjs/components/MessageMenu/MessageActionListItem.js +1 -0
- package/lib/commonjs/components/MessageMenu/MessageActionListItem.js.map +1 -1
- package/lib/commonjs/components/MessageMenu/MessageReactionPicker.js +1 -0
- package/lib/commonjs/components/MessageMenu/MessageReactionPicker.js.map +1 -1
- package/lib/commonjs/components/MessageMenu/ReactionButton.js +6 -1
- package/lib/commonjs/components/MessageMenu/ReactionButton.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollOption.js +15 -0
- package/lib/commonjs/components/Poll/components/PollOption.js.map +1 -1
- package/lib/commonjs/components/ProgressControl/ProgressControl.js +10 -0
- package/lib/commonjs/components/ProgressControl/ProgressControl.js.map +1 -1
- package/lib/commonjs/components/Reply/Reply.js +2 -0
- package/lib/commonjs/components/Reply/Reply.js.map +1 -1
- package/lib/commonjs/components/UIComponents/BottomSheetModal.js +6 -3
- package/lib/commonjs/components/UIComponents/BottomSheetModal.js.map +1 -1
- package/lib/commonjs/components/index.js +11 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/components/ui/Avatar/Avatar.js +14 -2
- package/lib/commonjs/components/ui/Avatar/Avatar.js.map +1 -1
- package/lib/commonjs/components/ui/Avatar/ChannelAvatar.js +3 -1
- package/lib/commonjs/components/ui/Avatar/ChannelAvatar.js.map +1 -1
- package/lib/commonjs/components/ui/Avatar/UserAvatar.js +1 -0
- package/lib/commonjs/components/ui/Avatar/UserAvatar.js.map +1 -1
- package/lib/commonjs/components/ui/Button/Button.js +49 -19
- package/lib/commonjs/components/ui/Button/Button.js.map +1 -1
- package/lib/commonjs/components/ui/Input/Input.js +63 -21
- package/lib/commonjs/components/ui/Input/Input.js.map +1 -1
- package/lib/commonjs/contexts/accessibilityContext/AccessibilityContext.js +114 -0
- package/lib/commonjs/contexts/accessibilityContext/AccessibilityContext.js.map +1 -0
- package/lib/commonjs/contexts/accessibilityContext/index.js +15 -0
- package/lib/commonjs/contexts/accessibilityContext/index.js.map +1 -0
- package/lib/commonjs/contexts/index.js +11 -0
- package/lib/commonjs/contexts/index.js.map +1 -1
- package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
- package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +19 -14
- package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
- package/lib/commonjs/hooks/index.js +11 -0
- package/lib/commonjs/hooks/index.js.map +1 -1
- package/lib/commonjs/i18n/en.json +23 -1
- package/lib/commonjs/i18n/es.json +23 -1
- package/lib/commonjs/i18n/fr.json +23 -1
- package/lib/commonjs/i18n/he.json +23 -1
- package/lib/commonjs/i18n/hi.json +23 -1
- package/lib/commonjs/i18n/it.json +23 -1
- package/lib/commonjs/i18n/ja.json +23 -1
- package/lib/commonjs/i18n/ko.json +23 -1
- package/lib/commonjs/i18n/nl.json +23 -1
- package/lib/commonjs/i18n/pt-br.json +23 -1
- package/lib/commonjs/i18n/ru.json +23 -1
- package/lib/commonjs/i18n/tr.json +23 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/a11y/a11yUtils.js +40 -0
- package/lib/module/a11y/a11yUtils.js.map +1 -0
- package/lib/module/a11y/hooks/useA11yLabel.js +15 -0
- package/lib/module/a11y/hooks/useA11yLabel.js.map +1 -0
- package/lib/module/a11y/hooks/useAnnounceOnStateChange.js +36 -0
- package/lib/module/a11y/hooks/useAnnounceOnStateChange.js.map +1 -0
- package/lib/module/a11y/hooks/useReducedMotionPreference.js +34 -0
- package/lib/module/a11y/hooks/useReducedMotionPreference.js.map +1 -0
- package/lib/module/a11y/hooks/useResolvedModalAccessibilityProps.js +20 -0
- package/lib/module/a11y/hooks/useResolvedModalAccessibilityProps.js.map +1 -0
- package/lib/module/a11y/hooks/useScreenReaderEnabled.js +37 -0
- package/lib/module/a11y/hooks/useScreenReaderEnabled.js.map +1 -0
- package/lib/module/a11y/index.js +70 -0
- package/lib/module/a11y/index.js.map +1 -0
- package/lib/module/components/AITypingIndicatorView/AITypingIndicatorView.js +10 -0
- package/lib/module/components/AITypingIndicatorView/AITypingIndicatorView.js.map +1 -1
- package/lib/module/components/Accessibility/NotificationAnnouncer.js +37 -0
- package/lib/module/components/Accessibility/NotificationAnnouncer.js.map +1 -0
- package/lib/module/components/Accessibility/hooks/useIncomingMessageAnnouncements.js +109 -0
- package/lib/module/components/Accessibility/hooks/useIncomingMessageAnnouncements.js.map +1 -0
- package/lib/module/components/Accessibility/index.js +37 -0
- package/lib/module/components/Accessibility/index.js.map +1 -0
- package/lib/module/components/Accessibility/useAccessibilityAnnouncer.js +15 -0
- package/lib/module/components/Accessibility/useAccessibilityAnnouncer.js.map +1 -0
- package/lib/module/components/Channel/Channel.js +2 -1
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.js +4 -0
- package/lib/module/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.js.map +1 -1
- package/lib/module/components/Indicators/LoadingDots.js +2 -0
- package/lib/module/components/Indicators/LoadingDots.js.map +1 -1
- package/lib/module/components/Indicators/LoadingErrorIndicator.js +3 -0
- package/lib/module/components/Indicators/LoadingErrorIndicator.js.map +1 -1
- package/lib/module/components/Indicators/LoadingIndicator.js +2 -0
- package/lib/module/components/Indicators/LoadingIndicator.js.map +1 -1
- package/lib/module/components/MessageList/MessageList.js +13 -6
- package/lib/module/components/MessageList/MessageList.js.map +1 -1
- package/lib/module/components/MessageList/ScrollToBottomButton.js +5 -0
- package/lib/module/components/MessageList/ScrollToBottomButton.js.map +1 -1
- package/lib/module/components/MessageMenu/MessageActionList.js +4 -1
- package/lib/module/components/MessageMenu/MessageActionList.js.map +1 -1
- package/lib/module/components/MessageMenu/MessageActionListItem.js +1 -0
- package/lib/module/components/MessageMenu/MessageActionListItem.js.map +1 -1
- package/lib/module/components/MessageMenu/MessageReactionPicker.js +1 -0
- package/lib/module/components/MessageMenu/MessageReactionPicker.js.map +1 -1
- package/lib/module/components/MessageMenu/ReactionButton.js +6 -1
- package/lib/module/components/MessageMenu/ReactionButton.js.map +1 -1
- package/lib/module/components/Poll/components/PollOption.js +15 -0
- package/lib/module/components/Poll/components/PollOption.js.map +1 -1
- package/lib/module/components/ProgressControl/ProgressControl.js +10 -0
- package/lib/module/components/ProgressControl/ProgressControl.js.map +1 -1
- package/lib/module/components/Reply/Reply.js +2 -0
- package/lib/module/components/Reply/Reply.js.map +1 -1
- package/lib/module/components/UIComponents/BottomSheetModal.js +6 -3
- package/lib/module/components/UIComponents/BottomSheetModal.js.map +1 -1
- package/lib/module/components/index.js +11 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/components/ui/Avatar/Avatar.js +14 -2
- package/lib/module/components/ui/Avatar/Avatar.js.map +1 -1
- package/lib/module/components/ui/Avatar/ChannelAvatar.js +3 -1
- package/lib/module/components/ui/Avatar/ChannelAvatar.js.map +1 -1
- package/lib/module/components/ui/Avatar/UserAvatar.js +1 -0
- package/lib/module/components/ui/Avatar/UserAvatar.js.map +1 -1
- package/lib/module/components/ui/Button/Button.js +49 -19
- package/lib/module/components/ui/Button/Button.js.map +1 -1
- package/lib/module/components/ui/Input/Input.js +63 -21
- package/lib/module/components/ui/Input/Input.js.map +1 -1
- package/lib/module/contexts/accessibilityContext/AccessibilityContext.js +114 -0
- package/lib/module/contexts/accessibilityContext/AccessibilityContext.js.map +1 -0
- package/lib/module/contexts/accessibilityContext/index.js +15 -0
- package/lib/module/contexts/accessibilityContext/index.js.map +1 -0
- package/lib/module/contexts/index.js +11 -0
- package/lib/module/contexts/index.js.map +1 -1
- package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
- package/lib/module/contexts/overlayContext/OverlayProvider.js +19 -14
- package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
- package/lib/module/hooks/index.js +11 -0
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/i18n/en.json +23 -1
- package/lib/module/i18n/es.json +23 -1
- package/lib/module/i18n/fr.json +23 -1
- package/lib/module/i18n/he.json +23 -1
- package/lib/module/i18n/hi.json +23 -1
- package/lib/module/i18n/it.json +23 -1
- package/lib/module/i18n/ja.json +23 -1
- package/lib/module/i18n/ko.json +23 -1
- package/lib/module/i18n/nl.json +23 -1
- package/lib/module/i18n/pt-br.json +23 -1
- package/lib/module/i18n/ru.json +23 -1
- package/lib/module/i18n/tr.json +23 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/a11y/a11yUtils.d.ts +31 -0
- package/lib/typescript/a11y/a11yUtils.d.ts.map +1 -0
- package/lib/typescript/a11y/hooks/useA11yLabel.d.ts +12 -0
- package/lib/typescript/a11y/hooks/useA11yLabel.d.ts.map +1 -0
- package/lib/typescript/a11y/hooks/useAnnounceOnStateChange.d.ts +14 -0
- package/lib/typescript/a11y/hooks/useAnnounceOnStateChange.d.ts.map +1 -0
- package/lib/typescript/a11y/hooks/useReducedMotionPreference.d.ts +6 -0
- package/lib/typescript/a11y/hooks/useReducedMotionPreference.d.ts.map +1 -0
- package/lib/typescript/a11y/hooks/useResolvedModalAccessibilityProps.d.ts +18 -0
- package/lib/typescript/a11y/hooks/useResolvedModalAccessibilityProps.d.ts.map +1 -0
- package/lib/typescript/a11y/hooks/useScreenReaderEnabled.d.ts +10 -0
- package/lib/typescript/a11y/hooks/useScreenReaderEnabled.d.ts.map +1 -0
- package/lib/typescript/a11y/index.d.ts +7 -0
- package/lib/typescript/a11y/index.d.ts.map +1 -0
- package/lib/typescript/components/AITypingIndicatorView/AITypingIndicatorView.d.ts.map +1 -1
- package/lib/typescript/components/Accessibility/NotificationAnnouncer.d.ts +12 -0
- package/lib/typescript/components/Accessibility/NotificationAnnouncer.d.ts.map +1 -0
- package/lib/typescript/components/Accessibility/hooks/useIncomingMessageAnnouncements.d.ts +20 -0
- package/lib/typescript/components/Accessibility/hooks/useIncomingMessageAnnouncements.d.ts.map +1 -0
- package/lib/typescript/components/Accessibility/index.d.ts +4 -0
- package/lib/typescript/components/Accessibility/index.d.ts.map +1 -0
- package/lib/typescript/components/Accessibility/useAccessibilityAnnouncer.d.ts +15 -0
- package/lib/typescript/components/Accessibility/useAccessibilityAnnouncer.d.ts.map +1 -0
- package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.d.ts.map +1 -1
- package/lib/typescript/components/Indicators/LoadingDots.d.ts.map +1 -1
- package/lib/typescript/components/Indicators/LoadingErrorIndicator.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/ScrollToBottomButton.d.ts.map +1 -1
- package/lib/typescript/components/MessageMenu/MessageActionList.d.ts.map +1 -1
- package/lib/typescript/components/MessageMenu/MessageActionListItem.d.ts.map +1 -1
- package/lib/typescript/components/MessageMenu/MessageReactionPicker.d.ts.map +1 -1
- package/lib/typescript/components/MessageMenu/ReactionButton.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/PollOption.d.ts.map +1 -1
- package/lib/typescript/components/ProgressControl/ProgressControl.d.ts.map +1 -1
- package/lib/typescript/components/Reply/Reply.d.ts.map +1 -1
- package/lib/typescript/components/UIComponents/BottomSheetModal.d.ts.map +1 -1
- package/lib/typescript/components/index.d.ts +1 -0
- package/lib/typescript/components/index.d.ts.map +1 -1
- package/lib/typescript/components/ui/Avatar/Avatar.d.ts +12 -1
- package/lib/typescript/components/ui/Avatar/Avatar.d.ts.map +1 -1
- package/lib/typescript/components/ui/Avatar/ChannelAvatar.d.ts.map +1 -1
- package/lib/typescript/components/ui/Avatar/UserAvatar.d.ts.map +1 -1
- package/lib/typescript/components/ui/Button/Button.d.ts.map +1 -1
- package/lib/typescript/components/ui/Input/Input.d.ts.map +1 -1
- package/lib/typescript/contexts/accessibilityContext/AccessibilityContext.d.ts +34 -0
- package/lib/typescript/contexts/accessibilityContext/AccessibilityContext.d.ts.map +1 -0
- package/lib/typescript/contexts/accessibilityContext/index.d.ts +2 -0
- package/lib/typescript/contexts/accessibilityContext/index.d.ts.map +1 -0
- package/lib/typescript/contexts/index.d.ts +1 -0
- package/lib/typescript/contexts/index.d.ts.map +1 -1
- package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts +7 -0
- package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts.map +1 -1
- package/lib/typescript/contexts/overlayContext/OverlayProvider.d.ts.map +1 -1
- package/lib/typescript/hooks/index.d.ts +1 -0
- package/lib/typescript/hooks/index.d.ts.map +1 -1
- package/lib/typescript/hooks/useTranslatedMessage.d.ts +2 -2
- package/lib/typescript/i18n/en.json +23 -1
- package/lib/typescript/i18n/es.json +23 -1
- package/lib/typescript/i18n/fr.json +23 -1
- package/lib/typescript/i18n/he.json +23 -1
- package/lib/typescript/i18n/hi.json +23 -1
- package/lib/typescript/i18n/it.json +23 -1
- package/lib/typescript/i18n/ja.json +23 -1
- package/lib/typescript/i18n/ko.json +23 -1
- package/lib/typescript/i18n/nl.json +23 -1
- package/lib/typescript/i18n/pt-br.json +23 -1
- package/lib/typescript/i18n/ru.json +23 -1
- package/lib/typescript/i18n/tr.json +23 -1
- package/lib/typescript/utils/i18n/Streami18n.d.ts +22 -0
- package/lib/typescript/utils/i18n/Streami18n.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/a11y/__tests__/a11yUtils.test.ts +70 -0
- package/src/a11y/a11yUtils.ts +50 -0
- package/src/a11y/hooks/useA11yLabel.ts +19 -0
- package/src/a11y/hooks/useAnnounceOnStateChange.ts +47 -0
- package/src/a11y/hooks/useReducedMotionPreference.ts +38 -0
- package/src/a11y/hooks/useResolvedModalAccessibilityProps.ts +30 -0
- package/src/a11y/hooks/useScreenReaderEnabled.ts +44 -0
- package/src/a11y/index.ts +6 -0
- package/src/components/AITypingIndicatorView/AITypingIndicatorView.tsx +17 -2
- package/src/components/AITypingIndicatorView/__tests__/AITypingIndicatorView.test.tsx +73 -0
- package/src/components/Accessibility/NotificationAnnouncer.tsx +43 -0
- package/src/components/Accessibility/__tests__/AccessibilityAnnouncer.test.tsx +75 -0
- package/src/components/Accessibility/hooks/useIncomingMessageAnnouncements.ts +157 -0
- package/src/components/Accessibility/index.ts +3 -0
- package/src/components/Accessibility/useAccessibilityAnnouncer.ts +30 -0
- package/src/components/Channel/Channel.tsx +3 -0
- package/src/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.tsx +14 -1
- package/src/components/Indicators/LoadingDots.tsx +5 -1
- package/src/components/Indicators/LoadingErrorIndicator.tsx +7 -1
- package/src/components/Indicators/LoadingIndicator.tsx +1 -1
- package/src/components/Message/MessageItemView/__tests__/__snapshots__/MessageAuthor.test.tsx.snap +2 -0
- package/src/components/MessageInput/__tests__/__snapshots__/AttachButton.test.tsx.snap +30 -15
- package/src/components/MessageInput/__tests__/__snapshots__/SendButton.test.tsx.snap +20 -10
- package/src/components/MessageList/MessageList.tsx +9 -0
- package/src/components/MessageList/ScrollToBottomButton.tsx +6 -0
- package/src/components/MessageList/__tests__/__snapshots__/ScrollToBottomButton.test.tsx.snap +2 -1
- package/src/components/MessageList/__tests__/__snapshots__/TypingIndicator.test.tsx.snap +6 -0
- package/src/components/MessageMenu/MessageActionList.tsx +4 -1
- package/src/components/MessageMenu/MessageActionListItem.tsx +1 -0
- package/src/components/MessageMenu/MessageReactionPicker.tsx +1 -0
- package/src/components/MessageMenu/ReactionButton.tsx +9 -1
- package/src/components/Poll/components/PollOption.tsx +11 -0
- package/src/components/ProgressControl/ProgressControl.tsx +8 -0
- package/src/components/Reply/Reply.tsx +5 -1
- package/src/components/Thread/__tests__/__snapshots__/Thread.test.tsx.snap +20 -6
- package/src/components/UIComponents/BottomSheetModal.tsx +4 -0
- package/src/components/index.ts +2 -0
- package/src/components/ui/Avatar/Avatar.tsx +23 -2
- package/src/components/ui/Avatar/ChannelAvatar.tsx +3 -0
- package/src/components/ui/Avatar/UserAvatar.tsx +1 -0
- package/src/components/ui/Button/Button.tsx +24 -0
- package/src/components/ui/Input/Input.tsx +35 -0
- package/src/contexts/accessibilityContext/AccessibilityContext.tsx +165 -0
- package/src/contexts/accessibilityContext/__tests__/AccessibilityContext.test.tsx +65 -0
- package/src/contexts/accessibilityContext/index.ts +1 -0
- package/src/contexts/index.ts +1 -0
- package/src/contexts/overlayContext/OverlayContext.tsx +7 -0
- package/src/contexts/overlayContext/OverlayProvider.tsx +18 -14
- package/src/contexts/overlayContext/__tests__/OverlayProvider.test.tsx +51 -0
- package/src/hooks/index.ts +1 -0
- package/src/i18n/en.json +23 -1
- package/src/i18n/es.json +23 -1
- package/src/i18n/fr.json +23 -1
- package/src/i18n/he.json +23 -1
- package/src/i18n/hi.json +23 -1
- package/src/i18n/it.json +23 -1
- package/src/i18n/ja.json +23 -1
- package/src/i18n/ko.json +23 -1
- package/src/i18n/nl.json +23 -1
- package/src/i18n/pt-br.json +23 -1
- package/src/i18n/ru.json +23 -1
- package/src/i18n/tr.json +23 -1
- package/src/version.json +1 -1
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
2
|
+
|
|
3
|
+
import type { Channel, Event, MessageResponse } from 'stream-chat';
|
|
4
|
+
|
|
5
|
+
import { useAccessibilityContext } from '../../../contexts/accessibilityContext/AccessibilityContext';
|
|
6
|
+
import { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';
|
|
7
|
+
import { useAccessibilityAnnouncer } from '../useAccessibilityAnnouncer';
|
|
8
|
+
|
|
9
|
+
const MESSAGE_ANNOUNCEMENT_THROTTLE_MS = 1000;
|
|
10
|
+
|
|
11
|
+
const isAnnounceableIncomingMessage = (message: MessageResponse, ownUserId?: string): boolean => {
|
|
12
|
+
const messageUserId = message.user?.id;
|
|
13
|
+
if (!message.id || !messageUserId || messageUserId === ownUserId) return false;
|
|
14
|
+
return (
|
|
15
|
+
message.type !== 'deleted' &&
|
|
16
|
+
message.type !== 'ephemeral' &&
|
|
17
|
+
message.type !== 'error' &&
|
|
18
|
+
message.type !== 'system' &&
|
|
19
|
+
message.status !== 'failed' &&
|
|
20
|
+
message.status !== 'sending'
|
|
21
|
+
);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const getSenderName = (
|
|
25
|
+
message: MessageResponse,
|
|
26
|
+
t: ReturnType<typeof useTranslationContext>['t'],
|
|
27
|
+
) => message.user?.name?.trim() || message.user?.id || t('Anonymous');
|
|
28
|
+
|
|
29
|
+
export type UseIncomingMessageAnnouncementsParams = {
|
|
30
|
+
activeThreadId?: string;
|
|
31
|
+
channel?: Channel;
|
|
32
|
+
ownUserId?: string;
|
|
33
|
+
threadList?: boolean;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Mirrors stream-chat-react's `useIncomingMessageAnnouncements`:
|
|
38
|
+
* - 1 message → "New message from {{user}}"
|
|
39
|
+
* - >1 messages within throttle window → "{{count}} new messages"
|
|
40
|
+
* - Throttled to one announcement per second
|
|
41
|
+
* - Bounded `announcedMessageIds` set so a long-running session does not leak.
|
|
42
|
+
*
|
|
43
|
+
* Subscribes to `channel.on('message.new')`. When AccessibilityContext.enabled
|
|
44
|
+
* is false OR `announceNewMessages` is false, the hook is a no-op (no
|
|
45
|
+
* subscription is opened, no listener cost is paid).
|
|
46
|
+
*/
|
|
47
|
+
export const useIncomingMessageAnnouncements = ({
|
|
48
|
+
activeThreadId,
|
|
49
|
+
channel,
|
|
50
|
+
ownUserId,
|
|
51
|
+
threadList = false,
|
|
52
|
+
}: UseIncomingMessageAnnouncementsParams) => {
|
|
53
|
+
const { announceNewMessages, enabled } = useAccessibilityContext();
|
|
54
|
+
const announce = useAccessibilityAnnouncer();
|
|
55
|
+
const { t } = useTranslationContext();
|
|
56
|
+
const lastAnnouncementTimestampRef = useRef(0);
|
|
57
|
+
const flushTimeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);
|
|
58
|
+
const announcedMessageIdsRef = useRef(new Set<string>());
|
|
59
|
+
const pendingAnnouncementBatchRef = useRef<{ count: number; firstSender: string | null }>({
|
|
60
|
+
count: 0,
|
|
61
|
+
firstSender: null,
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
const flushPendingAnnouncements = useCallback(() => {
|
|
65
|
+
const pending = pendingAnnouncementBatchRef.current;
|
|
66
|
+
if (pending.count <= 0) return;
|
|
67
|
+
|
|
68
|
+
if (pending.count === 1) {
|
|
69
|
+
announce(
|
|
70
|
+
t('a11y/New message from {{user}}', {
|
|
71
|
+
user: pending.firstSender || t('Anonymous'),
|
|
72
|
+
}),
|
|
73
|
+
);
|
|
74
|
+
} else {
|
|
75
|
+
announce(t('a11y/{{count}} new messages', { count: pending.count }));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
pending.count = 0;
|
|
79
|
+
pending.firstSender = null;
|
|
80
|
+
lastAnnouncementTimestampRef.current = Date.now();
|
|
81
|
+
}, [announce, t]);
|
|
82
|
+
|
|
83
|
+
const scheduleFlush = useCallback(() => {
|
|
84
|
+
if (flushTimeoutRef.current) return;
|
|
85
|
+
const now = Date.now();
|
|
86
|
+
const elapsed = now - lastAnnouncementTimestampRef.current;
|
|
87
|
+
if (elapsed >= MESSAGE_ANNOUNCEMENT_THROTTLE_MS) {
|
|
88
|
+
flushPendingAnnouncements();
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
flushTimeoutRef.current = setTimeout(() => {
|
|
92
|
+
flushTimeoutRef.current = undefined;
|
|
93
|
+
flushPendingAnnouncements();
|
|
94
|
+
}, MESSAGE_ANNOUNCEMENT_THROTTLE_MS - elapsed);
|
|
95
|
+
}, [flushPendingAnnouncements]);
|
|
96
|
+
|
|
97
|
+
useEffect(
|
|
98
|
+
() => () => {
|
|
99
|
+
if (flushTimeoutRef.current) clearTimeout(flushTimeoutRef.current);
|
|
100
|
+
},
|
|
101
|
+
[],
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
useEffect(() => {
|
|
105
|
+
if (!enabled || !announceNewMessages || !channel) return;
|
|
106
|
+
|
|
107
|
+
const handleMessageNew = (event: Event) => {
|
|
108
|
+
const message = event.message;
|
|
109
|
+
if (!message) return;
|
|
110
|
+
if (
|
|
111
|
+
(event.cid && event.cid !== channel.cid) ||
|
|
112
|
+
!isAnnounceableIncomingMessage(message, ownUserId)
|
|
113
|
+
) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const isReply = !!message.parent_id;
|
|
118
|
+
const belongsToActiveThread = !!activeThreadId && message.parent_id === activeThreadId;
|
|
119
|
+
const shouldAnnounceInThreadList = threadList && belongsToActiveThread;
|
|
120
|
+
const shouldAnnounceInMainList = !threadList && !isReply;
|
|
121
|
+
if (!shouldAnnounceInThreadList && !shouldAnnounceInMainList) return;
|
|
122
|
+
|
|
123
|
+
if (announcedMessageIdsRef.current.has(message.id || '')) return;
|
|
124
|
+
if (message.id) {
|
|
125
|
+
if (announcedMessageIdsRef.current.size > 500) {
|
|
126
|
+
announcedMessageIdsRef.current.clear();
|
|
127
|
+
}
|
|
128
|
+
announcedMessageIdsRef.current.add(message.id);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
pendingAnnouncementBatchRef.current.count += 1;
|
|
132
|
+
if (!pendingAnnouncementBatchRef.current.firstSender) {
|
|
133
|
+
pendingAnnouncementBatchRef.current.firstSender = getSenderName(message, t);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
scheduleFlush();
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
const subscription = channel.on('message.new', handleMessageNew);
|
|
140
|
+
return () => {
|
|
141
|
+
subscription.unsubscribe();
|
|
142
|
+
if (flushTimeoutRef.current) {
|
|
143
|
+
clearTimeout(flushTimeoutRef.current);
|
|
144
|
+
flushTimeoutRef.current = undefined;
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
}, [
|
|
148
|
+
activeThreadId,
|
|
149
|
+
announceNewMessages,
|
|
150
|
+
channel,
|
|
151
|
+
enabled,
|
|
152
|
+
ownUserId,
|
|
153
|
+
scheduleFlush,
|
|
154
|
+
t,
|
|
155
|
+
threadList,
|
|
156
|
+
]);
|
|
157
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
|
|
3
|
+
export type AccessibilityAnnouncePriority = 'assertive' | 'polite';
|
|
4
|
+
export type AccessibilityAnnounce = (
|
|
5
|
+
message: string,
|
|
6
|
+
priority?: AccessibilityAnnouncePriority,
|
|
7
|
+
) => void;
|
|
8
|
+
|
|
9
|
+
export type AccessibilityAnnouncerContextValue = {
|
|
10
|
+
announce: AccessibilityAnnounce;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const noopAnnounce: AccessibilityAnnounce = () => undefined;
|
|
14
|
+
|
|
15
|
+
export const AccessibilityAnnouncerContext = createContext<
|
|
16
|
+
AccessibilityAnnouncerContextValue | undefined
|
|
17
|
+
>(undefined);
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Returns the imperative announcer. When called outside the AccessibilityProvider's
|
|
21
|
+
* announcer context (which happens any time the SDK's a11y is disabled), this
|
|
22
|
+
* returns a no-op.
|
|
23
|
+
*
|
|
24
|
+
* Mirrors the React SDK's `useAriaLiveAnnouncer` so cross-SDK code reads the same.
|
|
25
|
+
*/
|
|
26
|
+
export const useAccessibilityAnnouncer = (): AccessibilityAnnounce => {
|
|
27
|
+
const contextValue = useContext(AccessibilityAnnouncerContext);
|
|
28
|
+
if (!contextValue) return noopAnnounce;
|
|
29
|
+
return contextValue.announce;
|
|
30
|
+
};
|
|
@@ -49,6 +49,7 @@ import {
|
|
|
49
49
|
AudioPlayerContextProps,
|
|
50
50
|
AudioPlayerProvider,
|
|
51
51
|
} from '../../contexts/audioPlayerContext/AudioPlayerContext';
|
|
52
|
+
|
|
52
53
|
import { ChannelContextValue, ChannelProvider } from '../../contexts/channelContext/ChannelContext';
|
|
53
54
|
import type { UseChannelStateValue } from '../../contexts/channelsStateContext/useChannelState';
|
|
54
55
|
import { useChannelState } from '../../contexts/channelsStateContext/useChannelState';
|
|
@@ -111,6 +112,7 @@ import {
|
|
|
111
112
|
MessageStatusTypes,
|
|
112
113
|
ReactionData,
|
|
113
114
|
} from '../../utils/utils';
|
|
115
|
+
import { NotificationAnnouncer } from '../Accessibility/NotificationAnnouncer';
|
|
114
116
|
import { AttachmentPicker } from '../AttachmentPicker/AttachmentPicker';
|
|
115
117
|
import type { KeyboardCompatibleViewProps } from '../KeyboardCompatibleView/KeyboardControllerAvoidingView';
|
|
116
118
|
import { Emoji } from '../MessageMenu/EmojiPickerList';
|
|
@@ -1754,6 +1756,7 @@ const ChannelWithContext = (props: PropsWithChildren<ChannelPropsWithContext>) =
|
|
|
1754
1756
|
<MessageComposerProvider value={messageComposerContext}>
|
|
1755
1757
|
<MessageInputProvider value={inputMessageInputContext}>
|
|
1756
1758
|
<AudioPlayerProvider value={audioPlayerContext}>
|
|
1759
|
+
<NotificationAnnouncer />
|
|
1757
1760
|
<View style={{ height: '100%' }}>{children}</View>
|
|
1758
1761
|
<AttachmentPicker />
|
|
1759
1762
|
</AudioPlayerProvider>
|
|
@@ -5,6 +5,7 @@ import { LocalMessage, MessageResponse } from 'stream-chat';
|
|
|
5
5
|
|
|
6
6
|
import { ChannelPreviewProps } from './ChannelPreview';
|
|
7
7
|
|
|
8
|
+
import { useA11yLabel } from '../../a11y/hooks/useA11yLabel';
|
|
8
9
|
import { useChatContext } from '../../contexts/chatContext/ChatContext';
|
|
9
10
|
import { useTheme } from '../../contexts/themeContext/ThemeContext';
|
|
10
11
|
import { useTranslationContext } from '../../contexts/translationContext/TranslationContext';
|
|
@@ -61,6 +62,18 @@ export const ChannelMessagePreviewDeliveryStatus = ({
|
|
|
61
62
|
isReadEventsEnabled: readEvents,
|
|
62
63
|
});
|
|
63
64
|
|
|
65
|
+
const statusLabel = useA11yLabel(
|
|
66
|
+
message.status === MessageStatusTypes.SENDING
|
|
67
|
+
? 'a11y/Sending'
|
|
68
|
+
: message.status === MessageStatusTypes.RECEIVED && status === MessageDeliveryStatus.READ
|
|
69
|
+
? 'a11y/Read'
|
|
70
|
+
: status === MessageDeliveryStatus.DELIVERED
|
|
71
|
+
? 'a11y/Delivered'
|
|
72
|
+
: status === MessageDeliveryStatus.SENT
|
|
73
|
+
? 'a11y/Sent'
|
|
74
|
+
: 'a11y/Sending',
|
|
75
|
+
);
|
|
76
|
+
|
|
64
77
|
if (!channel.data?.name && membersWithoutSelf.length === 1 && !isLastMessageByCurrentUser) {
|
|
65
78
|
return null;
|
|
66
79
|
}
|
|
@@ -70,7 +83,7 @@ export const ChannelMessagePreviewDeliveryStatus = ({
|
|
|
70
83
|
}
|
|
71
84
|
|
|
72
85
|
return (
|
|
73
|
-
<View style={styles.container}>
|
|
86
|
+
<View accessibilityLabel={statusLabel} accessibilityRole='text' style={styles.container}>
|
|
74
87
|
{message.status === MessageStatusTypes.SENDING ? (
|
|
75
88
|
<Time stroke={semantics.chatTextTimestamp} height={16} width={16} {...timeIcon} />
|
|
76
89
|
) : message.status === MessageStatusTypes.RECEIVED &&
|
|
@@ -31,7 +31,11 @@ export const LoadingDots = (props: Props) => {
|
|
|
31
31
|
const offsetLength = duration / numberOfDots;
|
|
32
32
|
|
|
33
33
|
return (
|
|
34
|
-
<View
|
|
34
|
+
<View
|
|
35
|
+
accessibilityElementsHidden
|
|
36
|
+
importantForAccessibility='no-hide-descendants'
|
|
37
|
+
style={[{ flexDirection: 'row' }, container, style]}
|
|
38
|
+
>
|
|
35
39
|
{Array.from(Array(numberOfDots)).map((_item, index) => (
|
|
36
40
|
<LoadingDot
|
|
37
41
|
diameter={diameter}
|
|
@@ -16,7 +16,13 @@ const LoadingErrorWrapper = (props: React.PropsWithChildren<LoadingErrorWrapperP
|
|
|
16
16
|
const styles = useStyles();
|
|
17
17
|
|
|
18
18
|
return (
|
|
19
|
-
<TouchableOpacity
|
|
19
|
+
<TouchableOpacity
|
|
20
|
+
accessibilityHint={onPress ? 'Tap to retry' : undefined}
|
|
21
|
+
accessibilityLiveRegion='assertive'
|
|
22
|
+
accessibilityRole={onPress ? 'button' : 'alert'}
|
|
23
|
+
onPress={onPress}
|
|
24
|
+
style={styles.container}
|
|
25
|
+
>
|
|
20
26
|
<Text style={styles.errorText} testID='loading-error'>
|
|
21
27
|
{text}
|
|
22
28
|
</Text>
|
|
@@ -12,7 +12,7 @@ const LoadingIndicatorWrapper = ({ text }: LoadingIndicatorWrapperProps) => {
|
|
|
12
12
|
const styles = useStyles();
|
|
13
13
|
|
|
14
14
|
return (
|
|
15
|
-
<View style={styles.container}>
|
|
15
|
+
<View accessibilityLiveRegion='polite' accessibilityRole='progressbar' style={styles.container}>
|
|
16
16
|
<Spinner height={20} width={20} />
|
|
17
17
|
{text ? (
|
|
18
18
|
<Text style={styles.loadingText} testID='loading'>
|
|
@@ -36,13 +36,14 @@ exports[`AttachButton should call handleAttachButtonPress when the button is cli
|
|
|
36
36
|
}
|
|
37
37
|
>
|
|
38
38
|
<View
|
|
39
|
+
accessibilityRole="button"
|
|
39
40
|
accessibilityState={
|
|
40
41
|
{
|
|
41
42
|
"busy": undefined,
|
|
42
43
|
"checked": undefined,
|
|
43
44
|
"disabled": false,
|
|
44
45
|
"expanded": undefined,
|
|
45
|
-
"selected":
|
|
46
|
+
"selected": false,
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
accessibilityValue={
|
|
@@ -196,13 +197,14 @@ exports[`AttachButton should call handleAttachButtonPress when the button is cli
|
|
|
196
197
|
}
|
|
197
198
|
>
|
|
198
199
|
<View
|
|
200
|
+
accessibilityRole="button"
|
|
199
201
|
accessibilityState={
|
|
200
202
|
{
|
|
201
203
|
"busy": undefined,
|
|
202
204
|
"checked": undefined,
|
|
203
205
|
"disabled": false,
|
|
204
206
|
"expanded": undefined,
|
|
205
|
-
"selected":
|
|
207
|
+
"selected": false,
|
|
206
208
|
}
|
|
207
209
|
}
|
|
208
210
|
accessibilityValue={
|
|
@@ -335,13 +337,14 @@ exports[`AttachButton should call handleAttachButtonPress when the button is cli
|
|
|
335
337
|
}
|
|
336
338
|
>
|
|
337
339
|
<View
|
|
340
|
+
accessibilityRole="button"
|
|
338
341
|
accessibilityState={
|
|
339
342
|
{
|
|
340
343
|
"busy": undefined,
|
|
341
344
|
"checked": undefined,
|
|
342
345
|
"disabled": false,
|
|
343
346
|
"expanded": undefined,
|
|
344
|
-
"selected":
|
|
347
|
+
"selected": false,
|
|
345
348
|
}
|
|
346
349
|
}
|
|
347
350
|
accessibilityValue={
|
|
@@ -503,13 +506,14 @@ exports[`AttachButton should call handleAttachButtonPress when the button is cli
|
|
|
503
506
|
}
|
|
504
507
|
>
|
|
505
508
|
<View
|
|
509
|
+
accessibilityRole="button"
|
|
506
510
|
accessibilityState={
|
|
507
511
|
{
|
|
508
512
|
"busy": undefined,
|
|
509
513
|
"checked": undefined,
|
|
510
514
|
"disabled": false,
|
|
511
515
|
"expanded": undefined,
|
|
512
|
-
"selected":
|
|
516
|
+
"selected": false,
|
|
513
517
|
}
|
|
514
518
|
}
|
|
515
519
|
accessibilityValue={
|
|
@@ -638,13 +642,14 @@ exports[`AttachButton should call handleAttachButtonPress when the button is cli
|
|
|
638
642
|
}
|
|
639
643
|
>
|
|
640
644
|
<View
|
|
645
|
+
accessibilityRole="button"
|
|
641
646
|
accessibilityState={
|
|
642
647
|
{
|
|
643
648
|
"busy": undefined,
|
|
644
649
|
"checked": undefined,
|
|
645
650
|
"disabled": false,
|
|
646
651
|
"expanded": undefined,
|
|
647
|
-
"selected":
|
|
652
|
+
"selected": false,
|
|
648
653
|
}
|
|
649
654
|
}
|
|
650
655
|
accessibilityValue={
|
|
@@ -905,13 +910,14 @@ exports[`AttachButton should render a enabled AttachButton 1`] = `
|
|
|
905
910
|
}
|
|
906
911
|
>
|
|
907
912
|
<View
|
|
913
|
+
accessibilityRole="button"
|
|
908
914
|
accessibilityState={
|
|
909
915
|
{
|
|
910
916
|
"busy": undefined,
|
|
911
917
|
"checked": undefined,
|
|
912
918
|
"disabled": false,
|
|
913
919
|
"expanded": undefined,
|
|
914
|
-
"selected":
|
|
920
|
+
"selected": false,
|
|
915
921
|
}
|
|
916
922
|
}
|
|
917
923
|
accessibilityValue={
|
|
@@ -1065,13 +1071,14 @@ exports[`AttachButton should render a enabled AttachButton 1`] = `
|
|
|
1065
1071
|
}
|
|
1066
1072
|
>
|
|
1067
1073
|
<View
|
|
1074
|
+
accessibilityRole="button"
|
|
1068
1075
|
accessibilityState={
|
|
1069
1076
|
{
|
|
1070
1077
|
"busy": undefined,
|
|
1071
1078
|
"checked": undefined,
|
|
1072
1079
|
"disabled": false,
|
|
1073
1080
|
"expanded": undefined,
|
|
1074
|
-
"selected":
|
|
1081
|
+
"selected": false,
|
|
1075
1082
|
}
|
|
1076
1083
|
}
|
|
1077
1084
|
accessibilityValue={
|
|
@@ -1204,13 +1211,14 @@ exports[`AttachButton should render a enabled AttachButton 1`] = `
|
|
|
1204
1211
|
}
|
|
1205
1212
|
>
|
|
1206
1213
|
<View
|
|
1214
|
+
accessibilityRole="button"
|
|
1207
1215
|
accessibilityState={
|
|
1208
1216
|
{
|
|
1209
1217
|
"busy": undefined,
|
|
1210
1218
|
"checked": undefined,
|
|
1211
1219
|
"disabled": false,
|
|
1212
1220
|
"expanded": undefined,
|
|
1213
|
-
"selected":
|
|
1221
|
+
"selected": false,
|
|
1214
1222
|
}
|
|
1215
1223
|
}
|
|
1216
1224
|
accessibilityValue={
|
|
@@ -1372,13 +1380,14 @@ exports[`AttachButton should render a enabled AttachButton 1`] = `
|
|
|
1372
1380
|
}
|
|
1373
1381
|
>
|
|
1374
1382
|
<View
|
|
1383
|
+
accessibilityRole="button"
|
|
1375
1384
|
accessibilityState={
|
|
1376
1385
|
{
|
|
1377
1386
|
"busy": undefined,
|
|
1378
1387
|
"checked": undefined,
|
|
1379
1388
|
"disabled": false,
|
|
1380
1389
|
"expanded": undefined,
|
|
1381
|
-
"selected":
|
|
1390
|
+
"selected": false,
|
|
1382
1391
|
}
|
|
1383
1392
|
}
|
|
1384
1393
|
accessibilityValue={
|
|
@@ -1507,13 +1516,14 @@ exports[`AttachButton should render a enabled AttachButton 1`] = `
|
|
|
1507
1516
|
}
|
|
1508
1517
|
>
|
|
1509
1518
|
<View
|
|
1519
|
+
accessibilityRole="button"
|
|
1510
1520
|
accessibilityState={
|
|
1511
1521
|
{
|
|
1512
1522
|
"busy": undefined,
|
|
1513
1523
|
"checked": undefined,
|
|
1514
1524
|
"disabled": false,
|
|
1515
1525
|
"expanded": undefined,
|
|
1516
|
-
"selected":
|
|
1526
|
+
"selected": false,
|
|
1517
1527
|
}
|
|
1518
1528
|
}
|
|
1519
1529
|
accessibilityValue={
|
|
@@ -1774,13 +1784,14 @@ exports[`AttachButton should render an disabled AttachButton 1`] = `
|
|
|
1774
1784
|
}
|
|
1775
1785
|
>
|
|
1776
1786
|
<View
|
|
1787
|
+
accessibilityRole="button"
|
|
1777
1788
|
accessibilityState={
|
|
1778
1789
|
{
|
|
1779
1790
|
"busy": undefined,
|
|
1780
1791
|
"checked": undefined,
|
|
1781
1792
|
"disabled": true,
|
|
1782
1793
|
"expanded": undefined,
|
|
1783
|
-
"selected":
|
|
1794
|
+
"selected": false,
|
|
1784
1795
|
}
|
|
1785
1796
|
}
|
|
1786
1797
|
accessibilityValue={
|
|
@@ -1934,13 +1945,14 @@ exports[`AttachButton should render an disabled AttachButton 1`] = `
|
|
|
1934
1945
|
}
|
|
1935
1946
|
>
|
|
1936
1947
|
<View
|
|
1948
|
+
accessibilityRole="button"
|
|
1937
1949
|
accessibilityState={
|
|
1938
1950
|
{
|
|
1939
1951
|
"busy": undefined,
|
|
1940
1952
|
"checked": undefined,
|
|
1941
1953
|
"disabled": false,
|
|
1942
1954
|
"expanded": undefined,
|
|
1943
|
-
"selected":
|
|
1955
|
+
"selected": false,
|
|
1944
1956
|
}
|
|
1945
1957
|
}
|
|
1946
1958
|
accessibilityValue={
|
|
@@ -2073,13 +2085,14 @@ exports[`AttachButton should render an disabled AttachButton 1`] = `
|
|
|
2073
2085
|
}
|
|
2074
2086
|
>
|
|
2075
2087
|
<View
|
|
2088
|
+
accessibilityRole="button"
|
|
2076
2089
|
accessibilityState={
|
|
2077
2090
|
{
|
|
2078
2091
|
"busy": undefined,
|
|
2079
2092
|
"checked": undefined,
|
|
2080
2093
|
"disabled": false,
|
|
2081
2094
|
"expanded": undefined,
|
|
2082
|
-
"selected":
|
|
2095
|
+
"selected": false,
|
|
2083
2096
|
}
|
|
2084
2097
|
}
|
|
2085
2098
|
accessibilityValue={
|
|
@@ -2241,13 +2254,14 @@ exports[`AttachButton should render an disabled AttachButton 1`] = `
|
|
|
2241
2254
|
}
|
|
2242
2255
|
>
|
|
2243
2256
|
<View
|
|
2257
|
+
accessibilityRole="button"
|
|
2244
2258
|
accessibilityState={
|
|
2245
2259
|
{
|
|
2246
2260
|
"busy": undefined,
|
|
2247
2261
|
"checked": undefined,
|
|
2248
2262
|
"disabled": false,
|
|
2249
2263
|
"expanded": undefined,
|
|
2250
|
-
"selected":
|
|
2264
|
+
"selected": false,
|
|
2251
2265
|
}
|
|
2252
2266
|
}
|
|
2253
2267
|
accessibilityValue={
|
|
@@ -2376,13 +2390,14 @@ exports[`AttachButton should render an disabled AttachButton 1`] = `
|
|
|
2376
2390
|
}
|
|
2377
2391
|
>
|
|
2378
2392
|
<View
|
|
2393
|
+
accessibilityRole="button"
|
|
2379
2394
|
accessibilityState={
|
|
2380
2395
|
{
|
|
2381
2396
|
"busy": undefined,
|
|
2382
2397
|
"checked": undefined,
|
|
2383
2398
|
"disabled": false,
|
|
2384
2399
|
"expanded": undefined,
|
|
2385
|
-
"selected":
|
|
2400
|
+
"selected": false,
|
|
2386
2401
|
}
|
|
2387
2402
|
}
|
|
2388
2403
|
accessibilityValue={
|