@planningcenter/chat-react-native 3.42.3-qa-staging.0 → 3.42.3-qa-staging.2
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/build/components/conversation/attachments/attachment_card.d.ts +3 -3
- package/build/components/conversation/attachments/attachment_card.d.ts.map +1 -1
- package/build/components/conversation/attachments/attachment_card.js +3 -7
- package/build/components/conversation/attachments/attachment_card.js.map +1 -1
- package/build/components/conversation/attachments/attachment_deleting_overlay.d.ts +1 -2
- package/build/components/conversation/attachments/attachment_deleting_overlay.d.ts.map +1 -1
- package/build/components/conversation/attachments/attachment_deleting_overlay.js +12 -7
- package/build/components/conversation/attachments/attachment_deleting_overlay.js.map +1 -1
- package/build/components/conversation/attachments/audio_attachment.d.ts +1 -2
- package/build/components/conversation/attachments/audio_attachment.d.ts.map +1 -1
- package/build/components/conversation/attachments/audio_attachment.js +6 -23
- package/build/components/conversation/attachments/audio_attachment.js.map +1 -1
- package/build/components/conversation/attachments/expanded_link.d.ts +1 -2
- package/build/components/conversation/attachments/expanded_link.d.ts.map +1 -1
- package/build/components/conversation/attachments/expanded_link.js +2 -8
- package/build/components/conversation/attachments/expanded_link.js.map +1 -1
- package/build/components/conversation/attachments/generic_file_attachment.d.ts +1 -2
- package/build/components/conversation/attachments/generic_file_attachment.d.ts.map +1 -1
- package/build/components/conversation/attachments/generic_file_attachment.js +2 -12
- package/build/components/conversation/attachments/generic_file_attachment.js.map +1 -1
- package/build/components/conversation/attachments/giphy_attachment.d.ts +1 -2
- package/build/components/conversation/attachments/giphy_attachment.d.ts.map +1 -1
- package/build/components/conversation/attachments/giphy_attachment.js +2 -7
- package/build/components/conversation/attachments/giphy_attachment.js.map +1 -1
- package/build/components/conversation/attachments/image_attachment.d.ts +1 -2
- package/build/components/conversation/attachments/image_attachment.d.ts.map +1 -1
- package/build/components/conversation/attachments/image_attachment.js +16 -53
- package/build/components/conversation/attachments/image_attachment.js.map +1 -1
- package/build/components/conversation/attachments/video_attachment.d.ts +1 -2
- package/build/components/conversation/attachments/video_attachment.d.ts.map +1 -1
- package/build/components/conversation/attachments/video_attachment.js +3 -13
- package/build/components/conversation/attachments/video_attachment.js.map +1 -1
- package/build/components/conversation/conversation_start_banner.d.ts +1 -2
- package/build/components/conversation/conversation_start_banner.d.ts.map +1 -1
- package/build/components/conversation/conversation_start_banner.js +2 -14
- package/build/components/conversation/conversation_start_banner.js.map +1 -1
- package/build/components/conversation/empty_conversation_blank_state.d.ts +1 -1
- package/build/components/conversation/empty_conversation_blank_state.d.ts.map +1 -1
- package/build/components/conversation/empty_conversation_blank_state.js +2 -9
- package/build/components/conversation/empty_conversation_blank_state.js.map +1 -1
- package/build/components/conversation/jump_to_bottom_button.d.ts +1 -1
- package/build/components/conversation/jump_to_bottom_button.d.ts.map +1 -1
- package/build/components/conversation/jump_to_bottom_button.js +2 -10
- package/build/components/conversation/jump_to_bottom_button.js.map +1 -1
- package/build/components/conversation/message.d.ts +1 -2
- package/build/components/conversation/message.d.ts.map +1 -1
- package/build/components/conversation/message.js +2 -53
- package/build/components/conversation/message.js.map +1 -1
- package/build/components/conversation/message_attachments.d.ts +1 -2
- package/build/components/conversation/message_attachments.d.ts.map +1 -1
- package/build/components/conversation/message_attachments.js +17 -21
- package/build/components/conversation/message_attachments.js.map +1 -1
- package/build/components/conversation/message_form/message_form_attachment_file.d.ts +1 -2
- package/build/components/conversation/message_form/message_form_attachment_file.d.ts.map +1 -1
- package/build/components/conversation/message_form/message_form_attachment_file.js +2 -2
- package/build/components/conversation/message_form/message_form_attachment_file.js.map +1 -1
- package/build/components/conversation/message_form/message_form_attachment_image.d.ts +1 -2
- package/build/components/conversation/message_form/message_form_attachment_image.d.ts.map +1 -1
- package/build/components/conversation/message_form/message_form_attachment_image.js +2 -2
- package/build/components/conversation/message_form/message_form_attachment_image.js.map +1 -1
- package/build/components/conversation/message_form/message_form_attachment_video.d.ts +1 -2
- package/build/components/conversation/message_form/message_form_attachment_video.d.ts.map +1 -1
- package/build/components/conversation/message_form/message_form_attachment_video.js +2 -2
- package/build/components/conversation/message_form/message_form_attachment_video.js.map +1 -1
- package/build/components/conversation/message_form.d.ts +5 -6
- package/build/components/conversation/message_form.d.ts.map +1 -1
- package/build/components/conversation/message_form.js +20 -82
- package/build/components/conversation/message_form.js.map +1 -1
- package/build/components/conversation/message_markdown.d.ts +1 -2
- package/build/components/conversation/message_markdown.d.ts.map +1 -1
- package/build/components/conversation/message_markdown.js +8 -16
- package/build/components/conversation/message_markdown.js.map +1 -1
- package/build/components/conversation/message_reaction.d.ts +1 -2
- package/build/components/conversation/message_reaction.d.ts.map +1 -1
- package/build/components/conversation/message_reaction.js +3 -5
- package/build/components/conversation/message_reaction.js.map +1 -1
- package/build/components/conversation/message_read_receipts.d.ts +1 -2
- package/build/components/conversation/message_read_receipts.d.ts.map +1 -1
- package/build/components/conversation/message_read_receipts.js +3 -13
- package/build/components/conversation/message_read_receipts.js.map +1 -1
- package/build/components/conversation/messages_disabled_banners.d.ts +7 -3
- package/build/components/conversation/messages_disabled_banners.d.ts.map +1 -1
- package/build/components/conversation/messages_disabled_banners.js +11 -11
- package/build/components/conversation/messages_disabled_banners.js.map +1 -1
- package/build/components/conversation/reply_connectors.d.ts +2 -2
- package/build/components/conversation/reply_connectors.d.ts.map +1 -1
- package/build/components/conversation/reply_connectors.js +18 -50
- package/build/components/conversation/reply_connectors.js.map +1 -1
- package/build/components/conversation/reply_shadow_message.d.ts +1 -2
- package/build/components/conversation/reply_shadow_message.d.ts.map +1 -1
- package/build/components/conversation/reply_shadow_message.js +16 -46
- package/build/components/conversation/reply_shadow_message.js.map +1 -1
- package/build/components/conversation/system_message.d.ts +1 -2
- package/build/components/conversation/system_message.d.ts.map +1 -1
- package/build/components/conversation/system_message.js +3 -12
- package/build/components/conversation/system_message.js.map +1 -1
- package/build/components/conversation/typing_indicator.d.ts +1 -2
- package/build/components/conversation/typing_indicator.d.ts.map +1 -1
- package/build/components/conversation/typing_indicator.js +3 -13
- package/build/components/conversation/typing_indicator.js.map +1 -1
- package/build/components/conversations/conversation_actions.d.ts +2 -2
- package/build/components/conversations/conversation_actions.d.ts.map +1 -1
- package/build/components/conversations/conversation_actions.js +4 -10
- package/build/components/conversations/conversation_actions.js.map +1 -1
- package/build/components/conversations/conversation_preview.d.ts +2 -3
- package/build/components/conversations/conversation_preview.d.ts.map +1 -1
- package/build/components/conversations/conversation_preview.js +7 -37
- package/build/components/conversations/conversation_preview.js.map +1 -1
- package/build/components/conversations/conversations.d.ts +1 -1
- package/build/components/conversations/conversations.d.ts.map +1 -1
- package/build/components/conversations/conversations.js +16 -17
- package/build/components/conversations/conversations.js.map +1 -1
- package/build/components/conversations/conversations_blank_state.d.ts +1 -2
- package/build/components/conversations/conversations_blank_state.d.ts.map +1 -1
- package/build/components/conversations/conversations_blank_state.js +2 -12
- package/build/components/conversations/conversations_blank_state.js.map +1 -1
- package/build/components/conversations/mute_indicator.d.ts +1 -2
- package/build/components/conversations/mute_indicator.d.ts.map +1 -1
- package/build/components/conversations/mute_indicator.js +2 -2
- package/build/components/conversations/mute_indicator.js.map +1 -1
- package/build/components/conversations/swipeable_toggle_button.d.ts +1 -2
- package/build/components/conversations/swipeable_toggle_button.d.ts.map +1 -1
- package/build/components/conversations/swipeable_toggle_button.js +3 -10
- package/build/components/conversations/swipeable_toggle_button.js.map +1 -1
- package/build/components/conversations/unread_count_badge.d.ts +1 -2
- package/build/components/conversations/unread_count_badge.d.ts.map +1 -1
- package/build/components/conversations/unread_count_badge.js +3 -7
- package/build/components/conversations/unread_count_badge.js.map +1 -1
- package/build/components/display/action_button.d.ts +1 -1
- package/build/components/display/action_button.d.ts.map +1 -1
- package/build/components/display/action_button.js +3 -13
- package/build/components/display/action_button.js.map +1 -1
- package/build/components/display/adult_requirement_notice.d.ts +1 -2
- package/build/components/display/adult_requirement_notice.d.ts.map +1 -1
- package/build/components/display/adult_requirement_notice.js +2 -4
- package/build/components/display/adult_requirement_notice.js.map +1 -1
- package/build/components/display/avatar.d.ts +1 -2
- package/build/components/display/avatar.d.ts.map +1 -1
- package/build/components/display/avatar.js +2 -7
- package/build/components/display/avatar.js.map +1 -1
- package/build/components/display/avatar_group.d.ts +1 -2
- package/build/components/display/avatar_group.d.ts.map +1 -1
- package/build/components/display/avatar_group.js +2 -9
- package/build/components/display/avatar_group.js.map +1 -1
- package/build/components/display/badge.d.ts +1 -2
- package/build/components/display/badge.d.ts.map +1 -1
- package/build/components/display/badge.js +6 -37
- package/build/components/display/badge.js.map +1 -1
- package/build/components/display/banner.d.ts +3 -3
- package/build/components/display/banner.d.ts.map +1 -1
- package/build/components/display/banner.js +4 -11
- package/build/components/display/banner.js.map +1 -1
- package/build/components/display/banner_collapsible.d.ts +2 -2
- package/build/components/display/banner_collapsible.d.ts.map +1 -1
- package/build/components/display/banner_collapsible.js +2 -10
- package/build/components/display/banner_collapsible.js.map +1 -1
- package/build/components/display/button.d.ts +1 -2
- package/build/components/display/button.d.ts.map +1 -1
- package/build/components/display/button.js +3 -14
- package/build/components/display/button.js.map +1 -1
- package/build/components/display/child_notice.d.ts +1 -2
- package/build/components/display/child_notice.d.ts.map +1 -1
- package/build/components/display/child_notice.js +3 -15
- package/build/components/display/child_notice.js.map +1 -1
- package/build/components/display/conversation_avatar.d.ts +1 -2
- package/build/components/display/conversation_avatar.d.ts.map +1 -1
- package/build/components/display/conversation_avatar.js +5 -9
- package/build/components/display/conversation_avatar.js.map +1 -1
- package/build/components/display/emoji_avatar.d.ts +1 -2
- package/build/components/display/emoji_avatar.d.ts.map +1 -1
- package/build/components/display/emoji_avatar.js +2 -12
- package/build/components/display/emoji_avatar.js.map +1 -1
- package/build/components/display/file_attachment_preview.d.ts +1 -1
- package/build/components/display/file_attachment_preview.d.ts.map +1 -1
- package/build/components/display/file_attachment_preview.js +3 -17
- package/build/components/display/file_attachment_preview.js.map +1 -1
- package/build/components/display/heading.d.ts +1 -2
- package/build/components/display/heading.d.ts.map +1 -1
- package/build/components/display/heading.js +2 -4
- package/build/components/display/heading.js.map +1 -1
- package/build/components/display/icon.d.ts +1 -2
- package/build/components/display/icon.d.ts.map +1 -1
- package/build/components/display/icon.js +4 -4
- package/build/components/display/icon.js.map +1 -1
- package/build/components/display/icon_avatar.d.ts +1 -2
- package/build/components/display/icon_avatar.d.ts.map +1 -1
- package/build/components/display/icon_avatar.js +2 -12
- package/build/components/display/icon_avatar.js.map +1 -1
- package/build/components/display/icon_button.d.ts +1 -2
- package/build/components/display/icon_button.d.ts.map +1 -1
- package/build/components/display/icon_button.js +3 -5
- package/build/components/display/icon_button.js.map +1 -1
- package/build/components/display/image.d.ts +1 -2
- package/build/components/display/image.d.ts.map +1 -1
- package/build/components/display/image.js +3 -7
- package/build/components/display/image.js.map +1 -1
- package/build/components/display/image_attachment_preview.d.ts +1 -1
- package/build/components/display/image_attachment_preview.d.ts.map +1 -1
- package/build/components/display/image_attachment_preview.js +2 -7
- package/build/components/display/image_attachment_preview.js.map +1 -1
- package/build/components/display/keyboard_view.d.ts +1 -2
- package/build/components/display/keyboard_view.d.ts.map +1 -1
- package/build/components/display/keyboard_view.js +4 -9
- package/build/components/display/keyboard_view.js.map +1 -1
- package/build/components/display/person.d.ts +1 -2
- package/build/components/display/person.d.ts.map +1 -1
- package/build/components/display/person.js +2 -12
- package/build/components/display/person.js.map +1 -1
- package/build/components/display/platform_modal_header_buttons.d.ts +3 -3
- package/build/components/display/platform_modal_header_buttons.d.ts.map +1 -1
- package/build/components/display/platform_modal_header_buttons.js +5 -10
- package/build/components/display/platform_modal_header_buttons.js.map +1 -1
- package/build/components/display/pressable_row.d.ts +1 -1
- package/build/components/display/pressable_row.d.ts.map +1 -1
- package/build/components/display/pressable_row.js +2 -7
- package/build/components/display/pressable_row.js.map +1 -1
- package/build/components/display/spinner.d.ts +1 -2
- package/build/components/display/spinner.d.ts.map +1 -1
- package/build/components/display/spinner.js +3 -9
- package/build/components/display/spinner.js.map +1 -1
- package/build/components/display/switch.d.ts +1 -2
- package/build/components/display/switch.d.ts.map +1 -1
- package/build/components/display/switch.js +2 -2
- package/build/components/display/switch.js.map +1 -1
- package/build/components/display/tabs.d.ts +1 -1
- package/build/components/display/tabs.d.ts.map +1 -1
- package/build/components/display/tabs.js +21 -31
- package/build/components/display/tabs.js.map +1 -1
- package/build/components/display/text.d.ts +1 -2
- package/build/components/display/text.d.ts.map +1 -1
- package/build/components/display/text.js +2 -4
- package/build/components/display/text.js.map +1 -1
- package/build/components/display/text_button.d.ts +1 -2
- package/build/components/display/text_button.d.ts.map +1 -1
- package/build/components/display/text_button.js +3 -8
- package/build/components/display/text_button.js.map +1 -1
- package/build/components/display/text_inline_button.d.ts +1 -2
- package/build/components/display/text_inline_button.d.ts.map +1 -1
- package/build/components/display/text_inline_button.js +4 -5
- package/build/components/display/text_inline_button.js.map +1 -1
- package/build/components/display/text_input.d.ts +1 -1
- package/build/components/display/text_input.d.ts.map +1 -1
- package/build/components/display/text_input.js +2 -1
- package/build/components/display/text_input.js.map +1 -1
- package/build/components/display/toggle_button.d.ts +1 -2
- package/build/components/display/toggle_button.d.ts.map +1 -1
- package/build/components/display/toggle_button.js +3 -9
- package/build/components/display/toggle_button.js.map +1 -1
- package/build/components/display/video_attachment_preview.d.ts +1 -1
- package/build/components/display/video_attachment_preview.d.ts.map +1 -1
- package/build/components/display/video_attachment_preview.js +3 -20
- package/build/components/display/video_attachment_preview.js.map +1 -1
- package/build/components/group_conversation_list.d.ts +1 -1
- package/build/components/group_conversation_list.d.ts.map +1 -1
- package/build/components/group_conversation_list.js +4 -14
- package/build/components/group_conversation_list.js.map +1 -1
- package/build/components/page/component_error_boundary.d.ts +2 -2
- package/build/components/page/component_error_boundary.d.ts.map +1 -1
- package/build/components/page/component_error_boundary.js +2 -4
- package/build/components/page/component_error_boundary.js.map +1 -1
- package/build/components/page/loading.d.ts +1 -2
- package/build/components/page/loading.d.ts.map +1 -1
- package/build/components/page/loading.js +2 -4
- package/build/components/page/loading.js.map +1 -1
- package/build/components/page/page_error_boundary.d.ts +2 -2
- package/build/components/page/page_error_boundary.d.ts.map +1 -1
- package/build/components/page/page_error_boundary.js +11 -32
- package/build/components/page/page_error_boundary.js.map +1 -1
- package/build/components/primitive/avatar_primitive.js +14 -41
- package/build/components/primitive/avatar_primitive.js.map +1 -1
- package/build/components/primitive/banner_primitive.js +10 -18
- package/build/components/primitive/banner_primitive.js.map +1 -1
- package/build/components/primitive/blank_state_primitive.js +8 -12
- package/build/components/primitive/blank_state_primitive.js.map +1 -1
- package/build/components/primitive/form_sheet.d.ts +1 -1
- package/build/components/primitive/form_sheet.d.ts.map +1 -1
- package/build/components/primitive/form_sheet.js +9 -22
- package/build/components/primitive/form_sheet.js.map +1 -1
- package/build/components/safe_area_modal.d.ts +1 -1
- package/build/components/safe_area_modal.d.ts.map +1 -1
- package/build/components/safe_area_modal.js +2 -3
- package/build/components/safe_area_modal.js.map +1 -1
- package/build/contexts/api_provider.d.ts +1 -2
- package/build/contexts/api_provider.d.ts.map +1 -1
- package/build/contexts/api_provider.js +3 -5
- package/build/contexts/api_provider.js.map +1 -1
- package/build/contexts/chat_context.d.ts +2 -1
- package/build/contexts/chat_context.d.ts.map +1 -1
- package/build/contexts/chat_context.js +9 -2
- package/build/contexts/chat_context.js.map +1 -1
- package/build/contexts/conversation_context.d.ts +2 -2
- package/build/contexts/conversation_context.d.ts.map +1 -1
- package/build/contexts/conversation_context.js +3 -2
- package/build/contexts/conversation_context.js.map +1 -1
- package/build/contexts/conversations_context.d.ts +2 -2
- package/build/contexts/conversations_context.d.ts.map +1 -1
- package/build/contexts/conversations_context.js +3 -2
- package/build/contexts/conversations_context.js.map +1 -1
- package/build/contexts/session_context.d.ts +1 -1
- package/build/contexts/session_context.d.ts.map +1 -1
- package/build/contexts/session_context.js +3 -2
- package/build/contexts/session_context.js.map +1 -1
- package/build/hooks/direct_messages/find_direct_message_conversation.d.ts +14 -0
- package/build/hooks/direct_messages/find_direct_message_conversation.d.ts.map +1 -0
- package/build/hooks/direct_messages/find_direct_message_conversation.js +10 -0
- package/build/hooks/direct_messages/find_direct_message_conversation.js.map +1 -0
- package/build/hooks/direct_messages/resolve_message_available_members_link.d.ts +16 -0
- package/build/hooks/direct_messages/resolve_message_available_members_link.d.ts.map +1 -0
- package/build/hooks/direct_messages/resolve_message_available_members_link.js +24 -0
- package/build/hooks/direct_messages/resolve_message_available_members_link.js.map +1 -0
- package/build/hooks/direct_messages/use_find_or_create_direct_message_conversation.d.ts.map +1 -1
- package/build/hooks/direct_messages/use_find_or_create_direct_message_conversation.js +1 -8
- package/build/hooks/direct_messages/use_find_or_create_direct_message_conversation.js.map +1 -1
- package/build/hooks/direct_messages/use_message_available_members.d.ts +6 -0
- package/build/hooks/direct_messages/use_message_available_members.d.ts.map +1 -0
- package/build/hooks/direct_messages/use_message_available_members.js +40 -0
- package/build/hooks/direct_messages/use_message_available_members.js.map +1 -0
- package/build/hooks/direct_messages/use_message_available_members_action.d.ts +6 -0
- package/build/hooks/direct_messages/use_message_available_members_action.d.ts.map +1 -0
- package/build/hooks/direct_messages/use_message_available_members_action.js +30 -0
- package/build/hooks/direct_messages/use_message_available_members_action.js.map +1 -0
- package/build/hooks/index.d.ts +1 -1
- package/build/hooks/index.d.ts.map +1 -1
- package/build/hooks/index.js +1 -1
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/use_animated_message_background_color.d.ts +2 -2
- package/build/hooks/use_conversation.d.ts +1 -1
- package/build/hooks/use_conversation.d.ts.map +1 -1
- package/build/hooks/use_conversation.js +1 -0
- package/build/hooks/use_conversation.js.map +1 -1
- package/build/hooks/use_conversation_membership.d.ts +1 -1
- package/build/hooks/use_conversation_membership.d.ts.map +1 -1
- package/build/hooks/use_conversations_actions.d.ts +36 -36
- package/build/hooks/use_current_person.d.ts.map +1 -1
- package/build/hooks/use_current_person.js +1 -0
- package/build/hooks/use_current_person.js.map +1 -1
- package/build/hooks/use_direct_messages_eligible.d.ts +2 -0
- package/build/hooks/use_direct_messages_eligible.d.ts.map +1 -0
- package/build/hooks/use_direct_messages_eligible.js +9 -0
- package/build/hooks/use_direct_messages_eligible.js.map +1 -0
- package/build/hooks/use_features.d.ts +0 -1
- package/build/hooks/use_features.d.ts.map +1 -1
- package/build/hooks/use_features.js +0 -1
- package/build/hooks/use_features.js.map +1 -1
- package/build/hooks/use_person_settings.d.ts +1 -1
- package/build/index.d.ts +2 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js.map +1 -1
- package/build/navigation/chat_access_gate.d.ts +2 -2
- package/build/navigation/chat_access_gate.d.ts.map +1 -1
- package/build/navigation/chat_access_gate.js +6 -5
- package/build/navigation/chat_access_gate.js.map +1 -1
- package/build/navigation/index.d.ts +37 -39
- package/build/navigation/index.d.ts.map +1 -1
- package/build/navigation/index.js +21 -23
- package/build/navigation/index.js.map +1 -1
- package/build/navigation/screenLayout.d.ts +2 -2
- package/build/navigation/screenLayout.d.ts.map +1 -1
- package/build/navigation/screenLayout.js +3 -9
- package/build/navigation/screenLayout.js.map +1 -1
- package/build/polyfills/events/EventTarget.d.ts +1 -1
- package/build/polyfills/events/EventTarget.d.ts.map +1 -1
- package/build/polyfills/events/EventTarget.js.map +1 -1
- package/build/screens/age_check/age_check_required_screen.d.ts +1 -2
- package/build/screens/age_check/age_check_required_screen.d.ts.map +1 -1
- package/build/screens/age_check/age_check_required_screen.js +3 -46
- package/build/screens/age_check/age_check_required_screen.js.map +1 -1
- package/build/screens/age_check/age_check_underage_screen.d.ts +1 -2
- package/build/screens/age_check/age_check_underage_screen.d.ts.map +1 -1
- package/build/screens/age_check/age_check_underage_screen.js +2 -25
- package/build/screens/age_check/age_check_underage_screen.js.map +1 -1
- package/build/screens/age_check/components/age_check_select_birthdate_modal.d.ts +1 -2
- package/build/screens/age_check/components/age_check_select_birthdate_modal.d.ts.map +1 -1
- package/build/screens/age_check/components/age_check_select_birthdate_modal.js +6 -25
- package/build/screens/age_check/components/age_check_select_birthdate_modal.js.map +1 -1
- package/build/screens/attachment_actions/attachment_actions_screen.d.ts +1 -2
- package/build/screens/attachment_actions/attachment_actions_screen.d.ts.map +1 -1
- package/build/screens/attachment_actions/attachment_actions_screen.js +3 -5
- package/build/screens/attachment_actions/attachment_actions_screen.js.map +1 -1
- package/build/screens/avatar_picker/avatar_picker_screen.d.ts +1 -2
- package/build/screens/avatar_picker/avatar_picker_screen.d.ts.map +1 -1
- package/build/screens/avatar_picker/avatar_picker_screen.js +9 -36
- package/build/screens/avatar_picker/avatar_picker_screen.js.map +1 -1
- package/build/screens/avatar_picker/avatar_preview.d.ts +1 -1
- package/build/screens/avatar_picker/avatar_preview.d.ts.map +1 -1
- package/build/screens/avatar_picker/avatar_preview.js +5 -9
- package/build/screens/avatar_picker/avatar_preview.js.map +1 -1
- package/build/screens/avatar_picker/color_picker.d.ts +1 -2
- package/build/screens/avatar_picker/color_picker.d.ts.map +1 -1
- package/build/screens/avatar_picker/color_picker.js +4 -5
- package/build/screens/avatar_picker/color_picker.js.map +1 -1
- package/build/screens/avatar_picker/emoji_tab.d.ts +1 -2
- package/build/screens/avatar_picker/emoji_tab.d.ts.map +1 -1
- package/build/screens/avatar_picker/emoji_tab.js +12 -13
- package/build/screens/avatar_picker/emoji_tab.js.map +1 -1
- package/build/screens/avatar_picker/icon_grid.d.ts +1 -2
- package/build/screens/avatar_picker/icon_grid.d.ts.map +1 -1
- package/build/screens/avatar_picker/icon_grid.js +4 -5
- package/build/screens/avatar_picker/icon_grid.js.map +1 -1
- package/build/screens/avatar_picker/upload_tab.d.ts +1 -2
- package/build/screens/avatar_picker/upload_tab.d.ts.map +1 -1
- package/build/screens/avatar_picker/upload_tab.js +3 -4
- package/build/screens/avatar_picker/upload_tab.js.map +1 -1
- package/build/screens/bug_report_screen.d.ts +1 -2
- package/build/screens/bug_report_screen.d.ts.map +1 -1
- package/build/screens/bug_report_screen.js +11 -117
- package/build/screens/bug_report_screen.js.map +1 -1
- package/build/screens/conversation/message_read_receipts_screen.d.ts +1 -2
- package/build/screens/conversation/message_read_receipts_screen.d.ts.map +1 -1
- package/build/screens/conversation/message_read_receipts_screen.js +4 -20
- package/build/screens/conversation/message_read_receipts_screen.js.map +1 -1
- package/build/screens/conversation_details_screen.d.ts +1 -2
- package/build/screens/conversation_details_screen.d.ts.map +1 -1
- package/build/screens/conversation_details_screen.js +43 -106
- package/build/screens/conversation_details_screen.js.map +1 -1
- package/build/screens/conversation_filter_recipients/components/checkbox_row.d.ts +1 -1
- package/build/screens/conversation_filter_recipients/components/checkbox_row.d.ts.map +1 -1
- package/build/screens/conversation_filter_recipients/components/checkbox_row.js +3 -9
- package/build/screens/conversation_filter_recipients/components/checkbox_row.js.map +1 -1
- package/build/screens/conversation_filter_recipients/components/header_row.d.ts +1 -1
- package/build/screens/conversation_filter_recipients/components/header_row.d.ts.map +1 -1
- package/build/screens/conversation_filter_recipients/components/header_row.js +2 -12
- package/build/screens/conversation_filter_recipients/components/header_row.js.map +1 -1
- package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.d.ts +1 -2
- package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.d.ts.map +1 -1
- package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.js +20 -44
- package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.js.map +1 -1
- package/build/screens/conversation_filters/components/conversation_filters.d.ts +1 -2
- package/build/screens/conversation_filters/components/conversation_filters.d.ts.map +1 -1
- package/build/screens/conversation_filters/components/conversation_filters.js +13 -14
- package/build/screens/conversation_filters/components/conversation_filters.js.map +1 -1
- package/build/screens/conversation_filters/components/rows.d.ts +6 -6
- package/build/screens/conversation_filters/components/rows.d.ts.map +1 -1
- package/build/screens/conversation_filters/components/rows.js +7 -34
- package/build/screens/conversation_filters/components/rows.js.map +1 -1
- package/build/screens/conversation_filters/context/conversation_filter_context.d.ts +1 -1
- package/build/screens/conversation_filters/context/conversation_filter_context.d.ts.map +1 -1
- package/build/screens/conversation_filters/context/conversation_filter_context.js +2 -1
- package/build/screens/conversation_filters/context/conversation_filter_context.js.map +1 -1
- package/build/screens/conversation_filters/group_filters.d.ts +1 -2
- package/build/screens/conversation_filters/group_filters.d.ts.map +1 -1
- package/build/screens/conversation_filters/group_filters.js +2 -2
- package/build/screens/conversation_filters/group_filters.js.map +1 -1
- package/build/screens/conversation_filters/team_filters.d.ts +1 -2
- package/build/screens/conversation_filters/team_filters.d.ts.map +1 -1
- package/build/screens/conversation_filters/team_filters.js +2 -2
- package/build/screens/conversation_filters/team_filters.js.map +1 -1
- package/build/screens/conversation_filters_screen.d.ts +1 -2
- package/build/screens/conversation_filters_screen.d.ts.map +1 -1
- package/build/screens/conversation_filters_screen.js +4 -16
- package/build/screens/conversation_filters_screen.js.map +1 -1
- package/build/screens/conversation_new/components/avatar_selection_row.d.ts +2 -3
- package/build/screens/conversation_new/components/avatar_selection_row.d.ts.map +1 -1
- package/build/screens/conversation_new/components/avatar_selection_row.js +6 -16
- package/build/screens/conversation_new/components/avatar_selection_row.js.map +1 -1
- package/build/screens/conversation_new/components/filter_by_plan.d.ts +3 -4
- package/build/screens/conversation_new/components/filter_by_plan.d.ts.map +1 -1
- package/build/screens/conversation_new/components/filter_by_plan.js +22 -46
- package/build/screens/conversation_new/components/filter_by_plan.js.map +1 -1
- package/build/screens/conversation_new/components/form_list.d.ts +2 -3
- package/build/screens/conversation_new/components/form_list.d.ts.map +1 -1
- package/build/screens/conversation_new/components/form_list.js +4 -6
- package/build/screens/conversation_new/components/form_list.js.map +1 -1
- package/build/screens/conversation_new/components/gender_filter_toggle.d.ts +1 -2
- package/build/screens/conversation_new/components/gender_filter_toggle.d.ts.map +1 -1
- package/build/screens/conversation_new/components/gender_filter_toggle.js +4 -20
- package/build/screens/conversation_new/components/gender_filter_toggle.js.map +1 -1
- package/build/screens/conversation_new/components/groups_form.d.ts +1 -2
- package/build/screens/conversation_new/components/groups_form.d.ts.map +1 -1
- package/build/screens/conversation_new/components/groups_form.js +4 -30
- package/build/screens/conversation_new/components/groups_form.js.map +1 -1
- package/build/screens/conversation_new/components/services_form.d.ts +1 -2
- package/build/screens/conversation_new/components/services_form.d.ts.map +1 -1
- package/build/screens/conversation_new/components/services_form.js +27 -61
- package/build/screens/conversation_new/components/services_form.js.map +1 -1
- package/build/screens/conversation_new/components/source_app_error_card.d.ts +1 -1
- package/build/screens/conversation_new/components/source_app_error_card.d.ts.map +1 -1
- package/build/screens/conversation_new/components/source_app_error_card.js +2 -3
- package/build/screens/conversation_new/components/source_app_error_card.js.map +1 -1
- package/build/screens/conversation_new/conversation_new_screen.d.ts +1 -2
- package/build/screens/conversation_new/conversation_new_screen.d.ts.map +1 -1
- package/build/screens/conversation_new/conversation_new_screen.js +4 -4
- package/build/screens/conversation_new/conversation_new_screen.js.map +1 -1
- package/build/screens/conversation_notification_level_select_screen.d.ts +1 -2
- package/build/screens/conversation_notification_level_select_screen.d.ts.map +1 -1
- package/build/screens/conversation_notification_level_select_screen.js +4 -6
- package/build/screens/conversation_notification_level_select_screen.js.map +1 -1
- package/build/screens/conversation_screen.d.ts +2 -3
- package/build/screens/conversation_screen.d.ts.map +1 -1
- package/build/screens/conversation_screen.js +26 -65
- package/build/screens/conversation_screen.js.map +1 -1
- package/build/screens/conversation_select_recipients/components/groups_recipient_row.d.ts +1 -1
- package/build/screens/conversation_select_recipients/components/groups_recipient_row.d.ts.map +1 -1
- package/build/screens/conversation_select_recipients/components/groups_recipient_row.js +2 -1
- package/build/screens/conversation_select_recipients/components/groups_recipient_row.js.map +1 -1
- package/build/screens/conversation_select_recipients/components/recipient_link_row.d.ts +1 -2
- package/build/screens/conversation_select_recipients/components/recipient_link_row.d.ts.map +1 -1
- package/build/screens/conversation_select_recipients/components/recipient_link_row.js +2 -15
- package/build/screens/conversation_select_recipients/components/recipient_link_row.js.map +1 -1
- package/build/screens/conversation_select_recipients/components/restricted_group_row.d.ts +1 -2
- package/build/screens/conversation_select_recipients/components/restricted_group_row.d.ts.map +1 -1
- package/build/screens/conversation_select_recipients/components/restricted_group_row.js +2 -14
- package/build/screens/conversation_select_recipients/components/restricted_group_row.js.map +1 -1
- package/build/screens/conversation_select_recipients/components/team_recipient_row.d.ts +1 -1
- package/build/screens/conversation_select_recipients/components/team_recipient_row.d.ts.map +1 -1
- package/build/screens/conversation_select_recipients/components/team_recipient_row.js +2 -1
- package/build/screens/conversation_select_recipients/components/team_recipient_row.js.map +1 -1
- package/build/screens/conversation_select_recipients/components/view_more_link_row.d.ts +1 -1
- package/build/screens/conversation_select_recipients/components/view_more_link_row.d.ts.map +1 -1
- package/build/screens/conversation_select_recipients/components/view_more_link_row.js +2 -5
- package/build/screens/conversation_select_recipients/components/view_more_link_row.js.map +1 -1
- package/build/screens/conversation_select_recipients/conversation_new_entry_screen.d.ts +1 -2
- package/build/screens/conversation_select_recipients/conversation_new_entry_screen.d.ts.map +1 -1
- package/build/screens/conversation_select_recipients/conversation_new_entry_screen.js +4 -11
- package/build/screens/conversation_select_recipients/conversation_new_entry_screen.js.map +1 -1
- package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.d.ts +1 -1
- package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.d.ts.map +1 -1
- package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.js +24 -85
- package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.js.map +1 -1
- package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.d.ts +1 -2
- package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.d.ts.map +1 -1
- package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.js +7 -14
- package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.js.map +1 -1
- package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.d.ts +1 -2
- package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.d.ts.map +1 -1
- package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.js +15 -18
- package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.js.map +1 -1
- package/build/screens/conversation_select_recipients/types/screen_props.d.ts +2 -0
- package/build/screens/conversation_select_recipients/types/screen_props.d.ts.map +1 -1
- package/build/screens/conversation_select_recipients/types/screen_props.js.map +1 -1
- package/build/screens/conversation_select_type_screen.d.ts +1 -2
- package/build/screens/conversation_select_type_screen.d.ts.map +1 -1
- package/build/screens/conversation_select_type_screen.js +7 -17
- package/build/screens/conversation_select_type_screen.js.map +1 -1
- package/build/screens/conversations/components/chat_group_badge.d.ts +1 -2
- package/build/screens/conversations/components/chat_group_badge.d.ts.map +1 -1
- package/build/screens/conversations/components/chat_group_badge.js +3 -4
- package/build/screens/conversations/components/chat_group_badge.js.map +1 -1
- package/build/screens/conversations/components/list_header_action_button.d.ts +1 -2
- package/build/screens/conversations/components/list_header_action_button.d.ts.map +1 -1
- package/build/screens/conversations/components/list_header_action_button.js +3 -5
- package/build/screens/conversations/components/list_header_action_button.js.map +1 -1
- package/build/screens/conversations/components/list_header_component.d.ts +1 -2
- package/build/screens/conversations/components/list_header_component.d.ts.map +1 -1
- package/build/screens/conversations/components/list_header_component.js +22 -45
- package/build/screens/conversations/components/list_header_component.js.map +1 -1
- package/build/screens/conversations/conversations_screen.d.ts +1 -2
- package/build/screens/conversations/conversations_screen.d.ts.map +1 -1
- package/build/screens/conversations/conversations_screen.js +2 -6
- package/build/screens/conversations/conversations_screen.js.map +1 -1
- package/build/screens/design_system_screen.d.ts +1 -2
- package/build/screens/design_system_screen.d.ts.map +1 -1
- package/build/screens/design_system_screen.js +35 -558
- package/build/screens/design_system_screen.js.map +1 -1
- package/build/screens/get_help_screen.d.ts +1 -1
- package/build/screens/get_help_screen.d.ts.map +1 -1
- package/build/screens/get_help_screen.js +4 -25
- package/build/screens/get_help_screen.js.map +1 -1
- package/build/screens/group_notification_level_select_screen.d.ts +1 -2
- package/build/screens/group_notification_level_select_screen.d.ts.map +1 -1
- package/build/screens/group_notification_level_select_screen.js +2 -4
- package/build/screens/group_notification_level_select_screen.js.map +1 -1
- package/build/screens/group_notification_settings_screen.d.ts +1 -2
- package/build/screens/group_notification_settings_screen.d.ts.map +1 -1
- package/build/screens/group_notification_settings_screen.js +3 -25
- package/build/screens/group_notification_settings_screen.js.map +1 -1
- package/build/screens/message_actions_screen.d.ts +1 -2
- package/build/screens/message_actions_screen.d.ts.map +1 -1
- package/build/screens/message_actions_screen.js +12 -28
- package/build/screens/message_actions_screen.js.map +1 -1
- package/build/screens/message_report/components/message_preview.d.ts +1 -2
- package/build/screens/message_report/components/message_preview.d.ts.map +1 -1
- package/build/screens/message_report/components/message_preview.js +2 -22
- package/build/screens/message_report/components/message_preview.js.map +1 -1
- package/build/screens/message_report/components/report_reason_list.d.ts +1 -2
- package/build/screens/message_report/components/report_reason_list.d.ts.map +1 -1
- package/build/screens/message_report/components/report_reason_list.js +4 -13
- package/build/screens/message_report/components/report_reason_list.js.map +1 -1
- package/build/screens/message_report_screen.d.ts +1 -2
- package/build/screens/message_report_screen.d.ts.map +1 -1
- package/build/screens/message_report_screen.js +9 -61
- package/build/screens/message_report_screen.js.map +1 -1
- package/build/screens/not_found.d.ts +1 -2
- package/build/screens/not_found.d.ts.map +1 -1
- package/build/screens/not_found.js +2 -5
- package/build/screens/not_found.js.map +1 -1
- package/build/screens/notification_settings/hooks/groups.d.ts +1 -1
- package/build/screens/notification_settings/hooks/groups.d.ts.map +1 -1
- package/build/screens/notification_settings_screen.d.ts +1 -2
- package/build/screens/notification_settings_screen.d.ts.map +1 -1
- package/build/screens/notification_settings_screen.js +28 -66
- package/build/screens/notification_settings_screen.js.map +1 -1
- package/build/screens/preferred_app_selection_screen.d.ts +1 -2
- package/build/screens/preferred_app_selection_screen.d.ts.map +1 -1
- package/build/screens/preferred_app_selection_screen.js +3 -21
- package/build/screens/preferred_app_selection_screen.js.map +1 -1
- package/build/screens/reactions_screen.d.ts +1 -2
- package/build/screens/reactions_screen.d.ts.map +1 -1
- package/build/screens/reactions_screen.js +7 -19
- package/build/screens/reactions_screen.js.map +1 -1
- package/build/screens/send_giphy_screen.d.ts +1 -2
- package/build/screens/send_giphy_screen.d.ts.map +1 -1
- package/build/screens/send_giphy_screen.js +5 -31
- package/build/screens/send_giphy_screen.js.map +1 -1
- package/build/screens/settings_screen.d.ts +1 -2
- package/build/screens/settings_screen.d.ts.map +1 -1
- package/build/screens/settings_screen.js +6 -28
- package/build/screens/settings_screen.js.map +1 -1
- package/build/screens/system_message_people_screen.d.ts +1 -2
- package/build/screens/system_message_people_screen.d.ts.map +1 -1
- package/build/screens/system_message_people_screen.js +4 -10
- package/build/screens/system_message_people_screen.js.map +1 -1
- package/build/screens/team_conversation_screen.d.ts +1 -1
- package/build/screens/team_conversation_screen.d.ts.map +1 -1
- package/build/screens/team_conversation_screen.js +4 -12
- package/build/screens/team_conversation_screen.js.map +1 -1
- package/build/types/resources/direct_message_candidate.d.ts +1 -0
- package/build/types/resources/direct_message_candidate.d.ts.map +1 -1
- package/build/types/resources/direct_message_candidate.js.map +1 -1
- package/build/types/resources/member.d.ts +1 -0
- package/build/types/resources/member.d.ts.map +1 -1
- package/build/types/resources/member.js.map +1 -1
- package/build/types/resources/member_ability.d.ts +1 -0
- package/build/types/resources/member_ability.d.ts.map +1 -1
- package/build/types/resources/member_ability.js.map +1 -1
- package/build/types/resources/person.d.ts +1 -0
- package/build/types/resources/person.d.ts.map +1 -1
- package/build/types/resources/person.js.map +1 -1
- package/build/utils/index.d.ts +1 -0
- package/build/utils/index.d.ts.map +1 -1
- package/build/utils/index.js +1 -0
- package/build/utils/index.js.map +1 -1
- package/build/utils/liquid_glass.d.ts +3 -0
- package/build/utils/liquid_glass.d.ts.map +1 -0
- package/build/utils/liquid_glass.js +9 -0
- package/build/utils/liquid_glass.js.map +1 -0
- package/build/utils/sha_256.js.map +1 -1
- package/build/utils/system_messages.d.ts +1 -1
- package/build/utils/system_messages.d.ts.map +1 -1
- package/build/utils/system_messages.js.map +1 -1
- package/build/utils/theme.d.ts +2 -2
- package/build/utils/theme.d.ts.map +1 -1
- package/build/utils/theme.js +1 -1
- package/build/utils/theme.js.map +1 -1
- package/package.json +12 -12
- package/src/__tests__/hooks/resolve_message_available_members_link.test.ts +72 -0
- package/src/__tests__/hooks/use_attachment_uploader.test.tsx +1 -0
- package/src/__tests__/hooks/use_direct_messages_eligible.test.tsx +77 -0
- package/src/__tests__/hooks/use_font_scale.test.ts +7 -3
- package/src/__tests__/utils/liquid_glass.ts +40 -0
- package/src/__tests__/utils/native_adapters/configuration.ts +1 -1
- package/src/__tests__/utils/system_messages.ts +1 -1
- package/src/__tests__/utils/uri.ts +8 -50
- package/src/__utils__/handlers.ts +5 -6
- package/src/components/conversation/attachments/attachment_deleting_overlay.tsx +10 -3
- package/src/components/conversation/messages_disabled_banners.tsx +31 -4
- package/src/components/page/__tests__/component_error_boundary.test.tsx +1 -1
- package/src/components/page/__tests__/error_boundary.test.tsx +6 -2
- package/src/components/page/__tests__/page_error_boundary.test.tsx +1 -1
- package/src/contexts/chat_context.tsx +8 -0
- package/src/hooks/direct_messages/find_direct_message_conversation.ts +16 -0
- package/src/hooks/direct_messages/resolve_message_available_members_link.ts +42 -0
- package/src/hooks/direct_messages/use_find_or_create_direct_message_conversation.ts +2 -11
- package/src/hooks/direct_messages/use_message_available_members.ts +65 -0
- package/src/hooks/direct_messages/use_message_available_members_action.ts +34 -0
- package/src/hooks/index.ts +1 -1
- package/src/hooks/use_conversation.ts +1 -0
- package/src/hooks/use_current_person.ts +1 -0
- package/src/hooks/use_direct_messages_eligible.ts +11 -0
- package/src/hooks/use_features.ts +0 -1
- package/src/index.tsx +2 -1
- package/src/navigation/index.tsx +2 -2
- package/src/polyfills/events/EventTarget.ts +1 -1
- package/src/screens/conversation_filters/components/conversation_filters.tsx +3 -3
- package/src/screens/conversation_screen.tsx +9 -1
- package/src/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.tsx +18 -4
- package/src/screens/conversation_select_recipients/types/screen_props.tsx +2 -0
- package/src/screens/conversation_select_type_screen.tsx +4 -7
- package/src/screens/conversations/components/list_header_component.tsx +3 -3
- package/src/screens/settings_screen.tsx +3 -3
- package/src/types/resources/direct_message_candidate.ts +5 -0
- package/src/types/resources/member.ts +1 -0
- package/src/types/resources/member_ability.ts +1 -0
- package/src/types/resources/person.ts +1 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/liquid_glass.ts +12 -0
- package/src/utils/sha_256.ts +24 -24
- package/src/utils/system_messages.ts +1 -1
- package/src/utils/theme.ts +3 -8
- package/build/hooks/use_direct_messages_enabled.d.ts +0 -2
- package/build/hooks/use_direct_messages_enabled.d.ts.map +0 -1
- package/build/hooks/use_direct_messages_enabled.js +0 -16
- package/build/hooks/use_direct_messages_enabled.js.map +0 -1
- package/src/hooks/use_direct_messages_enabled.ts +0 -23
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { renderHook } from '@testing-library/react-native'
|
|
2
2
|
import { useFontScale } from '../../hooks/use_font_scale'
|
|
3
3
|
|
|
4
|
-
jest.mock('react-native', () =>
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
jest.mock('react-native', () => {
|
|
5
|
+
const actual = jest.requireActual('react-native')
|
|
6
|
+
return Object.defineProperty(actual, 'useWindowDimensions', {
|
|
7
|
+
value: jest.fn(),
|
|
8
|
+
configurable: true,
|
|
9
|
+
})
|
|
10
|
+
})
|
|
7
11
|
|
|
8
12
|
const mockUseWindowDimensions = require('react-native').useWindowDimensions
|
|
9
13
|
const DEFAULT_NATIVE_FONT_SCALE = 1
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Platform } from 'react-native'
|
|
2
|
+
import { isLiquidGlassEnabled, setLiquidGlassCapability } from '../../utils/liquid_glass'
|
|
3
|
+
|
|
4
|
+
const mockPlatform = (OS: 'ios' | 'android', Version: string | number) => {
|
|
5
|
+
Object.defineProperty(Platform, 'OS', { value: OS, configurable: true })
|
|
6
|
+
Object.defineProperty(Platform, 'Version', { value: Version, configurable: true })
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
describe('isLiquidGlassEnabled', () => {
|
|
10
|
+
afterEach(() => {
|
|
11
|
+
setLiquidGlassCapability(false)
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
it('is false until the host enables it', () => {
|
|
15
|
+
mockPlatform('ios', '26.0')
|
|
16
|
+
|
|
17
|
+
expect(isLiquidGlassEnabled()).toBe(false)
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
it('is true when the host enables it on iOS 26 or later', () => {
|
|
21
|
+
mockPlatform('ios', '26.0')
|
|
22
|
+
setLiquidGlassCapability(true)
|
|
23
|
+
|
|
24
|
+
expect(isLiquidGlassEnabled()).toBe(true)
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
it('is false below iOS 26 even when the host enables it', () => {
|
|
28
|
+
mockPlatform('ios', '18.5')
|
|
29
|
+
setLiquidGlassCapability(true)
|
|
30
|
+
|
|
31
|
+
expect(isLiquidGlassEnabled()).toBe(false)
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
it('is false on android even when the host enables it', () => {
|
|
35
|
+
mockPlatform('android', 36)
|
|
36
|
+
setLiquidGlassCapability(true)
|
|
37
|
+
|
|
38
|
+
expect(isLiquidGlassEnabled()).toBe(false)
|
|
39
|
+
})
|
|
40
|
+
})
|
|
@@ -113,7 +113,7 @@ describe('ChatAdapters', () => {
|
|
|
113
113
|
describe('document picker adapter', () => {
|
|
114
114
|
it('uses the configured adapter when provided', () => {
|
|
115
115
|
const documentPicker = new DocumentPickerAdapter({
|
|
116
|
-
openAsync: jest.fn(async () => ({ canceled: true, assets: null })),
|
|
116
|
+
openAsync: jest.fn(async () => ({ canceled: true as true, assets: null })),
|
|
117
117
|
})
|
|
118
118
|
|
|
119
119
|
ChatAdapters.configure({
|
|
@@ -11,7 +11,7 @@ const makeMessage = (overrides: Partial<MessageResource> = {}): MessageResource
|
|
|
11
11
|
textEditedAt: null,
|
|
12
12
|
mine: false,
|
|
13
13
|
attachments: [],
|
|
14
|
-
author: { id: -1, name: 'System', avatar: '' },
|
|
14
|
+
author: { id: -1, type: 'Person', name: 'System', avatar: '' },
|
|
15
15
|
reactionCounts: [],
|
|
16
16
|
replyCount: 0,
|
|
17
17
|
replyRootId: null,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Uri } from '../../utils'
|
|
1
|
+
import { Session, Uri } from '../../utils'
|
|
2
2
|
|
|
3
3
|
describe('URI', () => {
|
|
4
4
|
it('should be defined', () => {
|
|
@@ -7,13 +7,7 @@ describe('URI', () => {
|
|
|
7
7
|
|
|
8
8
|
it('should create a new instance', () => {
|
|
9
9
|
const uri = new Uri({
|
|
10
|
-
session: {
|
|
11
|
-
env: 'production',
|
|
12
|
-
token: undefined,
|
|
13
|
-
type: 'OAuth',
|
|
14
|
-
isAuthenticated: false,
|
|
15
|
-
isChurchCenterToken: false,
|
|
16
|
-
},
|
|
10
|
+
session: new Session({ env: 'production', type: 'OAuth' }),
|
|
17
11
|
})
|
|
18
12
|
expect(uri).toBeDefined()
|
|
19
13
|
})
|
|
@@ -22,39 +16,21 @@ describe('URI', () => {
|
|
|
22
16
|
describe('planning center', () => {
|
|
23
17
|
it('should return the correct base URL for production', () => {
|
|
24
18
|
const uri = new Uri({
|
|
25
|
-
session: {
|
|
26
|
-
env: 'production',
|
|
27
|
-
token: undefined,
|
|
28
|
-
type: 'OAuth',
|
|
29
|
-
isAuthenticated: false,
|
|
30
|
-
isChurchCenterToken: false,
|
|
31
|
-
},
|
|
19
|
+
session: new Session({ env: 'production', type: 'OAuth' }),
|
|
32
20
|
})
|
|
33
21
|
expect(uri.baseUrl).toBe('https://api.planningcenteronline.com')
|
|
34
22
|
})
|
|
35
23
|
|
|
36
24
|
it('should return the correct base URL for staging', () => {
|
|
37
25
|
const uri = new Uri({
|
|
38
|
-
session: {
|
|
39
|
-
env: 'staging',
|
|
40
|
-
token: undefined,
|
|
41
|
-
type: 'OAuth',
|
|
42
|
-
isAuthenticated: false,
|
|
43
|
-
isChurchCenterToken: false,
|
|
44
|
-
},
|
|
26
|
+
session: new Session({ env: 'staging', type: 'OAuth' }),
|
|
45
27
|
})
|
|
46
28
|
expect(uri.baseUrl).toBe('https://api-staging.planningcenteronline.com')
|
|
47
29
|
})
|
|
48
30
|
|
|
49
31
|
it('should return the correct base URL for development', () => {
|
|
50
32
|
const uri = new Uri({
|
|
51
|
-
session: {
|
|
52
|
-
env: 'development',
|
|
53
|
-
token: undefined,
|
|
54
|
-
type: 'OAuth',
|
|
55
|
-
isAuthenticated: false,
|
|
56
|
-
isChurchCenterToken: false,
|
|
57
|
-
},
|
|
33
|
+
session: new Session({ env: 'development', type: 'OAuth' }),
|
|
58
34
|
})
|
|
59
35
|
expect(uri.baseUrl).toBe('https://api.pco.test')
|
|
60
36
|
})
|
|
@@ -63,13 +39,7 @@ describe('URI', () => {
|
|
|
63
39
|
describe('church center', () => {
|
|
64
40
|
it('should return the correct base URL for production', () => {
|
|
65
41
|
const uri = new Uri({
|
|
66
|
-
session: {
|
|
67
|
-
env: 'production',
|
|
68
|
-
token: undefined,
|
|
69
|
-
type: 'ChurchCenterOauth',
|
|
70
|
-
isAuthenticated: false,
|
|
71
|
-
isChurchCenterToken: true,
|
|
72
|
-
},
|
|
42
|
+
session: new Session({ env: 'production', type: 'ChurchCenterOauth' }),
|
|
73
43
|
graph: 'churchcenter',
|
|
74
44
|
})
|
|
75
45
|
expect(uri.baseUrl).toBe('https://api.churchcenter.com')
|
|
@@ -77,13 +47,7 @@ describe('URI', () => {
|
|
|
77
47
|
|
|
78
48
|
it('should return the correct base URL for staging', () => {
|
|
79
49
|
const uri = new Uri({
|
|
80
|
-
session: {
|
|
81
|
-
env: 'staging',
|
|
82
|
-
token: undefined,
|
|
83
|
-
type: 'ChurchCenterOauth',
|
|
84
|
-
isAuthenticated: false,
|
|
85
|
-
isChurchCenterToken: true,
|
|
86
|
-
},
|
|
50
|
+
session: new Session({ env: 'staging', type: 'ChurchCenterOauth' }),
|
|
87
51
|
graph: 'churchcenter',
|
|
88
52
|
})
|
|
89
53
|
expect(uri.baseUrl).toBe('https://api.staging.churchcenter.com')
|
|
@@ -91,13 +55,7 @@ describe('URI', () => {
|
|
|
91
55
|
|
|
92
56
|
it('should return the correct base URL for development', () => {
|
|
93
57
|
const uri = new Uri({
|
|
94
|
-
session: {
|
|
95
|
-
env: 'development',
|
|
96
|
-
token: undefined,
|
|
97
|
-
type: 'ChurchCenterOauth',
|
|
98
|
-
isAuthenticated: false,
|
|
99
|
-
isChurchCenterToken: true,
|
|
100
|
-
},
|
|
58
|
+
session: new Session({ env: 'development', type: 'ChurchCenterOauth' }),
|
|
101
59
|
graph: 'churchcenter',
|
|
102
60
|
})
|
|
103
61
|
expect(uri.baseUrl).toBe('https://api.churchcenter.test')
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { http, HttpResponse } from 'msw'
|
|
2
|
-
import { JSONAPIResponse } from '../types'
|
|
1
|
+
import { http, HttpResponse, type JsonBodyType } from 'msw'
|
|
3
2
|
import DefaultFixtures from './fixtures/defaults'
|
|
4
3
|
|
|
5
4
|
export const BASE_URL = 'https://api.pco.test/chat/v2'
|
|
@@ -13,25 +12,25 @@ export const handlers = [
|
|
|
13
12
|
del(BASE_URL + '/records/:id'),
|
|
14
13
|
]
|
|
15
14
|
|
|
16
|
-
function get(url: string, mockedResponse:
|
|
15
|
+
function get(url: string, mockedResponse: JsonBodyType, mockedStatus: number = 200) {
|
|
17
16
|
return http.get(url, () => {
|
|
18
17
|
return HttpResponse.json(mockedResponse, { status: mockedStatus })
|
|
19
18
|
})
|
|
20
19
|
}
|
|
21
20
|
|
|
22
|
-
function post(url: string, mockedResponse:
|
|
21
|
+
function post(url: string, mockedResponse: JsonBodyType, mockedStatus: number = 200) {
|
|
23
22
|
return http.post(url, () => {
|
|
24
23
|
return HttpResponse.json(mockedResponse, { status: mockedStatus })
|
|
25
24
|
})
|
|
26
25
|
}
|
|
27
26
|
|
|
28
|
-
function del(url: string, mockedResponse?:
|
|
27
|
+
function del(url: string, mockedResponse?: JsonBodyType, mockedStatus: number = 200) {
|
|
29
28
|
return http.delete(url, () => {
|
|
30
29
|
return HttpResponse.json(mockedResponse, { status: mockedStatus })
|
|
31
30
|
})
|
|
32
31
|
}
|
|
33
32
|
|
|
34
|
-
function patch(url: string, mockedResponse:
|
|
33
|
+
function patch(url: string, mockedResponse: JsonBodyType, mockedStatus: number = 200) {
|
|
35
34
|
return http.patch(url, () => {
|
|
36
35
|
return HttpResponse.json(mockedResponse, { status: mockedStatus })
|
|
37
36
|
})
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
1
|
import { View, StyleSheet } from 'react-native'
|
|
3
2
|
import { useTheme } from '../../../hooks'
|
|
4
3
|
import { Spinner } from '../../display'
|
|
@@ -19,14 +18,22 @@ const useStyles = () => {
|
|
|
19
18
|
|
|
20
19
|
return StyleSheet.create({
|
|
21
20
|
container: {
|
|
22
|
-
|
|
21
|
+
position: 'absolute',
|
|
22
|
+
top: 0,
|
|
23
|
+
left: 0,
|
|
24
|
+
right: 0,
|
|
25
|
+
bottom: 0,
|
|
23
26
|
justifyContent: 'center',
|
|
24
27
|
alignItems: 'center',
|
|
25
28
|
borderRadius: 8,
|
|
26
29
|
overflow: 'hidden',
|
|
27
30
|
},
|
|
28
31
|
overlay: {
|
|
29
|
-
|
|
32
|
+
position: 'absolute',
|
|
33
|
+
top: 0,
|
|
34
|
+
left: 0,
|
|
35
|
+
right: 0,
|
|
36
|
+
bottom: 0,
|
|
30
37
|
backgroundColor: colors.fillColorNeutral070,
|
|
31
38
|
opacity: 0.5,
|
|
32
39
|
},
|
|
@@ -3,7 +3,7 @@ import { useSafeAreaInsets } from 'react-native-safe-area-context'
|
|
|
3
3
|
import { useTheme } from '../../hooks'
|
|
4
4
|
import type { ConversationDisabledReason } from '../../types'
|
|
5
5
|
import { ADULT_REQUIREMENT_BODY } from '../../utils'
|
|
6
|
-
import { Text } from '../display'
|
|
6
|
+
import { Button, Text } from '../display'
|
|
7
7
|
|
|
8
8
|
export const LeaderMessagesDisabledBanner = () => {
|
|
9
9
|
return (
|
|
@@ -31,22 +31,37 @@ const DEFAULT_DISABLED_TEXT = 'This conversation has been disabled.'
|
|
|
31
31
|
|
|
32
32
|
interface ConversationDisabledBannerProps {
|
|
33
33
|
disabledReason?: ConversationDisabledReason
|
|
34
|
+
messageLink?: { label: string; onPress: () => void }
|
|
34
35
|
}
|
|
35
36
|
|
|
36
|
-
export const ConversationDisabledBanner = ({
|
|
37
|
+
export const ConversationDisabledBanner = ({
|
|
38
|
+
disabledReason,
|
|
39
|
+
messageLink,
|
|
40
|
+
}: ConversationDisabledBannerProps) => {
|
|
37
41
|
const styles = useStyles()
|
|
38
42
|
const description =
|
|
39
43
|
(disabledReason && DISABLED_REASON_TEXT[disabledReason]) ?? DEFAULT_DISABLED_TEXT
|
|
40
44
|
|
|
41
|
-
return
|
|
45
|
+
return (
|
|
46
|
+
<MessagesDisabledBanner
|
|
47
|
+
description={description}
|
|
48
|
+
style={styles.memberBanner}
|
|
49
|
+
messageLink={messageLink}
|
|
50
|
+
/>
|
|
51
|
+
)
|
|
42
52
|
}
|
|
43
53
|
|
|
44
54
|
interface MessagesDisabledBannerProps {
|
|
45
55
|
description: string
|
|
46
56
|
style?: ViewStyle
|
|
57
|
+
messageLink?: { label: string; onPress: () => void }
|
|
47
58
|
}
|
|
48
59
|
|
|
49
|
-
const MessagesDisabledBanner = ({
|
|
60
|
+
const MessagesDisabledBanner = ({
|
|
61
|
+
description,
|
|
62
|
+
style,
|
|
63
|
+
messageLink,
|
|
64
|
+
}: MessagesDisabledBannerProps) => {
|
|
50
65
|
const styles = useStyles()
|
|
51
66
|
|
|
52
67
|
return (
|
|
@@ -54,6 +69,15 @@ const MessagesDisabledBanner = ({ description, style }: MessagesDisabledBannerPr
|
|
|
54
69
|
<Text style={styles.text} variant="tertiary">
|
|
55
70
|
{description}
|
|
56
71
|
</Text>
|
|
72
|
+
{messageLink && (
|
|
73
|
+
<Button
|
|
74
|
+
variant="fill"
|
|
75
|
+
size="lg"
|
|
76
|
+
title={messageLink.label}
|
|
77
|
+
onPress={messageLink.onPress}
|
|
78
|
+
style={styles.messageButton}
|
|
79
|
+
/>
|
|
80
|
+
)}
|
|
57
81
|
</View>
|
|
58
82
|
)
|
|
59
83
|
}
|
|
@@ -78,5 +102,8 @@ const useStyles = () => {
|
|
|
78
102
|
paddingBottom: 16 + bottom,
|
|
79
103
|
marginBottom: -bottom,
|
|
80
104
|
},
|
|
105
|
+
messageButton: {
|
|
106
|
+
marginTop: 12,
|
|
107
|
+
},
|
|
81
108
|
})
|
|
82
109
|
}
|
|
@@ -4,7 +4,7 @@ import { Text } from 'react-native'
|
|
|
4
4
|
import { Log } from '../../../utils/native_adapters/configuration'
|
|
5
5
|
import { ComponentErrorBoundary } from '../component_error_boundary'
|
|
6
6
|
|
|
7
|
-
function Boom({ thrown }: { thrown: unknown }) {
|
|
7
|
+
function Boom({ thrown }: { thrown: unknown }): React.ReactElement {
|
|
8
8
|
throw thrown
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -6,7 +6,7 @@ import { Log } from '../../../utils/native_adapters/configuration'
|
|
|
6
6
|
import { ResponseError } from '../../../utils/response_error'
|
|
7
7
|
import { ErrorBoundary } from '../error_boundary'
|
|
8
8
|
|
|
9
|
-
function Boom({ thrown }: { thrown: unknown }) {
|
|
9
|
+
function Boom({ thrown }: { thrown: unknown }): React.ReactElement {
|
|
10
10
|
throw thrown
|
|
11
11
|
}
|
|
12
12
|
|
|
@@ -46,7 +46,11 @@ describe('ErrorBoundary', () => {
|
|
|
46
46
|
})
|
|
47
47
|
|
|
48
48
|
it('does not report ResponseError — those are owned by the HTTP layer', () => {
|
|
49
|
-
const failure = {
|
|
49
|
+
const failure = {
|
|
50
|
+
status: 500,
|
|
51
|
+
statusText: 'Server Error',
|
|
52
|
+
errors: [],
|
|
53
|
+
} as unknown as FailedResponse
|
|
50
54
|
|
|
51
55
|
render(
|
|
52
56
|
<ErrorBoundary fallback={null}>
|
|
@@ -7,6 +7,7 @@ import { ApiResource, DeepPartial } from '../types'
|
|
|
7
7
|
import { FailedResponse } from '../types'
|
|
8
8
|
import { ProductAnalyticsConfig } from '../types/product_analytics'
|
|
9
9
|
import { Client, ENV, OauthType, PartialToken, Session, Uri } from '../utils'
|
|
10
|
+
import { setLiquidGlassCapability } from '../utils/liquid_glass'
|
|
10
11
|
import { ChatTheme, defaultTheme, DefaultTheme } from '../utils/theme'
|
|
11
12
|
|
|
12
13
|
export interface ChatProviderProps {
|
|
@@ -18,6 +19,7 @@ export interface ChatProviderProps {
|
|
|
18
19
|
tokenType?: OauthType
|
|
19
20
|
theme: CreateChatThemeProps
|
|
20
21
|
edgeToEdge?: boolean
|
|
22
|
+
liquidGlassEnabled?: boolean
|
|
21
23
|
}
|
|
22
24
|
|
|
23
25
|
export interface ChatContextValue extends Omit<ChatProviderProps, 'theme'> {
|
|
@@ -36,6 +38,7 @@ export const ChatContext = createContext<ChatContextValue>({
|
|
|
36
38
|
theme: defaultTheme('light'),
|
|
37
39
|
token: undefined,
|
|
38
40
|
edgeToEdge: true,
|
|
41
|
+
liquidGlassEnabled: false,
|
|
39
42
|
productAnalyticsConfig: undefined,
|
|
40
43
|
})
|
|
41
44
|
|
|
@@ -48,7 +51,11 @@ export function ChatProvider({ children, value }: { children: any; value: ChatPr
|
|
|
48
51
|
giphyApiKey,
|
|
49
52
|
tokenType,
|
|
50
53
|
edgeToEdge = true,
|
|
54
|
+
liquidGlassEnabled = false,
|
|
51
55
|
} = value
|
|
56
|
+
// Set during render, not in an effect — navigator options factories read it
|
|
57
|
+
// before effects would run.
|
|
58
|
+
setLiquidGlassCapability(liquidGlassEnabled)
|
|
52
59
|
const theme = useCreateChatTheme(value.theme || {})
|
|
53
60
|
const session = useMemo(
|
|
54
61
|
() => new Session({ token, env, type: tokenType }),
|
|
@@ -59,6 +66,7 @@ export function ChatProvider({ children, value }: { children: any; value: ChatPr
|
|
|
59
66
|
const contextValue: ChatContextValue = {
|
|
60
67
|
...value,
|
|
61
68
|
edgeToEdge,
|
|
69
|
+
liquidGlassEnabled,
|
|
62
70
|
env,
|
|
63
71
|
giphyApiKey,
|
|
64
72
|
onAgeDisqualification,
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ApiCollection, ConversationResource } from '../../types'
|
|
2
|
+
import { ApiClient } from '../use_api_client'
|
|
3
|
+
|
|
4
|
+
export const getFindDirectMessageConversationRequestArgs = (participantIds: string[]) => ({
|
|
5
|
+
url: '/me/conversations',
|
|
6
|
+
data: {
|
|
7
|
+
fields: { Conversation: ['title', 'disabled'] },
|
|
8
|
+
filter: 'with_exact_direct_message_participants',
|
|
9
|
+
participant_ids: participantIds.join(','),
|
|
10
|
+
},
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
export const findDirectMessageConversation = (apiClient: ApiClient, participantIds: string[]) =>
|
|
14
|
+
apiClient.chat.get(getFindDirectMessageConversationRequestArgs(participantIds)) as Promise<
|
|
15
|
+
ApiCollection<ConversationResource>
|
|
16
|
+
>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ConversationResource } from '../../types'
|
|
2
|
+
import { PreselectedDirectMessagePerson } from '../../types/resources/direct_message_candidate'
|
|
3
|
+
import { MemberResource } from '../../types/resources/member'
|
|
4
|
+
|
|
5
|
+
export type MessageAvailableMembersLink =
|
|
6
|
+
| { label: string; existingConversationId: number }
|
|
7
|
+
| { label: string; recipients: PreselectedDirectMessagePerson[] }
|
|
8
|
+
|
|
9
|
+
export function resolveMessageAvailableMembersLink({
|
|
10
|
+
availableMembers,
|
|
11
|
+
existingConversations,
|
|
12
|
+
canMessageAvailableMembers,
|
|
13
|
+
}: {
|
|
14
|
+
availableMembers: Pick<MemberResource, 'id' | 'name' | 'avatar'>[]
|
|
15
|
+
existingConversations: Pick<ConversationResource, 'id' | 'disabled'>[] | undefined
|
|
16
|
+
canMessageAvailableMembers: boolean
|
|
17
|
+
}): MessageAvailableMembersLink | undefined {
|
|
18
|
+
if (availableMembers.length === 0 || !existingConversations) return undefined
|
|
19
|
+
|
|
20
|
+
const label =
|
|
21
|
+
availableMembers.length === 1
|
|
22
|
+
? `Message ${availableMembers[0].name.split(' ')[0]}`
|
|
23
|
+
: `Message the remaining ${availableMembers.length} people`
|
|
24
|
+
|
|
25
|
+
const existingConversation = existingConversations[0]
|
|
26
|
+
if (existingConversation) {
|
|
27
|
+
return existingConversation.disabled
|
|
28
|
+
? undefined
|
|
29
|
+
: { label, existingConversationId: Number(existingConversation.id) }
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (!canMessageAvailableMembers) return undefined
|
|
33
|
+
|
|
34
|
+
return {
|
|
35
|
+
label,
|
|
36
|
+
recipients: availableMembers.map(m => ({
|
|
37
|
+
id: m.id.toString(),
|
|
38
|
+
name: m.name,
|
|
39
|
+
avatar: m.avatar,
|
|
40
|
+
})),
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -1,17 +1,8 @@
|
|
|
1
1
|
import { useQuery } from '@tanstack/react-query'
|
|
2
2
|
import { useState, useCallback } from 'react'
|
|
3
|
-
import {
|
|
3
|
+
import { ApiResource, ConversationResource } from '../../types'
|
|
4
4
|
import { ApiClient, useApiClient } from '../use_api_client'
|
|
5
|
-
|
|
6
|
-
const findDirectMessageConversation = (apiClient: ApiClient, participantIds: string[]) =>
|
|
7
|
-
apiClient.chat.get({
|
|
8
|
-
url: '/me/conversations',
|
|
9
|
-
data: {
|
|
10
|
-
fields: { Conversation: ['title'] },
|
|
11
|
-
filter: 'with_exact_direct_message_participants',
|
|
12
|
-
participant_ids: participantIds.join(','),
|
|
13
|
-
},
|
|
14
|
-
}) as Promise<ApiCollection<ConversationResource>>
|
|
5
|
+
import { findDirectMessageConversation } from './find_direct_message_conversation'
|
|
15
6
|
|
|
16
7
|
const createDirectMessageConversation = (apiClient: ApiClient, ids: string[]) =>
|
|
17
8
|
apiClient.chat.post({
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { useQuery } from '@tanstack/react-query'
|
|
2
|
+
import { useMemo } from 'react'
|
|
3
|
+
import { ConversationResource } from '../../types'
|
|
4
|
+
import { MemberResource } from '../../types/resources/member'
|
|
5
|
+
import { useApiGet } from '../use_api'
|
|
6
|
+
import { useApiClient } from '../use_api_client'
|
|
7
|
+
import { useCurrentPerson } from '../use_current_person'
|
|
8
|
+
import { getRequestQueryKey } from '../use_suspense_api'
|
|
9
|
+
import {
|
|
10
|
+
findDirectMessageConversation,
|
|
11
|
+
getFindDirectMessageConversationRequestArgs,
|
|
12
|
+
} from './find_direct_message_conversation'
|
|
13
|
+
import {
|
|
14
|
+
MessageAvailableMembersLink,
|
|
15
|
+
resolveMessageAvailableMembersLink,
|
|
16
|
+
} from './resolve_message_available_members_link'
|
|
17
|
+
|
|
18
|
+
export function useMessageAvailableMembers(
|
|
19
|
+
conversation: ConversationResource,
|
|
20
|
+
{ enabled }: { enabled: boolean }
|
|
21
|
+
): MessageAvailableMembersLink | undefined {
|
|
22
|
+
const apiClient = useApiClient()
|
|
23
|
+
const currentPerson = useCurrentPerson()
|
|
24
|
+
|
|
25
|
+
const { data: members } = useApiGet<MemberResource[]>(
|
|
26
|
+
{
|
|
27
|
+
url: `/me/conversations/${conversation.id}/members`,
|
|
28
|
+
data: { fields: { Member: ['name', 'avatar', 'direct_messages_disabled'] } },
|
|
29
|
+
},
|
|
30
|
+
{ enabled }
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
const availableMembers = useMemo(() => {
|
|
34
|
+
if (!enabled || !members) return []
|
|
35
|
+
|
|
36
|
+
const currentMember = members.find(m => m.id === currentPerson.id)
|
|
37
|
+
if (currentMember?.directMessagesDisabled) return []
|
|
38
|
+
|
|
39
|
+
return members.filter(m => m.id !== currentPerson.id && !m.directMessagesDisabled)
|
|
40
|
+
}, [enabled, members, currentPerson.id])
|
|
41
|
+
|
|
42
|
+
const availablePersonIds = useMemo(() => availableMembers.map(m => m.id), [availableMembers])
|
|
43
|
+
|
|
44
|
+
const { data: existingDirectMessageData } = useQuery({
|
|
45
|
+
queryKey: getRequestQueryKey(
|
|
46
|
+
getFindDirectMessageConversationRequestArgs(availablePersonIds.map(String))
|
|
47
|
+
),
|
|
48
|
+
queryFn: () => findDirectMessageConversation(apiClient, availablePersonIds.map(String)),
|
|
49
|
+
enabled: availablePersonIds.length > 0,
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
return useMemo(
|
|
53
|
+
() =>
|
|
54
|
+
resolveMessageAvailableMembersLink({
|
|
55
|
+
availableMembers,
|
|
56
|
+
existingConversations: existingDirectMessageData?.data,
|
|
57
|
+
canMessageAvailableMembers: !!conversation.memberAbility?.canMessageAvailableMembers,
|
|
58
|
+
}),
|
|
59
|
+
[
|
|
60
|
+
availableMembers,
|
|
61
|
+
existingDirectMessageData,
|
|
62
|
+
conversation.memberAbility?.canMessageAvailableMembers,
|
|
63
|
+
]
|
|
64
|
+
)
|
|
65
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { StackActions, useNavigation } from '@react-navigation/native'
|
|
2
|
+
import { ConversationResource } from '../../types'
|
|
3
|
+
import { useMessageAvailableMembers } from './use_message_available_members'
|
|
4
|
+
|
|
5
|
+
export function useMessageAvailableMembersAction(conversation: ConversationResource) {
|
|
6
|
+
const navigation = useNavigation()
|
|
7
|
+
const isDmDisabled =
|
|
8
|
+
!!conversation.disabled && conversation.disabledReason === 'direct_messages_disabled'
|
|
9
|
+
const messageAvailableMembersLink = useMessageAvailableMembers(conversation, {
|
|
10
|
+
enabled: isDmDisabled,
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
if (!messageAvailableMembersLink) return undefined
|
|
14
|
+
|
|
15
|
+
return {
|
|
16
|
+
label: messageAvailableMembersLink.label,
|
|
17
|
+
onPress: () => {
|
|
18
|
+
if ('existingConversationId' in messageAvailableMembersLink) {
|
|
19
|
+
// replace instead of navigate/push so the disabled conversation isn't
|
|
20
|
+
// left in the back stack as a dead end
|
|
21
|
+
navigation.dispatch(
|
|
22
|
+
StackActions.replace('Conversation', {
|
|
23
|
+
conversation_id: messageAvailableMembersLink.existingConversationId,
|
|
24
|
+
})
|
|
25
|
+
)
|
|
26
|
+
} else {
|
|
27
|
+
navigation.navigate('New', {
|
|
28
|
+
screen: 'ConversationSelectDirectMessageRecipients',
|
|
29
|
+
params: { preselected_people: messageAvailableMembersLink.recipients },
|
|
30
|
+
})
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
}
|
|
34
|
+
}
|
package/src/hooks/index.ts
CHANGED
|
@@ -8,7 +8,7 @@ export * from './use_chat_permissions'
|
|
|
8
8
|
export * from './use_create_android_ripple_color'
|
|
9
9
|
export * from './use_current_person'
|
|
10
10
|
export * from './use_deleting_ids'
|
|
11
|
-
export * from './
|
|
11
|
+
export * from './use_direct_messages_eligible'
|
|
12
12
|
export * from './use_font_scale'
|
|
13
13
|
export * from './use_has_direct_messages'
|
|
14
14
|
export * from './use_groups_groups'
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CurrentPersonResource } from '../types'
|
|
2
|
+
import { useApiGet } from './use_api'
|
|
3
|
+
import { currentPersonRequestArgs } from './use_current_person'
|
|
4
|
+
|
|
5
|
+
export const useDirectMessagesEligible = (): boolean => {
|
|
6
|
+
const { data: person, isFetched } = useApiGet<CurrentPersonResource>(currentPersonRequestArgs)
|
|
7
|
+
|
|
8
|
+
if (!isFetched) return false
|
|
9
|
+
|
|
10
|
+
return person?.directMessagesEligible ?? false
|
|
11
|
+
}
|
|
@@ -43,7 +43,6 @@ export const availableFeatures = {
|
|
|
43
43
|
custom_conversation_avatars: 'ROLLOUT_custom_conversation_avatars',
|
|
44
44
|
conversation_safety_lock: 'ROLLOUT_conversation_safety_lock',
|
|
45
45
|
video_moderation: 'ROLLOUT_MOBILE_video_moderation',
|
|
46
|
-
direct_messages_eap: 'ROLLOUT_direct_messages_eap',
|
|
47
46
|
dm_search_clear_fix: 'ROLLOUT_MOBILE_dm_search_clear_fix',
|
|
48
47
|
} as const satisfies Record<string, `ROLLOUT_${string}`>
|
|
49
48
|
|
package/src/index.tsx
CHANGED
|
@@ -12,7 +12,8 @@ export { default as Event } from './polyfills/events/Event'
|
|
|
12
12
|
export * from './screens'
|
|
13
13
|
export { AgeCheckUnderageScreen } from './screens/age_check/age_check_underage_screen' // TODO: add to barrel
|
|
14
14
|
export * from './types'
|
|
15
|
-
export {
|
|
15
|
+
export { platformFontWeightBold, Session, Uri } from './utils'
|
|
16
|
+
export type { ENV, TemporaryDefaultColorsType } from './utils'
|
|
16
17
|
export * from './utils/client'
|
|
17
18
|
export * from './utils/host_bridge'
|
|
18
19
|
export * from './utils/native_adapters'
|