@planningcenter/chat-react-native 3.29.0 → 3.30.0-rc.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/build/components/conversation/attachments/attachment_card.js +2 -2
- package/build/components/conversation/attachments/attachment_card.js.map +1 -1
- package/build/components/conversation/attachments/attachment_deleting_overlay.js +1 -1
- package/build/components/conversation/attachments/attachment_deleting_overlay.js.map +1 -1
- package/build/components/conversation/attachments/audio_attachment.d.ts.map +1 -1
- package/build/components/conversation/attachments/audio_attachment.js +3 -3
- package/build/components/conversation/attachments/audio_attachment.js.map +1 -1
- package/build/components/conversation/attachments/expanded_link.d.ts.map +1 -1
- package/build/components/conversation/attachments/expanded_link.js +2 -2
- package/build/components/conversation/attachments/expanded_link.js.map +1 -1
- package/build/components/conversation/attachments/generic_file_attachment.d.ts.map +1 -1
- package/build/components/conversation/attachments/generic_file_attachment.js +4 -4
- package/build/components/conversation/attachments/generic_file_attachment.js.map +1 -1
- package/build/components/conversation/attachments/giphy_attachment.d.ts.map +1 -1
- package/build/components/conversation/attachments/giphy_attachment.js +3 -3
- package/build/components/conversation/attachments/giphy_attachment.js.map +1 -1
- package/build/components/conversation/attachments/image_attachment.d.ts.map +1 -1
- package/build/components/conversation/attachments/image_attachment.js +6 -6
- package/build/components/conversation/attachments/image_attachment.js.map +1 -1
- package/build/components/conversation/attachments/video_attachment.d.ts.map +1 -1
- package/build/components/conversation/attachments/video_attachment.js +4 -4
- package/build/components/conversation/attachments/video_attachment.js.map +1 -1
- package/build/components/conversation/jump_to_bottom_button.js +1 -1
- package/build/components/conversation/jump_to_bottom_button.js.map +1 -1
- package/build/components/conversation/message.d.ts.map +1 -1
- package/build/components/conversation/message.js +11 -11
- package/build/components/conversation/message.js.map +1 -1
- package/build/components/conversation/message_attachments.d.ts.map +1 -1
- package/build/components/conversation/message_attachments.js +4 -4
- package/build/components/conversation/message_attachments.js.map +1 -1
- 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.map +1 -1
- 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.map +1 -1
- package/build/components/conversation/message_form.d.ts.map +1 -1
- package/build/components/conversation/message_form.js +9 -9
- package/build/components/conversation/message_form.js.map +1 -1
- package/build/components/conversation/message_markdown.js +2 -2
- package/build/components/conversation/message_markdown.js.map +1 -1
- package/build/components/conversation/message_reaction.d.ts +1 -1
- package/build/components/conversation/message_reaction.d.ts.map +1 -1
- package/build/components/conversation/message_reaction.js +2 -2
- package/build/components/conversation/message_reaction.js.map +1 -1
- package/build/components/conversation/message_read_receipts.d.ts.map +1 -1
- package/build/components/conversation/message_read_receipts.js +1 -1
- package/build/components/conversation/message_read_receipts.js.map +1 -1
- package/build/components/conversation/messages_disabled_banners.js +1 -1
- package/build/components/conversation/messages_disabled_banners.js.map +1 -1
- package/build/components/conversation/reply_shadow_message.d.ts.map +1 -1
- package/build/components/conversation/reply_shadow_message.js +7 -7
- package/build/components/conversation/reply_shadow_message.js.map +1 -1
- package/build/components/conversation/typing_indicator.js +1 -1
- package/build/components/conversation/typing_indicator.js.map +1 -1
- package/build/components/conversations/conversation_preview.d.ts.map +1 -1
- package/build/components/conversations/conversation_preview.js +3 -3
- package/build/components/conversations/conversation_preview.js.map +1 -1
- package/build/components/conversations/conversations.js +1 -1
- package/build/components/conversations/conversations.js.map +1 -1
- package/build/components/conversations/mute_indicator.js +1 -1
- package/build/components/conversations/mute_indicator.js.map +1 -1
- package/build/components/conversations/swipeable_toggle_button.d.ts.map +1 -1
- package/build/components/conversations/swipeable_toggle_button.js +2 -2
- package/build/components/conversations/swipeable_toggle_button.js.map +1 -1
- package/build/components/conversations/unread_count_badge.js +1 -1
- package/build/components/conversations/unread_count_badge.js.map +1 -1
- package/build/components/display/action_button.js +3 -3
- package/build/components/display/action_button.js.map +1 -1
- package/build/components/display/banner.d.ts +1 -1
- package/build/components/display/banner.d.ts.map +1 -1
- package/build/components/display/banner.js.map +1 -1
- package/build/components/display/banner_collapsible.d.ts.map +1 -1
- package/build/components/display/banner_collapsible.js +1 -1
- package/build/components/display/banner_collapsible.js.map +1 -1
- package/build/components/display/button.d.ts.map +1 -1
- package/build/components/display/button.js +2 -2
- package/build/components/display/button.js.map +1 -1
- package/build/components/display/child_notice.d.ts +1 -1
- package/build/components/display/child_notice.d.ts.map +1 -1
- package/build/components/display/child_notice.js +3 -3
- package/build/components/display/child_notice.js.map +1 -1
- package/build/components/display/heading.d.ts.map +1 -1
- package/build/components/display/heading.js +2 -2
- package/build/components/display/heading.js.map +1 -1
- package/build/components/display/icon.d.ts +4 -4
- package/build/components/display/icon.d.ts.map +1 -1
- package/build/components/display/icon.js +5 -5
- package/build/components/display/icon.js.map +1 -1
- package/build/components/display/icon_button.d.ts.map +1 -1
- package/build/components/display/icon_button.js +1 -1
- package/build/components/display/icon_button.js.map +1 -1
- package/build/components/display/image_attachment_preview.js +3 -3
- package/build/components/display/image_attachment_preview.js.map +1 -1
- package/build/components/display/person.d.ts.map +1 -1
- package/build/components/display/person.js +1 -1
- package/build/components/display/person.js.map +1 -1
- package/build/components/display/platform_modal_header_buttons.d.ts +1 -1
- package/build/components/display/platform_modal_header_buttons.d.ts.map +1 -1
- package/build/components/display/platform_modal_header_buttons.js +3 -3
- package/build/components/display/platform_modal_header_buttons.js.map +1 -1
- package/build/components/display/text.d.ts.map +1 -1
- package/build/components/display/text.js +1 -1
- package/build/components/display/text.js.map +1 -1
- package/build/components/display/text_inline_button.d.ts.map +1 -1
- package/build/components/display/text_inline_button.js +2 -2
- package/build/components/display/text_inline_button.js.map +1 -1
- package/build/components/display/toggle_button.d.ts.map +1 -1
- package/build/components/display/toggle_button.js +3 -3
- package/build/components/display/toggle_button.js.map +1 -1
- package/build/components/display/video_attachment_preview.js +4 -4
- package/build/components/display/video_attachment_preview.js.map +1 -1
- package/build/components/group_conversation_list.d.ts.map +1 -1
- package/build/components/group_conversation_list.js +2 -2
- package/build/components/group_conversation_list.js.map +1 -1
- package/build/components/primitive/avatar_primitive.d.ts.map +1 -1
- package/build/components/primitive/avatar_primitive.js +1 -1
- package/build/components/primitive/avatar_primitive.js.map +1 -1
- package/build/components/primitive/banner_primitive.d.ts +1 -1
- package/build/components/primitive/banner_primitive.d.ts.map +1 -1
- package/build/components/primitive/banner_primitive.js +3 -3
- package/build/components/primitive/banner_primitive.js.map +1 -1
- package/build/components/primitive/form_sheet.d.ts.map +1 -1
- package/build/components/primitive/form_sheet.js +1 -1
- package/build/components/primitive/form_sheet.js.map +1 -1
- package/build/components/safe_area_modal.js +1 -1
- package/build/components/safe_area_modal.js.map +1 -1
- package/build/contexts/api_provider.js +3 -3
- package/build/contexts/api_provider.js.map +1 -1
- package/build/contexts/chat_context.d.ts +3 -3
- package/build/contexts/chat_context.d.ts.map +1 -1
- package/build/contexts/chat_context.js +1 -1
- package/build/contexts/chat_context.js.map +1 -1
- package/build/contexts/conversations_context.d.ts +1 -1
- package/build/contexts/conversations_context.d.ts.map +1 -1
- package/build/contexts/conversations_context.js.map +1 -1
- package/build/contexts/session_context.d.ts.map +1 -1
- package/build/contexts/session_context.js +1 -1
- package/build/contexts/session_context.js.map +1 -1
- package/build/hooks/groups/use_groups_conversation_create.d.ts +2 -1
- package/build/hooks/groups/use_groups_conversation_create.d.ts.map +1 -1
- package/build/hooks/groups/use_groups_conversation_create.js +3 -2
- package/build/hooks/groups/use_groups_conversation_create.js.map +1 -1
- package/build/hooks/services/use_find_or_create_services_conversation.d.ts.map +1 -1
- package/build/hooks/services/use_find_or_create_services_conversation.js +2 -2
- package/build/hooks/services/use_find_or_create_services_conversation.js.map +1 -1
- package/build/hooks/services/use_team_members_for_new_conversation.js +1 -1
- package/build/hooks/services/use_team_members_for_new_conversation.js.map +1 -1
- package/build/hooks/services/use_team_plans.js +2 -2
- package/build/hooks/services/use_team_plans.js.map +1 -1
- package/build/hooks/use_api_client.d.ts.map +1 -1
- package/build/hooks/use_api_client.js +1 -1
- package/build/hooks/use_api_client.js.map +1 -1
- package/build/hooks/use_attachment_uploader.d.ts.map +1 -1
- package/build/hooks/use_attachment_uploader.js +1 -1
- package/build/hooks/use_attachment_uploader.js.map +1 -1
- package/build/hooks/use_broadcast_typing_status.js +1 -1
- package/build/hooks/use_broadcast_typing_status.js.map +1 -1
- package/build/hooks/use_conversation.js +2 -2
- package/build/hooks/use_conversation.js.map +1 -1
- package/build/hooks/use_conversation_membership.js +2 -2
- package/build/hooks/use_conversation_membership.js.map +1 -1
- package/build/hooks/use_conversation_message.js +1 -1
- package/build/hooks/use_conversation_message.js.map +1 -1
- package/build/hooks/use_conversation_messages.d.ts.map +1 -1
- package/build/hooks/use_conversation_messages.js +1 -1
- package/build/hooks/use_conversation_messages.js.map +1 -1
- package/build/hooks/use_conversation_messages_jolt_events.js +8 -8
- package/build/hooks/use_conversation_messages_jolt_events.js.map +1 -1
- package/build/hooks/use_create_android_ripple_color.js +1 -1
- package/build/hooks/use_create_android_ripple_color.js.map +1 -1
- package/build/hooks/use_current_person.js.map +1 -1
- package/build/hooks/use_features.d.ts +1 -0
- package/build/hooks/use_features.d.ts.map +1 -1
- package/build/hooks/use_features.js +1 -0
- package/build/hooks/use_features.js.map +1 -1
- package/build/hooks/use_font_scale.js +1 -1
- package/build/hooks/use_font_scale.js.map +1 -1
- package/build/hooks/use_giphy.d.ts.map +1 -1
- package/build/hooks/use_giphy.js.map +1 -1
- package/build/hooks/use_interaction_ghost_color.js +1 -1
- package/build/hooks/use_interaction_ghost_color.js.map +1 -1
- package/build/hooks/use_live_relative_time.d.ts.map +1 -1
- package/build/hooks/use_live_relative_time.js +1 -1
- package/build/hooks/use_live_relative_time.js.map +1 -1
- package/build/hooks/use_message_create_or_update.d.ts.map +1 -1
- package/build/hooks/use_message_create_or_update.js +5 -5
- package/build/hooks/use_message_create_or_update.js.map +1 -1
- package/build/hooks/use_message_draft.js +1 -1
- package/build/hooks/use_message_draft.js.map +1 -1
- package/build/hooks/use_message_reaction_toggle.d.ts.map +1 -1
- package/build/hooks/use_message_reaction_toggle.js +2 -2
- package/build/hooks/use_message_reaction_toggle.js.map +1 -1
- package/build/hooks/use_my_gender.d.ts +7 -0
- package/build/hooks/use_my_gender.d.ts.map +1 -0
- package/build/hooks/use_my_gender.js +28 -0
- package/build/hooks/use_my_gender.js.map +1 -0
- package/build/hooks/use_organization.d.ts.map +1 -1
- package/build/hooks/use_organization.js.map +1 -1
- package/build/hooks/use_product_analytics.d.ts.map +1 -1
- package/build/hooks/use_product_analytics.js +1 -1
- package/build/hooks/use_product_analytics.js.map +1 -1
- package/build/hooks/use_report_message.d.ts.map +1 -1
- package/build/hooks/use_report_message.js +1 -1
- package/build/hooks/use_report_message.js.map +1 -1
- package/build/hooks/use_submit_age_check.d.ts.map +1 -1
- package/build/hooks/use_submit_age_check.js +2 -2
- package/build/hooks/use_submit_age_check.js.map +1 -1
- package/build/hooks/use_suspense_api.d.ts +1 -1
- package/build/hooks/use_suspense_api.d.ts.map +1 -1
- package/build/hooks/use_suspense_api.js +1 -1
- package/build/hooks/use_suspense_api.js.map +1 -1
- package/build/hooks/use_typing_indicators.d.ts.map +1 -1
- package/build/hooks/use_typing_indicators.js +1 -1
- package/build/hooks/use_typing_indicators.js.map +1 -1
- package/build/navigation/chat_access_gate.js +4 -4
- package/build/navigation/chat_access_gate.js.map +1 -1
- package/build/navigation/index.d.ts +4 -4
- package/build/navigation/index.d.ts.map +1 -1
- package/build/navigation/index.js +6 -6
- package/build/navigation/index.js.map +1 -1
- package/build/navigation/screenLayout.js +1 -1
- package/build/navigation/screenLayout.js.map +1 -1
- package/build/polyfills/events/Event.d.ts +0 -4
- package/build/polyfills/events/Event.d.ts.map +1 -1
- package/build/polyfills/events/Event.js +5 -1
- package/build/polyfills/events/Event.js.map +1 -1
- package/build/polyfills/events/EventTarget.d.ts +0 -3
- package/build/polyfills/events/EventTarget.d.ts.map +1 -1
- package/build/polyfills/events/EventTarget.js +1 -1
- package/build/polyfills/events/EventTarget.js.map +1 -1
- package/build/screens/age_check/age_check_required_screen.d.ts.map +1 -1
- package/build/screens/age_check/age_check_required_screen.js +5 -5
- package/build/screens/age_check/age_check_required_screen.js.map +1 -1
- package/build/screens/age_check/age_check_underage_screen.d.ts.map +1 -1
- package/build/screens/age_check/age_check_underage_screen.js +1 -1
- 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.map +1 -1
- package/build/screens/age_check/components/age_check_select_birthdate_modal.js +2 -2
- package/build/screens/age_check/components/age_check_select_birthdate_modal.js.map +1 -1
- package/build/screens/attachment_actions/hooks/useDeleteAttachment.js +2 -2
- package/build/screens/attachment_actions/hooks/useDeleteAttachment.js.map +1 -1
- package/build/screens/bug_report_screen.d.ts +1 -1
- package/build/screens/bug_report_screen.d.ts.map +1 -1
- package/build/screens/bug_report_screen.js +9 -9
- package/build/screens/bug_report_screen.js.map +1 -1
- package/build/screens/conversation/message_read_receipts_screen.js +2 -2
- package/build/screens/conversation/message_read_receipts_screen.js.map +1 -1
- package/build/screens/conversation_details_screen.d.ts.map +1 -1
- package/build/screens/conversation_details_screen.js.map +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 +2 -2
- package/build/screens/conversation_filter_recipients/components/checkbox_row.js.map +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 +3 -3
- 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.map +1 -1
- package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.js +1 -1
- package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.js.map +1 -1
- package/build/screens/conversation_filter_recipients/types.d.ts +1 -1
- package/build/screens/conversation_filter_recipients/types.d.ts.map +1 -1
- package/build/screens/conversation_filter_recipients/types.js.map +1 -1
- package/build/screens/conversation_filters/components/rows.d.ts.map +1 -1
- package/build/screens/conversation_filters/components/rows.js +1 -1
- package/build/screens/conversation_filters/components/rows.js.map +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 -2
- package/build/screens/conversation_filters/context/conversation_filter_context.js.map +1 -1
- package/build/screens/conversation_filters/group_filters.d.ts +1 -1
- package/build/screens/conversation_filters/group_filters.d.ts.map +1 -1
- package/build/screens/conversation_filters/group_filters.js +1 -1
- package/build/screens/conversation_filters/group_filters.js.map +1 -1
- package/build/screens/conversation_filters/hooks/filters.d.ts +1 -1
- package/build/screens/conversation_filters/hooks/filters.d.ts.map +1 -1
- package/build/screens/conversation_filters/hooks/filters.js.map +1 -1
- package/build/screens/conversation_filters_screen.d.ts.map +1 -1
- package/build/screens/conversation_filters_screen.js +2 -2
- package/build/screens/conversation_filters_screen.js.map +1 -1
- package/build/screens/conversation_new/components/filter_by_plan.d.ts.map +1 -1
- package/build/screens/conversation_new/components/filter_by_plan.js +4 -4
- package/build/screens/conversation_new/components/filter_by_plan.js.map +1 -1
- package/build/screens/conversation_new/components/form_list.d.ts.map +1 -1
- package/build/screens/conversation_new/components/form_list.js.map +1 -1
- package/build/screens/conversation_new/components/gender_filter_toggle.d.ts +10 -0
- package/build/screens/conversation_new/components/gender_filter_toggle.d.ts.map +1 -0
- package/build/screens/conversation_new/components/gender_filter_toggle.js +50 -0
- package/build/screens/conversation_new/components/gender_filter_toggle.js.map +1 -0
- package/build/screens/conversation_new/components/groups_form.d.ts.map +1 -1
- package/build/screens/conversation_new/components/groups_form.js +28 -4
- package/build/screens/conversation_new/components/groups_form.js.map +1 -1
- package/build/screens/conversation_new/components/services_form.d.ts.map +1 -1
- package/build/screens/conversation_new/components/services_form.js +6 -6
- package/build/screens/conversation_new/components/services_form.js.map +1 -1
- package/build/screens/conversation_new/conversation_new_screen.d.ts.map +1 -1
- package/build/screens/conversation_new/conversation_new_screen.js.map +1 -1
- package/build/screens/conversation_notification_level_select_screen.js +1 -1
- package/build/screens/conversation_notification_level_select_screen.js.map +1 -1
- package/build/screens/conversation_screen.d.ts +1 -1
- package/build/screens/conversation_screen.d.ts.map +1 -1
- package/build/screens/conversation_screen.js +9 -9
- package/build/screens/conversation_screen.js.map +1 -1
- 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 +1 -1
- package/build/screens/conversation_select_recipients/conversation_new_entry_screen.js.map +1 -1
- 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 +1 -1
- 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.map +1 -1
- package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.js +2 -2
- package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.js.map +1 -1
- package/build/screens/conversation_select_type_screen.d.ts +1 -1
- package/build/screens/conversation_select_type_screen.d.ts.map +1 -1
- package/build/screens/conversation_select_type_screen.js +1 -1
- package/build/screens/conversation_select_type_screen.js.map +1 -1
- package/build/screens/conversations/components/list_header_component.js +4 -4
- package/build/screens/conversations/components/list_header_component.js.map +1 -1
- package/build/screens/design_system_screen.js +3 -3
- package/build/screens/design_system_screen.js.map +1 -1
- package/build/screens/group_notification_settings_screen.js.map +1 -1
- package/build/screens/message_actions_screen.js +2 -2
- package/build/screens/message_actions_screen.js.map +1 -1
- package/build/screens/message_report/components/report_reason_list.d.ts.map +1 -1
- package/build/screens/message_report/components/report_reason_list.js +2 -2
- package/build/screens/message_report/components/report_reason_list.js.map +1 -1
- package/build/screens/message_report_screen.d.ts +2 -2
- package/build/screens/message_report_screen.d.ts.map +1 -1
- package/build/screens/message_report_screen.js +5 -5
- package/build/screens/message_report_screen.js.map +1 -1
- package/build/screens/not_found.d.ts.map +1 -1
- package/build/screens/not_found.js +1 -1
- package/build/screens/not_found.js.map +1 -1
- package/build/screens/notification_settings/hooks/groups.js +1 -1
- package/build/screens/notification_settings/hooks/groups.js.map +1 -1
- package/build/screens/notification_settings_screen.js +1 -1
- package/build/screens/notification_settings_screen.js.map +1 -1
- package/build/screens/preferred_app_selection_screen.d.ts.map +1 -1
- package/build/screens/preferred_app_selection_screen.js +1 -1
- package/build/screens/preferred_app_selection_screen.js.map +1 -1
- package/build/screens/send_giphy_screen.js +1 -1
- package/build/screens/send_giphy_screen.js.map +1 -1
- package/build/screens/team_conversation_screen.js +1 -1
- package/build/screens/team_conversation_screen.js.map +1 -1
- package/build/utils/cache/messages_cache.d.ts.map +1 -1
- package/build/utils/cache/messages_cache.js +3 -3
- package/build/utils/cache/messages_cache.js.map +1 -1
- package/build/utils/cache/optimistically_create_message.d.ts.map +1 -1
- package/build/utils/cache/optimistically_create_message.js +2 -2
- package/build/utils/cache/optimistically_create_message.js.map +1 -1
- package/build/utils/cache/optimistically_update_message.d.ts.map +1 -1
- package/build/utils/cache/optimistically_update_message.js +1 -1
- package/build/utils/cache/optimistically_update_message.js.map +1 -1
- package/build/utils/client/client.d.ts.map +1 -1
- package/build/utils/client/client.js.map +1 -1
- package/build/utils/client/transform_request_data.d.ts.map +1 -1
- package/build/utils/client/transform_request_data.js.map +1 -1
- package/build/utils/gender_display_label.d.ts +2 -0
- package/build/utils/gender_display_label.d.ts.map +1 -0
- package/build/utils/gender_display_label.js +11 -0
- package/build/utils/gender_display_label.js.map +1 -0
- package/build/utils/native_adapters/configuration.d.ts +3 -3
- package/build/utils/native_adapters/configuration.d.ts.map +1 -1
- package/build/utils/native_adapters/configuration.js +5 -5
- package/build/utils/native_adapters/configuration.js.map +1 -1
- package/build/utils/performance_tracking.js +1 -1
- package/build/utils/performance_tracking.js.map +1 -1
- 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 +2 -2
- package/src/__tests__/contexts/session_context.tsx +4 -4
- package/src/__tests__/event-polyfill.test.ts +2 -3
- package/src/__tests__/hooks/useTheme.tsx +3 -3
- package/src/__tests__/hooks/use_async_storage.test.tsx +2 -2
- package/src/__tests__/hooks/use_conversation_messages.ts +1 -1
- package/src/__tests__/utils/client.ts +2 -2
- package/src/__tests__/utils/native_adapters/configuration.ts +2 -2
- package/src/__utils__/handlers.ts +1 -1
- package/src/components/conversation/attachments/attachment_card.tsx +2 -2
- package/src/components/conversation/attachments/attachment_deleting_overlay.tsx +1 -1
- package/src/components/conversation/attachments/audio_attachment.tsx +3 -3
- package/src/components/conversation/attachments/expanded_link.tsx +2 -2
- package/src/components/conversation/attachments/generic_file_attachment.tsx +5 -5
- package/src/components/conversation/attachments/giphy_attachment.tsx +3 -3
- package/src/components/conversation/attachments/image_attachment.tsx +7 -7
- package/src/components/conversation/attachments/video_attachment.tsx +4 -4
- package/src/components/conversation/jump_to_bottom_button.tsx +1 -1
- package/src/components/conversation/message.tsx +13 -13
- package/src/components/conversation/message_attachments.tsx +4 -4
- package/src/components/conversation/message_form/message_form_attachment_image.tsx +1 -1
- package/src/components/conversation/message_form/message_form_attachment_video.tsx +1 -1
- package/src/components/conversation/message_form.tsx +15 -17
- package/src/components/conversation/message_markdown.tsx +2 -2
- package/src/components/conversation/message_reaction.tsx +3 -3
- package/src/components/conversation/message_read_receipts.tsx +2 -2
- package/src/components/conversation/messages_disabled_banners.tsx +1 -1
- package/src/components/conversation/reply_shadow_message.tsx +7 -7
- package/src/components/conversation/typing_indicator.tsx +1 -1
- package/src/components/conversations/conversation_preview.tsx +4 -4
- package/src/components/conversations/conversations.tsx +1 -1
- package/src/components/conversations/mute_indicator.tsx +1 -1
- package/src/components/conversations/swipeable_toggle_button.tsx +2 -2
- package/src/components/conversations/unread_count_badge.tsx +1 -1
- package/src/components/display/action_button.tsx +4 -4
- package/src/components/display/banner.tsx +1 -1
- package/src/components/display/banner_collapsible.tsx +1 -1
- package/src/components/display/button.tsx +2 -2
- package/src/components/display/child_notice.tsx +3 -3
- package/src/components/display/heading.tsx +2 -2
- package/src/components/display/icon.tsx +7 -8
- package/src/components/display/icon_button.tsx +2 -2
- package/src/components/display/image_attachment_preview.tsx +3 -3
- package/src/components/display/person.tsx +2 -2
- package/src/components/display/platform_modal_header_buttons.tsx +4 -4
- package/src/components/display/text.tsx +1 -1
- package/src/components/display/text_inline_button.tsx +2 -2
- package/src/components/display/toggle_button.tsx +3 -3
- package/src/components/display/video_attachment_preview.tsx +4 -4
- package/src/components/group_conversation_list.tsx +4 -4
- package/src/components/primitive/avatar_primitive.tsx +1 -1
- package/src/components/primitive/banner_primitive.tsx +6 -6
- package/src/components/primitive/form_sheet.tsx +1 -1
- package/src/components/safe_area_modal.tsx +1 -1
- package/src/contexts/api_provider.tsx +3 -3
- package/src/contexts/chat_context.tsx +4 -4
- package/src/contexts/conversations_context.tsx +3 -3
- package/src/contexts/session_context.tsx +2 -2
- package/src/hooks/groups/use_groups_conversation_create.ts +4 -2
- package/src/hooks/services/use_find_or_create_services_conversation.ts +2 -2
- package/src/hooks/services/use_team_members_for_new_conversation.ts +2 -2
- package/src/hooks/services/use_team_plans.ts +3 -3
- package/src/hooks/use_api_client.ts +1 -1
- package/src/hooks/use_attachment_uploader.ts +3 -3
- package/src/hooks/use_broadcast_typing_status.ts +1 -1
- package/src/hooks/use_conversation.ts +2 -2
- package/src/hooks/use_conversation_membership.ts +2 -2
- package/src/hooks/use_conversation_message.ts +1 -1
- package/src/hooks/use_conversation_messages.ts +1 -1
- package/src/hooks/use_conversation_messages_jolt_events.ts +12 -12
- package/src/hooks/use_create_android_ripple_color.ts +1 -1
- package/src/hooks/use_current_person.ts +1 -1
- package/src/hooks/use_features.ts +3 -2
- package/src/hooks/use_font_scale.ts +1 -1
- package/src/hooks/use_giphy.ts +1 -1
- package/src/hooks/use_interaction_ghost_color.ts +1 -1
- package/src/hooks/use_live_relative_time.ts +1 -1
- package/src/hooks/use_message_create_or_update.ts +7 -7
- package/src/hooks/use_message_draft.ts +2 -2
- package/src/hooks/use_message_reaction_toggle.ts +2 -2
- package/src/hooks/use_my_gender.ts +42 -0
- package/src/hooks/use_organization.ts +1 -1
- package/src/hooks/use_product_analytics.ts +2 -2
- package/src/hooks/use_report_message.ts +2 -2
- package/src/hooks/use_submit_age_check.ts +3 -3
- package/src/hooks/use_suspense_api.ts +3 -3
- package/src/hooks/use_typing_indicators.ts +2 -2
- package/src/navigation/chat_access_gate.tsx +4 -4
- package/src/navigation/index.tsx +12 -12
- package/src/navigation/screenLayout.tsx +1 -1
- package/src/polyfills/events/Event.ts +1 -1
- package/src/polyfills/events/EventTarget.ts +1 -1
- package/src/screens/age_check/age_check_required_screen.tsx +5 -5
- package/src/screens/age_check/age_check_underage_screen.tsx +1 -1
- package/src/screens/age_check/components/age_check_select_birthdate_modal.tsx +2 -2
- package/src/screens/attachment_actions/hooks/useDeleteAttachment.tsx +2 -2
- package/src/screens/bug_report_screen.tsx +13 -13
- package/src/screens/conversation/message_read_receipts_screen.tsx +3 -3
- package/src/screens/conversation_details_screen.tsx +0 -1
- package/src/screens/conversation_filter_recipients/components/checkbox_row.tsx +2 -2
- package/src/screens/conversation_filter_recipients/components/header_row.tsx +4 -4
- package/src/screens/conversation_filter_recipients/conversation_filter_recipients_screen.tsx +1 -1
- package/src/screens/conversation_filter_recipients/types.tsx +1 -1
- package/src/screens/conversation_filters/components/rows.tsx +1 -1
- package/src/screens/conversation_filters/context/conversation_filter_context.tsx +3 -3
- package/src/screens/conversation_filters/group_filters.tsx +3 -3
- package/src/screens/conversation_filters/hooks/filters.ts +1 -1
- package/src/screens/conversation_filters_screen.tsx +2 -2
- package/src/screens/conversation_new/components/filter_by_plan.tsx +4 -4
- package/src/screens/conversation_new/components/form_list.tsx +1 -1
- package/src/screens/conversation_new/components/gender_filter_toggle.tsx +92 -0
- package/src/screens/conversation_new/components/groups_form.tsx +63 -4
- package/src/screens/conversation_new/components/services_form.tsx +7 -7
- package/src/screens/conversation_new/conversation_new_screen.tsx +3 -3
- package/src/screens/conversation_notification_level_select_screen.tsx +1 -1
- package/src/screens/conversation_screen.tsx +13 -13
- package/src/screens/conversation_select_recipients/conversation_new_entry_screen.tsx +3 -3
- package/src/screens/conversation_select_recipients/conversation_select_group_recipients_screen.tsx +3 -3
- package/src/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.tsx +3 -3
- package/src/screens/conversation_select_type_screen.tsx +2 -2
- package/src/screens/conversations/components/list_header_component.tsx +4 -4
- package/src/screens/design_system_screen.tsx +3 -3
- package/src/screens/group_notification_settings_screen.tsx +1 -1
- package/src/screens/message_actions_screen.tsx +3 -3
- package/src/screens/message_report/components/report_reason_list.tsx +2 -2
- package/src/screens/message_report_screen.tsx +8 -8
- package/src/screens/not_found.tsx +1 -1
- package/src/screens/notification_settings/hooks/groups.ts +1 -1
- package/src/screens/notification_settings_screen.tsx +1 -1
- package/src/screens/preferred_app_selection_screen.tsx +1 -1
- package/src/screens/send_giphy_screen.tsx +1 -1
- package/src/screens/team_conversation_screen.tsx +1 -1
- package/src/utils/__tests__/convert_attachments_for_create.test.ts +2 -2
- package/src/utils/cache/messages_cache.ts +3 -3
- package/src/utils/cache/optimistically_create_message.ts +4 -4
- package/src/utils/cache/optimistically_update_message.ts +1 -1
- package/src/utils/client/client.ts +0 -1
- package/src/utils/client/transform_request_data.ts +1 -1
- package/src/utils/gender_display_label.ts +10 -0
- package/src/utils/native_adapters/configuration.ts +5 -5
- package/src/utils/performance_tracking.ts +1 -1
- package/src/utils/theme.ts +1 -1
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { ActivityIndicator, StyleSheet, View } from 'react-native'
|
|
3
|
+
import { Heading, Switch, Text } from '../../../components'
|
|
4
|
+
import { useTheme } from '../../../hooks'
|
|
5
|
+
import { genderDisplayLabel } from '../../../utils/gender_display_label'
|
|
6
|
+
|
|
7
|
+
interface FilterableGenderContentProps {
|
|
8
|
+
genderValue: string
|
|
9
|
+
enabled: boolean
|
|
10
|
+
onToggle: (enabled: boolean) => void
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function FilterableGenderContent({ genderValue, enabled, onToggle }: FilterableGenderContentProps) {
|
|
14
|
+
const { colors } = useTheme()
|
|
15
|
+
const styles = useStyles()
|
|
16
|
+
const displayLabel = genderDisplayLabel(genderValue)
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<>
|
|
20
|
+
<View style={styles.toggleRow}>
|
|
21
|
+
<Text>{displayLabel}</Text>
|
|
22
|
+
<Switch
|
|
23
|
+
value={enabled}
|
|
24
|
+
onValueChange={onToggle}
|
|
25
|
+
accessibilityLabel={`Filter by ${displayLabel}`}
|
|
26
|
+
/>
|
|
27
|
+
</View>
|
|
28
|
+
<Text style={{ color: colors.textColorDefaultSecondary }}>
|
|
29
|
+
Filter limited to your profile's set gender
|
|
30
|
+
</Text>
|
|
31
|
+
</>
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function NoGenderContent({ isFetching }: { isFetching: boolean }) {
|
|
36
|
+
const { colors } = useTheme()
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<>
|
|
40
|
+
<Text>Gender</Text>
|
|
41
|
+
{isFetching ? (
|
|
42
|
+
<ActivityIndicator size="small" />
|
|
43
|
+
) : (
|
|
44
|
+
<Text style={{ color: colors.textColorDefaultSecondary }}>
|
|
45
|
+
Set a gender in your Church Center profile to enable gender filtering.
|
|
46
|
+
</Text>
|
|
47
|
+
)}
|
|
48
|
+
</>
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
interface GenderFilterToggleProps {
|
|
53
|
+
genderValue: string | null
|
|
54
|
+
isFetching: boolean
|
|
55
|
+
enabled: boolean
|
|
56
|
+
onToggle: (enabled: boolean) => void
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export function GenderFilterToggle({
|
|
60
|
+
genderValue,
|
|
61
|
+
isFetching,
|
|
62
|
+
enabled,
|
|
63
|
+
onToggle,
|
|
64
|
+
}: GenderFilterToggleProps) {
|
|
65
|
+
const styles = useStyles()
|
|
66
|
+
const hasFilterableGender = genderValue !== null && genderValue !== 'Prefer not to say'
|
|
67
|
+
|
|
68
|
+
return (
|
|
69
|
+
<View style={styles.container}>
|
|
70
|
+
<Heading variant="h3">Filter by</Heading>
|
|
71
|
+
{hasFilterableGender ? (
|
|
72
|
+
<FilterableGenderContent genderValue={genderValue} enabled={enabled} onToggle={onToggle} />
|
|
73
|
+
) : (
|
|
74
|
+
<NoGenderContent isFetching={isFetching} />
|
|
75
|
+
)}
|
|
76
|
+
</View>
|
|
77
|
+
)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const useStyles = () => {
|
|
81
|
+
return StyleSheet.create({
|
|
82
|
+
container: {
|
|
83
|
+
padding: 16,
|
|
84
|
+
gap: 8,
|
|
85
|
+
},
|
|
86
|
+
toggleRow: {
|
|
87
|
+
flexDirection: 'row',
|
|
88
|
+
justifyContent: 'space-between',
|
|
89
|
+
alignItems: 'center',
|
|
90
|
+
},
|
|
91
|
+
})
|
|
92
|
+
}
|
|
@@ -10,11 +10,14 @@ import {
|
|
|
10
10
|
useGroupMembersForNewConversation,
|
|
11
11
|
} from '../../../hooks/groups/use_group_members_for_new_conversation'
|
|
12
12
|
import { useGroupsConversationCreate } from '../../../hooks/groups/use_groups_conversation_create'
|
|
13
|
+
import { useMyGender } from '../../../hooks/use_my_gender'
|
|
13
14
|
import { GroupsGroupResource } from '../../../types'
|
|
14
15
|
import { GraphId } from '../../../types/resources/group_resource'
|
|
15
16
|
import { pluralize } from '../../../utils'
|
|
16
|
-
import {
|
|
17
|
+
import { genderDisplayLabel } from '../../../utils/gender_display_label'
|
|
17
18
|
import { Haptic } from '../../../utils/native_adapters'
|
|
19
|
+
import { Divider, FormList } from './form_list'
|
|
20
|
+
import { GenderFilterToggle } from './gender_filter_toggle'
|
|
18
21
|
|
|
19
22
|
type GroupsFormProps = {
|
|
20
23
|
groupId: number
|
|
@@ -23,7 +26,14 @@ type GroupsFormProps = {
|
|
|
23
26
|
|
|
24
27
|
export const GroupsForm = ({ groupId, chat_group_graph_id }: GroupsFormProps) => {
|
|
25
28
|
const navigation = useNavigation()
|
|
26
|
-
const [title, setTitle] = useState
|
|
29
|
+
const [title, setTitle] = useState('')
|
|
30
|
+
const [genderFilterEnabled, setGenderFilterEnabled] = useState(false)
|
|
31
|
+
const {
|
|
32
|
+
isFeatureEnabled: genderFilterAvailable,
|
|
33
|
+
genderId,
|
|
34
|
+
genderValue,
|
|
35
|
+
isFetching: genderFetching,
|
|
36
|
+
} = useMyGender()
|
|
27
37
|
const { data: group } = useSuspenseGet<GroupsGroupResource>({
|
|
28
38
|
url: `/me/groups/${groupId}`,
|
|
29
39
|
data: {
|
|
@@ -36,6 +46,23 @@ export const GroupsForm = ({ groupId, chat_group_graph_id }: GroupsFormProps) =>
|
|
|
36
46
|
|
|
37
47
|
const groupMemberships = useGroupMembersForNewConversation({ id: groupId })
|
|
38
48
|
|
|
49
|
+
const activeGenderId = genderFilterEnabled ? genderId : null
|
|
50
|
+
|
|
51
|
+
const handleGenderToggle = (enabled: boolean) => {
|
|
52
|
+
const displayLabel = genderValue ? genderDisplayLabel(genderValue) : ''
|
|
53
|
+
const defaultTitle = `${group.name} (${displayLabel})`
|
|
54
|
+
const shouldAutoPopulateTitle = enabled && genderValue && title === ''
|
|
55
|
+
const shouldClearAutoPopulatedTitle = !enabled && title === defaultTitle
|
|
56
|
+
|
|
57
|
+
setGenderFilterEnabled(enabled)
|
|
58
|
+
|
|
59
|
+
if (shouldAutoPopulateTitle) {
|
|
60
|
+
setTitle(defaultTitle)
|
|
61
|
+
} else if (shouldClearAutoPopulatedTitle) {
|
|
62
|
+
setTitle('')
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
39
66
|
const redirectToConversation = useCallback(
|
|
40
67
|
(conversationId: number) => {
|
|
41
68
|
// navigate to the conversation screen
|
|
@@ -53,6 +80,7 @@ export const GroupsForm = ({ groupId, chat_group_graph_id }: GroupsFormProps) =>
|
|
|
53
80
|
const { mutate: handleSave, isPending } = useGroupsConversationCreate({
|
|
54
81
|
groupId,
|
|
55
82
|
title,
|
|
83
|
+
genderId: activeGenderId,
|
|
56
84
|
onSuccess: redirectToConversation,
|
|
57
85
|
})
|
|
58
86
|
|
|
@@ -67,6 +95,11 @@ export const GroupsForm = ({ groupId, chat_group_graph_id }: GroupsFormProps) =>
|
|
|
67
95
|
group={group}
|
|
68
96
|
title={title}
|
|
69
97
|
setTitle={setTitle}
|
|
98
|
+
genderFilterAvailable={genderFilterAvailable}
|
|
99
|
+
genderFilterEnabled={genderFilterEnabled}
|
|
100
|
+
genderValue={genderValue}
|
|
101
|
+
genderFetching={genderFetching}
|
|
102
|
+
onGenderToggle={handleGenderToggle}
|
|
70
103
|
groupMemberships={groupMemberships}
|
|
71
104
|
/>
|
|
72
105
|
}
|
|
@@ -83,12 +116,27 @@ export const GroupsForm = ({ groupId, chat_group_graph_id }: GroupsFormProps) =>
|
|
|
83
116
|
|
|
84
117
|
interface FormContentProps {
|
|
85
118
|
group: GroupsGroupResource
|
|
86
|
-
title
|
|
119
|
+
title: string
|
|
87
120
|
setTitle: (title: string) => void
|
|
121
|
+
genderFilterAvailable: boolean
|
|
122
|
+
genderFilterEnabled: boolean
|
|
123
|
+
genderValue: string | null
|
|
124
|
+
genderFetching: boolean
|
|
125
|
+
onGenderToggle: (enabled: boolean) => void
|
|
88
126
|
groupMemberships: GroupMembersForNewConversationResult
|
|
89
127
|
}
|
|
90
128
|
|
|
91
|
-
function FormContent({
|
|
129
|
+
function FormContent({
|
|
130
|
+
group,
|
|
131
|
+
title,
|
|
132
|
+
setTitle,
|
|
133
|
+
genderFilterAvailable,
|
|
134
|
+
genderFilterEnabled,
|
|
135
|
+
genderValue,
|
|
136
|
+
genderFetching,
|
|
137
|
+
onGenderToggle,
|
|
138
|
+
groupMemberships,
|
|
139
|
+
}: FormContentProps) {
|
|
92
140
|
const styles = useStyles()
|
|
93
141
|
const inputRef = useRef<TextInput>(null)
|
|
94
142
|
const currentPerson = useCurrentPerson()
|
|
@@ -129,6 +177,17 @@ function FormContent({ group, title, setTitle, groupMemberships }: FormContentPr
|
|
|
129
177
|
/>
|
|
130
178
|
</Pressable>
|
|
131
179
|
<Divider />
|
|
180
|
+
{genderFilterAvailable && (
|
|
181
|
+
<>
|
|
182
|
+
<GenderFilterToggle
|
|
183
|
+
genderValue={genderValue}
|
|
184
|
+
isFetching={genderFetching}
|
|
185
|
+
enabled={genderFilterEnabled}
|
|
186
|
+
onToggle={onGenderToggle}
|
|
187
|
+
/>
|
|
188
|
+
<Divider />
|
|
189
|
+
</>
|
|
190
|
+
)}
|
|
132
191
|
<View style={styles.memberSection}>
|
|
133
192
|
<Heading variant="h3">{memberHeaderLabel}</Heading>
|
|
134
193
|
{hasChildren && (
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { StackActions, useNavigation } from '@react-navigation/native'
|
|
2
|
+
import { uniq } from 'lodash'
|
|
2
3
|
import React, { useCallback, useEffect, useMemo, useState } from 'react'
|
|
3
4
|
import { StyleSheet, View } from 'react-native'
|
|
4
5
|
import { Badge, Banner, ChildNotice, Heading, Switch, TextButton } from '../../../components'
|
|
5
6
|
import { ActionButton } from '../../../components/display/action_button'
|
|
6
|
-
import { Divider, FormList } from './form_list'
|
|
7
|
-
import { pluralize } from '../../../utils'
|
|
8
|
-
import { uniq } from 'lodash'
|
|
9
|
-
import { FilterByPlan } from './filter_by_plan'
|
|
10
|
-
import { useTeamMembersForNewConversation } from '../../../hooks/services/use_team_members_for_new_conversation'
|
|
11
7
|
import { useFindOrCreateServicesConversation } from '../../../hooks/services/use_find_or_create_services_conversation'
|
|
8
|
+
import { useServicesTeams } from '../../../hooks/services/use_services_team'
|
|
9
|
+
import { useTeamMembersForNewConversation } from '../../../hooks/services/use_team_members_for_new_conversation'
|
|
12
10
|
import { ConversationResource, MemberResource } from '../../../types'
|
|
11
|
+
import { pluralize } from '../../../utils'
|
|
12
|
+
import { Haptic } from '../../../utils/native_adapters'
|
|
13
13
|
import { tokens } from '../../../vendor/tapestry/tokens'
|
|
14
14
|
import { TeamFilterTypes } from '../../conversation_filter_recipients/types'
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
15
|
+
import { FilterByPlan } from './filter_by_plan'
|
|
16
|
+
import { Divider, FormList } from './form_list'
|
|
17
17
|
|
|
18
18
|
type ServicesFormProps = {
|
|
19
19
|
initialTeamIds?: number[]
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { StaticScreenProps } from '@react-navigation/native'
|
|
2
2
|
import React from 'react'
|
|
3
|
-
import { GroupsForm } from './components/groups_form'
|
|
4
|
-
import { ServicesForm } from './components/services_form'
|
|
5
|
-
import { SourceAppErrorCard } from './components/source_app_error_card'
|
|
6
3
|
import { AppName } from '../../types/resources/app_name'
|
|
7
4
|
import { GraphId } from '../../types/resources/group_resource'
|
|
8
5
|
import { TeamFilterTypes } from '../conversation_filter_recipients/types'
|
|
6
|
+
import { GroupsForm } from './components/groups_form'
|
|
7
|
+
import { ServicesForm } from './components/services_form'
|
|
8
|
+
import { SourceAppErrorCard } from './components/source_app_error_card'
|
|
9
9
|
|
|
10
10
|
type ConversationNewScreenProps = StaticScreenProps<{
|
|
11
11
|
group_id?: number
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { StaticScreenProps, useNavigation } from '@react-navigation/native'
|
|
2
2
|
import React from 'react'
|
|
3
3
|
import { StyleSheet } from 'react-native'
|
|
4
|
-
import FormSheet, { getFormSheetScreenOptions } from '../components/primitive/form_sheet'
|
|
5
4
|
import { PressableRow } from '../components'
|
|
5
|
+
import FormSheet, { getFormSheetScreenOptions } from '../components/primitive/form_sheet'
|
|
6
6
|
import { useTheme } from '../hooks'
|
|
7
7
|
import { useConversation } from '../hooks/use_conversation'
|
|
8
8
|
import { useConversationMembershipUpdate } from '../hooks/use_conversation_membership'
|
|
@@ -8,38 +8,38 @@ import {
|
|
|
8
8
|
useTheme as useNavigationTheme,
|
|
9
9
|
useRoute,
|
|
10
10
|
} from '@react-navigation/native'
|
|
11
|
-
import dayjs from '../utils/dayjs'
|
|
12
11
|
import React, { useCallback, useEffect, useRef, useState } from 'react'
|
|
13
12
|
import { FlatList, Platform, StyleSheet, View } from 'react-native'
|
|
14
13
|
import { useSafeAreaInsets } from 'react-native-safe-area-context'
|
|
15
14
|
import { Badge, Icon, Text } from '../components'
|
|
15
|
+
import { EmptyConversationBlankState } from '../components/conversation/empty_conversation_blank_state'
|
|
16
|
+
import { JumpToBottomButton } from '../components/conversation/jump_to_bottom_button'
|
|
17
|
+
import { Message } from '../components/conversation/message'
|
|
18
|
+
import { MessageForm } from '../components/conversation/message_form'
|
|
16
19
|
import {
|
|
17
20
|
LeaderMessagesDisabledBanner,
|
|
18
21
|
MemberMessagesDisabledBanner,
|
|
19
22
|
} from '../components/conversation/messages_disabled_banners'
|
|
20
|
-
import {
|
|
21
|
-
import BlankState from '../components/primitive/blank_state_primitive'
|
|
22
|
-
import { Message } from '../components/conversation/message'
|
|
23
|
-
import { MessageForm } from '../components/conversation/message_form'
|
|
23
|
+
import { ReplyShadowMessage } from '../components/conversation/reply_shadow_message'
|
|
24
24
|
import { TypingIndicator } from '../components/conversation/typing_indicator'
|
|
25
25
|
import { KeyboardView } from '../components/display/keyboard_view'
|
|
26
|
+
import BlankState from '../components/primitive/blank_state_primitive'
|
|
27
|
+
import { ConversationContextProvider } from '../contexts/conversation_context'
|
|
26
28
|
import { useTheme } from '../hooks'
|
|
29
|
+
import { useConversation } from '../hooks/use_conversation'
|
|
30
|
+
import { useConversationJoltEvents } from '../hooks/use_conversation_jolt_events'
|
|
31
|
+
import { useConversationMessages } from '../hooks/use_conversation_messages'
|
|
32
|
+
import { useConversationMessagesJoltEvents } from '../hooks/use_conversation_messages_jolt_events'
|
|
33
|
+
import { useMarkLatestMessageRead } from '../hooks/use_mark_latest_message_read'
|
|
27
34
|
import {
|
|
28
35
|
normalizeAnalyticsMetadata,
|
|
29
36
|
usePublishProductAnalyticsEvent,
|
|
30
37
|
} from '../hooks/use_product_analytics'
|
|
31
|
-
import { useConversation } from '../hooks/use_conversation'
|
|
32
|
-
import { useConversationMessages } from '../hooks/use_conversation_messages'
|
|
33
|
-
import { useConversationMessagesJoltEvents } from '../hooks/use_conversation_messages_jolt_events'
|
|
34
38
|
import { MessageResource } from '../types'
|
|
35
39
|
import { ConversationBadgeResource } from '../types/resources/conversation_badge'
|
|
36
40
|
import { getRelativeDateStatus } from '../utils/date'
|
|
37
|
-
import
|
|
41
|
+
import dayjs from '../utils/dayjs'
|
|
38
42
|
import { CONVERSATION_MESSAGE_LIST_PADDING_HORIZONTAL } from '../utils/styles'
|
|
39
|
-
import { useConversationJoltEvents } from '../hooks/use_conversation_jolt_events'
|
|
40
|
-
import { JumpToBottomButton } from '../components/conversation/jump_to_bottom_button'
|
|
41
|
-
import { ReplyShadowMessage } from '../components/conversation/reply_shadow_message'
|
|
42
|
-
import { ConversationContextProvider } from '../contexts/conversation_context'
|
|
43
43
|
|
|
44
44
|
export type ConversationRouteProps = {
|
|
45
45
|
conversation_id: number
|
|
@@ -2,15 +2,15 @@ import { useNavigation } from '@react-navigation/native'
|
|
|
2
2
|
import type { NativeStackNavigationProp } from '@react-navigation/native-stack'
|
|
3
3
|
import React, { useEffect } from 'react'
|
|
4
4
|
import { ScrollView, StyleSheet, View } from 'react-native'
|
|
5
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context'
|
|
5
6
|
import { Button, Heading } from '../../components'
|
|
6
7
|
import { DefaultLoading } from '../../components/page/loading'
|
|
7
|
-
import {
|
|
8
|
+
import { useNewConversationEntry } from '../../hooks/use_new_conversation_entry'
|
|
9
|
+
import { Haptic } from '../../utils/native_adapters'
|
|
8
10
|
import type {
|
|
9
11
|
ConversationSelectRecipientsParams,
|
|
10
12
|
ConversationSelectRecipientsScreenProps,
|
|
11
13
|
} from './types/screen_props'
|
|
12
|
-
import { useNewConversationEntry } from '../../hooks/use_new_conversation_entry'
|
|
13
|
-
import { Haptic } from '../../utils/native_adapters'
|
|
14
14
|
|
|
15
15
|
type NewConversationStackParamList = {
|
|
16
16
|
ConversationNewEntry: ConversationSelectRecipientsParams | undefined
|
package/src/screens/conversation_select_recipients/conversation_select_group_recipients_screen.tsx
CHANGED
|
@@ -2,13 +2,13 @@ import { useNavigation } from '@react-navigation/native'
|
|
|
2
2
|
import { partition } from 'lodash'
|
|
3
3
|
import React from 'react'
|
|
4
4
|
import { SectionList, StyleSheet, View } from 'react-native'
|
|
5
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context'
|
|
5
6
|
import { Heading, Text } from '../../components'
|
|
6
|
-
import { GroupsGroupResource } from '../../types'
|
|
7
7
|
import { useGroupsGroups } from '../../hooks/use_groups_groups'
|
|
8
|
-
import {
|
|
9
|
-
import { ConversationSelectRecipientsScreenProps } from './types/screen_props'
|
|
8
|
+
import { GroupsGroupResource } from '../../types'
|
|
10
9
|
import { GroupsRecipientRow } from './components/groups_recipient_row'
|
|
11
10
|
import { RestrictedGroupRow } from './components/restricted_group_row'
|
|
11
|
+
import { ConversationSelectRecipientsScreenProps } from './types/screen_props'
|
|
12
12
|
|
|
13
13
|
const SectionKey = {
|
|
14
14
|
my: 'my',
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { useNavigation } from '@react-navigation/native'
|
|
2
2
|
import React from 'react'
|
|
3
3
|
import { FlatList, StyleSheet, View } from 'react-native'
|
|
4
|
-
import { Button, Heading } from '../../components'
|
|
5
4
|
import { useSafeAreaInsets } from 'react-native-safe-area-context'
|
|
6
|
-
import {
|
|
5
|
+
import { Button, Heading } from '../../components'
|
|
6
|
+
import { Haptic } from '../../utils/native_adapters'
|
|
7
7
|
import { useServiceTypesWithTeams } from '../conversation_filter_recipients/hooks/use_service_types_with_teams'
|
|
8
8
|
import { ServiceTypeWithTeams, TeamFilterTypes } from '../conversation_filter_recipients/types'
|
|
9
9
|
import { TeamRecipientRow } from './components/team_recipient_row'
|
|
10
|
-
import {
|
|
10
|
+
import { ConversationSelectRecipientsScreenProps } from './types/screen_props'
|
|
11
11
|
|
|
12
12
|
export const ConversationSelectTeamsILeadRecipientsScreen = ({
|
|
13
13
|
route,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
1
|
import { StaticScreenProps, useNavigation } from '@react-navigation/native'
|
|
2
|
+
import React from 'react'
|
|
3
3
|
import FormSheet, { getFormSheetScreenOptions } from '../components/primitive/form_sheet'
|
|
4
|
-
import { Haptic } from '../utils/native_adapters'
|
|
5
4
|
import { AppName } from '../types/resources/app_name'
|
|
6
5
|
import { GraphId } from '../types/resources/group_resource'
|
|
6
|
+
import { Haptic } from '../utils/native_adapters'
|
|
7
7
|
|
|
8
8
|
export const ConversationSelectTypeScreenOptions = getFormSheetScreenOptions({
|
|
9
9
|
headerTitle: 'New conversation',
|
|
@@ -3,15 +3,15 @@ import React, { useCallback, useMemo } from 'react'
|
|
|
3
3
|
import { Alert, ScrollView, StyleSheet, View } from 'react-native'
|
|
4
4
|
import { Heading, TextButton, ToggleButton } from '../../../components'
|
|
5
5
|
import { useAtFontScaleBreakpoint, useCurrentPersonCache, useTheme } from '../../../hooks'
|
|
6
|
+
import { useCanCreateConversations } from '../../../hooks'
|
|
7
|
+
import { useAppName } from '../../../hooks/use_app_name'
|
|
6
8
|
import { useMarkAllRead } from '../../../hooks/use_conversations_actions'
|
|
7
9
|
import { useCanDisplayGroups } from '../../../hooks/use_groups'
|
|
8
|
-
import { useCanCreateConversations } from '../../../hooks'
|
|
9
10
|
import { useNewConversationEntry } from '../../../hooks/use_new_conversation_entry'
|
|
10
|
-
import {
|
|
11
|
+
import { MAX_FONT_SIZE_MULTIPLIER_LANDMARK } from '../../../utils'
|
|
12
|
+
import { Haptic } from '../../../utils/native_adapters'
|
|
11
13
|
import { ConversationsScreenProps } from '../conversations_screen'
|
|
12
14
|
import { ChatGroupBadge } from './chat_group_badge'
|
|
13
|
-
import { Haptic } from '../../../utils/native_adapters'
|
|
14
|
-
import { MAX_FONT_SIZE_MULTIPLIER_LANDMARK } from '../../../utils'
|
|
15
15
|
import { ListHeaderActionButton } from './list_header_action_button'
|
|
16
16
|
|
|
17
17
|
const ROW_PADDING_HORIZONTAL = 16
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React, { useState } from 'react'
|
|
2
2
|
import { Alert, Pressable, ScrollView, StyleSheet, View } from 'react-native'
|
|
3
3
|
import type { ViewStyle } from 'react-native'
|
|
4
|
-
import { useInteractionGhostBackgroundColor, useTheme } from '../hooks'
|
|
5
4
|
import {
|
|
6
5
|
Avatar,
|
|
7
6
|
AvatarGroup,
|
|
@@ -22,15 +21,16 @@ import {
|
|
|
22
21
|
TextInlineButton,
|
|
23
22
|
ImageAttachmentPreview,
|
|
24
23
|
} from '../components/display'
|
|
24
|
+
import { VideoAttachmentPreview } from '../components/display/video_attachment_preview'
|
|
25
|
+
import BannerPrimitive from '../components/primitive/banner_primitive'
|
|
25
26
|
import BlankState from '../components/primitive/blank_state_primitive'
|
|
27
|
+
import { useInteractionGhostBackgroundColor, useTheme } from '../hooks'
|
|
26
28
|
import {
|
|
27
29
|
MAX_FONT_SIZE_MULTIPLIER,
|
|
28
30
|
platformPressedOpacityStyle,
|
|
29
31
|
platformFontWeightMedium,
|
|
30
32
|
Haptic,
|
|
31
33
|
} from '../utils'
|
|
32
|
-
import BannerPrimitive from '../components/primitive/banner_primitive'
|
|
33
|
-
import { VideoAttachmentPreview } from '../components/display/video_attachment_preview'
|
|
34
34
|
|
|
35
35
|
// =================================
|
|
36
36
|
// ====== Docs Utils ===============
|
|
@@ -6,8 +6,8 @@ import { Platform, StyleSheet, View } from 'react-native'
|
|
|
6
6
|
import { Heading, Icon, Text } from '../components'
|
|
7
7
|
import { useTheme } from '../hooks'
|
|
8
8
|
import { platformFontWeightBold } from '../utils/styles'
|
|
9
|
-
import { useGroup } from './notification_settings/hooks/groups'
|
|
10
9
|
import type { GroupNotificationLevelSelectScreenProps } from './group_notification_level_select_screen'
|
|
10
|
+
import { useGroup } from './notification_settings/hooks/groups'
|
|
11
11
|
|
|
12
12
|
type GroupNotificationSettingsStackParamList = {
|
|
13
13
|
GroupNotificationLevelSelect: GroupNotificationLevelSelectScreenProps['route']['params']
|
|
@@ -6,16 +6,16 @@ import React, { useCallback } from 'react'
|
|
|
6
6
|
import { Alert, Platform, StyleSheet, View } from 'react-native'
|
|
7
7
|
import { Text } from '../components'
|
|
8
8
|
import { useReactionStyles } from '../components/conversation/message_reaction'
|
|
9
|
-
import { REACTION_EMOJIS } from '../utils'
|
|
10
9
|
import FormSheet, { getFormSheetScreenOptions } from '../components/primitive/form_sheet'
|
|
11
10
|
import { useCreateAndroidRippleColor, useFontScale, useTheme } from '../hooks'
|
|
12
11
|
import { useApiClient } from '../hooks/use_api_client'
|
|
13
12
|
import { useConversationMessages } from '../hooks/use_conversation_messages'
|
|
13
|
+
import { availableFeatures, useFeatures } from '../hooks/use_features'
|
|
14
14
|
import { useMessageReactionToggle } from '../hooks/use_message_reaction_toggle'
|
|
15
|
+
import { MessageResource } from '../types'
|
|
15
16
|
import { ReactionCountResource } from '../types/resources/reaction'
|
|
17
|
+
import { REACTION_EMOJIS } from '../utils'
|
|
16
18
|
import { Clipboard, Haptic } from '../utils/native_adapters'
|
|
17
|
-
import { MessageResource } from '../types'
|
|
18
|
-
import { availableFeatures, useFeatures } from '../hooks/use_features'
|
|
19
19
|
|
|
20
20
|
export const MessageActionsScreenOptions = getFormSheetScreenOptions({
|
|
21
21
|
sheetAllowedDetents: [0.5],
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import { PlatformPressable } from '@react-navigation/elements'
|
|
1
2
|
import React from 'react'
|
|
2
3
|
import { View, StyleSheet } from 'react-native'
|
|
3
|
-
import { PlatformPressable } from '@react-navigation/elements'
|
|
4
4
|
import { Text } from '../../../components'
|
|
5
5
|
import { useTheme, useCreateAndroidRippleColor } from '../../../hooks'
|
|
6
|
-
import { Haptic } from '../../../utils/native_adapters'
|
|
7
6
|
import {
|
|
8
7
|
MESSAGE_REPORT_REASONS,
|
|
9
8
|
MessageReportReason,
|
|
10
9
|
} from '../../../types/resources/message_report'
|
|
10
|
+
import { Haptic } from '../../../utils/native_adapters'
|
|
11
11
|
|
|
12
12
|
const MESSAGE_REPORT_REASONS_LIST = Object.entries(MESSAGE_REPORT_REASONS).map(([key, label]) => ({
|
|
13
13
|
key: key as MessageReportReason,
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { View, StyleSheet, TextInput, ScrollView } from 'react-native'
|
|
1
|
+
import { StaticScreenProps, useNavigation, StackActions } from '@react-navigation/native'
|
|
3
2
|
import type {
|
|
4
3
|
NativeStackNavigationOptions,
|
|
5
4
|
NativeStackScreenProps,
|
|
6
5
|
} from '@react-navigation/native-stack'
|
|
7
|
-
import {
|
|
6
|
+
import React, { useCallback, useLayoutEffect, useMemo, useState } from 'react'
|
|
7
|
+
import { View, StyleSheet, TextInput, ScrollView } from 'react-native'
|
|
8
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context'
|
|
8
9
|
import { Spinner, Text, KeyboardView } from '../components'
|
|
9
|
-
import BlankState from '../components/primitive/blank_state_primitive'
|
|
10
|
-
import { useTheme } from '../hooks'
|
|
11
|
-
import { useReportMessage } from '../hooks/use_report_message'
|
|
12
10
|
import {
|
|
13
11
|
HeaderDismissButton,
|
|
14
12
|
HeaderTextButton,
|
|
15
13
|
} from '../components/display/platform_modal_header_buttons'
|
|
16
|
-
import
|
|
14
|
+
import BlankState from '../components/primitive/blank_state_primitive'
|
|
15
|
+
import { useTheme } from '../hooks'
|
|
17
16
|
import { useConversationMessages } from '../hooks/use_conversation_messages'
|
|
17
|
+
import { useReportMessage } from '../hooks/use_report_message'
|
|
18
18
|
import { MessageResource } from '../types'
|
|
19
19
|
import { MessageReportReason } from '../types/resources/message_report'
|
|
20
|
+
import { platformFontWeightBold } from '../utils'
|
|
20
21
|
import { MessagePreview } from './message_report/components/message_preview'
|
|
21
22
|
import { ReportReasonList } from './message_report/components/report_reason_list'
|
|
22
|
-
import { platformFontWeightBold } from '../utils'
|
|
23
23
|
|
|
24
24
|
const MAX_DETAIL_LENGTH = 500
|
|
25
25
|
|
|
@@ -4,8 +4,8 @@ import { getRequestQueryKey, useApiClient } from '../../../hooks'
|
|
|
4
4
|
import { useSuspenseGet, useSuspensePaginator } from '../../../hooks'
|
|
5
5
|
import { ApiCollection, ApiResource } from '../../../types'
|
|
6
6
|
import { GroupMembership, GroupResourceWithMembership } from '../../../types/resources'
|
|
7
|
-
import { throwResponseError } from '../../../utils/response_error'
|
|
8
7
|
import { updateRecordInPagesData } from '../../../utils'
|
|
8
|
+
import { throwResponseError } from '../../../utils/response_error'
|
|
9
9
|
|
|
10
10
|
export const getGroupsRequestArgs = () => ({
|
|
11
11
|
url: '/me/groups',
|
|
@@ -2,10 +2,10 @@ import { PlatformPressable } from '@react-navigation/elements'
|
|
|
2
2
|
import { StaticScreenProps, useNavigation } from '@react-navigation/native'
|
|
3
3
|
import React, { useCallback, useEffect, type ReactNode } from 'react'
|
|
4
4
|
import { FlatList, Platform, StyleSheet, View, type ViewProps, type ViewStyle } from 'react-native'
|
|
5
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context'
|
|
5
6
|
import { Badge, Heading, Icon, Text } from '../components'
|
|
6
7
|
import { HeaderTextButton } from '../components/display/platform_modal_header_buttons'
|
|
7
8
|
import { useTheme } from '../hooks'
|
|
8
|
-
import { useSafeAreaInsets } from 'react-native-safe-area-context'
|
|
9
9
|
import { isDefined } from '../types'
|
|
10
10
|
import { useGroups } from './notification_settings/hooks/groups'
|
|
11
11
|
import { useChatTypes } from './preferred_app/hooks/use_chat_types'
|
|
@@ -5,9 +5,9 @@ import React, { type PropsWithChildren } from 'react'
|
|
|
5
5
|
import { Image, StyleSheet, View, type ViewStyle } from 'react-native'
|
|
6
6
|
import { Heading, Icon, Text } from '../components'
|
|
7
7
|
import { useApiClient, useTheme } from '../hooks'
|
|
8
|
-
import { PreferredApp, useChatTypes } from './preferred_app/hooks/use_chat_types'
|
|
9
8
|
import { useAppName } from '../hooks/use_app_name'
|
|
10
9
|
import { throwResponseError } from '../utils/response_error'
|
|
10
|
+
import { PreferredApp, useChatTypes } from './preferred_app/hooks/use_chat_types'
|
|
11
11
|
|
|
12
12
|
export type PreferredAppSelectionScreenProps = StaticScreenProps<{
|
|
13
13
|
chatTypeId: number | string
|
|
@@ -2,8 +2,8 @@ import { StackActions, StaticScreenProps, useNavigation } from '@react-navigatio
|
|
|
2
2
|
import React from 'react'
|
|
3
3
|
import { Image as NativeImage, Platform, StyleSheet, useWindowDimensions, View } from 'react-native'
|
|
4
4
|
import { Button, IconButton, IconString, TextButton } from '../components'
|
|
5
|
-
import BlankState from '../components/primitive/blank_state_primitive'
|
|
6
5
|
import { DefaultLoading } from '../components/page/loading'
|
|
6
|
+
import BlankState from '../components/primitive/blank_state_primitive'
|
|
7
7
|
import FormSheet, { getFormSheetScreenOptions } from '../components/primitive/form_sheet'
|
|
8
8
|
import { useCreateAndroidRippleColor, useTheme } from '../hooks'
|
|
9
9
|
import { useGiphy } from '../hooks/use_giphy'
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { StackActions, StaticScreenProps, useNavigation } from '@react-navigation/native'
|
|
2
2
|
import { useQuery, useQueryClient } from '@tanstack/react-query'
|
|
3
3
|
import { useEffect } from 'react'
|
|
4
|
+
import { DefaultLoading } from '../components/page/loading'
|
|
4
5
|
import { useApiClient } from '../hooks'
|
|
5
6
|
import {
|
|
6
7
|
buildTeamAndPlanParams,
|
|
7
8
|
findOrCreateServicesConversation,
|
|
8
9
|
} from '../hooks/services/use_find_or_create_services_conversation'
|
|
9
|
-
import { DefaultLoading } from '../components/page/loading'
|
|
10
10
|
|
|
11
11
|
export type TeamConversationRouteProps = {
|
|
12
12
|
plan_id?: number
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DenormalizedExpandedLinkAttachmentResource } from '../../types/resources/denormalized_attachment_resource'
|
|
2
2
|
import {
|
|
3
3
|
DenormalizedMessageAttachmentResourceForCreate,
|
|
4
4
|
DenormalizedGiphyAttachmentResourceForCreate,
|
|
5
5
|
} from '../../types/resources/denormalized_attachment_resource_for_create'
|
|
6
|
-
import {
|
|
6
|
+
import { convertAttachmentsForCreate } from '../convert_attachments_for_create'
|
|
7
7
|
|
|
8
8
|
describe('convertAttachmentsForCreate', () => {
|
|
9
9
|
it('converts MessageAttachment correctly', () => {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { InfiniteData, QueryClient } from '@tanstack/react-query'
|
|
2
|
+
import { getRequestQueryKey } from '../../hooks/use_suspense_api'
|
|
2
3
|
import { ApiCollection, ApiResource, MessageResource } from '../../types'
|
|
3
|
-
import { deleteRecordInPagesData } from './page_mutations'
|
|
4
|
-
import { updateOrCreateRecordInPagesData, updateRecordInPagesData } from './page_mutations'
|
|
5
4
|
import { JoltReactionEvent } from '../../types/jolt_events'
|
|
6
5
|
import { transformReactionEventDataToReactionCountResource } from '../jolt/transform_reaction_event_data_to_reaction_count_resource'
|
|
7
6
|
import { getMessagesRequestArgs } from '../request/get_messages'
|
|
8
|
-
import {
|
|
7
|
+
import { updateOrCreateRecordInPagesData, updateRecordInPagesData } from './page_mutations'
|
|
8
|
+
import { deleteRecordInPagesData } from './page_mutations'
|
|
9
9
|
|
|
10
10
|
export function updateCacheWithMessage(
|
|
11
11
|
queryClient: QueryClient,
|