@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.
Files changed (694) hide show
  1. package/build/components/conversation/attachments/attachment_card.d.ts +3 -3
  2. package/build/components/conversation/attachments/attachment_card.d.ts.map +1 -1
  3. package/build/components/conversation/attachments/attachment_card.js +3 -7
  4. package/build/components/conversation/attachments/attachment_card.js.map +1 -1
  5. package/build/components/conversation/attachments/attachment_deleting_overlay.d.ts +1 -2
  6. package/build/components/conversation/attachments/attachment_deleting_overlay.d.ts.map +1 -1
  7. package/build/components/conversation/attachments/attachment_deleting_overlay.js +12 -7
  8. package/build/components/conversation/attachments/attachment_deleting_overlay.js.map +1 -1
  9. package/build/components/conversation/attachments/audio_attachment.d.ts +1 -2
  10. package/build/components/conversation/attachments/audio_attachment.d.ts.map +1 -1
  11. package/build/components/conversation/attachments/audio_attachment.js +6 -23
  12. package/build/components/conversation/attachments/audio_attachment.js.map +1 -1
  13. package/build/components/conversation/attachments/expanded_link.d.ts +1 -2
  14. package/build/components/conversation/attachments/expanded_link.d.ts.map +1 -1
  15. package/build/components/conversation/attachments/expanded_link.js +2 -8
  16. package/build/components/conversation/attachments/expanded_link.js.map +1 -1
  17. package/build/components/conversation/attachments/generic_file_attachment.d.ts +1 -2
  18. package/build/components/conversation/attachments/generic_file_attachment.d.ts.map +1 -1
  19. package/build/components/conversation/attachments/generic_file_attachment.js +2 -12
  20. package/build/components/conversation/attachments/generic_file_attachment.js.map +1 -1
  21. package/build/components/conversation/attachments/giphy_attachment.d.ts +1 -2
  22. package/build/components/conversation/attachments/giphy_attachment.d.ts.map +1 -1
  23. package/build/components/conversation/attachments/giphy_attachment.js +2 -7
  24. package/build/components/conversation/attachments/giphy_attachment.js.map +1 -1
  25. package/build/components/conversation/attachments/image_attachment.d.ts +1 -2
  26. package/build/components/conversation/attachments/image_attachment.d.ts.map +1 -1
  27. package/build/components/conversation/attachments/image_attachment.js +16 -53
  28. package/build/components/conversation/attachments/image_attachment.js.map +1 -1
  29. package/build/components/conversation/attachments/video_attachment.d.ts +1 -2
  30. package/build/components/conversation/attachments/video_attachment.d.ts.map +1 -1
  31. package/build/components/conversation/attachments/video_attachment.js +3 -13
  32. package/build/components/conversation/attachments/video_attachment.js.map +1 -1
  33. package/build/components/conversation/conversation_start_banner.d.ts +1 -2
  34. package/build/components/conversation/conversation_start_banner.d.ts.map +1 -1
  35. package/build/components/conversation/conversation_start_banner.js +2 -14
  36. package/build/components/conversation/conversation_start_banner.js.map +1 -1
  37. package/build/components/conversation/empty_conversation_blank_state.d.ts +1 -1
  38. package/build/components/conversation/empty_conversation_blank_state.d.ts.map +1 -1
  39. package/build/components/conversation/empty_conversation_blank_state.js +2 -9
  40. package/build/components/conversation/empty_conversation_blank_state.js.map +1 -1
  41. package/build/components/conversation/jump_to_bottom_button.d.ts +1 -1
  42. package/build/components/conversation/jump_to_bottom_button.d.ts.map +1 -1
  43. package/build/components/conversation/jump_to_bottom_button.js +2 -10
  44. package/build/components/conversation/jump_to_bottom_button.js.map +1 -1
  45. package/build/components/conversation/message.d.ts +1 -2
  46. package/build/components/conversation/message.d.ts.map +1 -1
  47. package/build/components/conversation/message.js +2 -53
  48. package/build/components/conversation/message.js.map +1 -1
  49. package/build/components/conversation/message_attachments.d.ts +1 -2
  50. package/build/components/conversation/message_attachments.d.ts.map +1 -1
  51. package/build/components/conversation/message_attachments.js +17 -21
  52. package/build/components/conversation/message_attachments.js.map +1 -1
  53. package/build/components/conversation/message_form/message_form_attachment_file.d.ts +1 -2
  54. package/build/components/conversation/message_form/message_form_attachment_file.d.ts.map +1 -1
  55. package/build/components/conversation/message_form/message_form_attachment_file.js +2 -2
  56. package/build/components/conversation/message_form/message_form_attachment_file.js.map +1 -1
  57. package/build/components/conversation/message_form/message_form_attachment_image.d.ts +1 -2
  58. package/build/components/conversation/message_form/message_form_attachment_image.d.ts.map +1 -1
  59. package/build/components/conversation/message_form/message_form_attachment_image.js +2 -2
  60. package/build/components/conversation/message_form/message_form_attachment_image.js.map +1 -1
  61. package/build/components/conversation/message_form/message_form_attachment_video.d.ts +1 -2
  62. package/build/components/conversation/message_form/message_form_attachment_video.d.ts.map +1 -1
  63. package/build/components/conversation/message_form/message_form_attachment_video.js +2 -2
  64. package/build/components/conversation/message_form/message_form_attachment_video.js.map +1 -1
  65. package/build/components/conversation/message_form.d.ts +5 -6
  66. package/build/components/conversation/message_form.d.ts.map +1 -1
  67. package/build/components/conversation/message_form.js +20 -82
  68. package/build/components/conversation/message_form.js.map +1 -1
  69. package/build/components/conversation/message_markdown.d.ts +1 -2
  70. package/build/components/conversation/message_markdown.d.ts.map +1 -1
  71. package/build/components/conversation/message_markdown.js +8 -16
  72. package/build/components/conversation/message_markdown.js.map +1 -1
  73. package/build/components/conversation/message_reaction.d.ts +1 -2
  74. package/build/components/conversation/message_reaction.d.ts.map +1 -1
  75. package/build/components/conversation/message_reaction.js +3 -5
  76. package/build/components/conversation/message_reaction.js.map +1 -1
  77. package/build/components/conversation/message_read_receipts.d.ts +1 -2
  78. package/build/components/conversation/message_read_receipts.d.ts.map +1 -1
  79. package/build/components/conversation/message_read_receipts.js +3 -13
  80. package/build/components/conversation/message_read_receipts.js.map +1 -1
  81. package/build/components/conversation/messages_disabled_banners.d.ts +7 -3
  82. package/build/components/conversation/messages_disabled_banners.d.ts.map +1 -1
  83. package/build/components/conversation/messages_disabled_banners.js +11 -11
  84. package/build/components/conversation/messages_disabled_banners.js.map +1 -1
  85. package/build/components/conversation/reply_connectors.d.ts +2 -2
  86. package/build/components/conversation/reply_connectors.d.ts.map +1 -1
  87. package/build/components/conversation/reply_connectors.js +18 -50
  88. package/build/components/conversation/reply_connectors.js.map +1 -1
  89. package/build/components/conversation/reply_shadow_message.d.ts +1 -2
  90. package/build/components/conversation/reply_shadow_message.d.ts.map +1 -1
  91. package/build/components/conversation/reply_shadow_message.js +16 -46
  92. package/build/components/conversation/reply_shadow_message.js.map +1 -1
  93. package/build/components/conversation/system_message.d.ts +1 -2
  94. package/build/components/conversation/system_message.d.ts.map +1 -1
  95. package/build/components/conversation/system_message.js +3 -12
  96. package/build/components/conversation/system_message.js.map +1 -1
  97. package/build/components/conversation/typing_indicator.d.ts +1 -2
  98. package/build/components/conversation/typing_indicator.d.ts.map +1 -1
  99. package/build/components/conversation/typing_indicator.js +3 -13
  100. package/build/components/conversation/typing_indicator.js.map +1 -1
  101. package/build/components/conversations/conversation_actions.d.ts +2 -2
  102. package/build/components/conversations/conversation_actions.d.ts.map +1 -1
  103. package/build/components/conversations/conversation_actions.js +4 -10
  104. package/build/components/conversations/conversation_actions.js.map +1 -1
  105. package/build/components/conversations/conversation_preview.d.ts +2 -3
  106. package/build/components/conversations/conversation_preview.d.ts.map +1 -1
  107. package/build/components/conversations/conversation_preview.js +7 -37
  108. package/build/components/conversations/conversation_preview.js.map +1 -1
  109. package/build/components/conversations/conversations.d.ts +1 -1
  110. package/build/components/conversations/conversations.d.ts.map +1 -1
  111. package/build/components/conversations/conversations.js +16 -17
  112. package/build/components/conversations/conversations.js.map +1 -1
  113. package/build/components/conversations/conversations_blank_state.d.ts +1 -2
  114. package/build/components/conversations/conversations_blank_state.d.ts.map +1 -1
  115. package/build/components/conversations/conversations_blank_state.js +2 -12
  116. package/build/components/conversations/conversations_blank_state.js.map +1 -1
  117. package/build/components/conversations/mute_indicator.d.ts +1 -2
  118. package/build/components/conversations/mute_indicator.d.ts.map +1 -1
  119. package/build/components/conversations/mute_indicator.js +2 -2
  120. package/build/components/conversations/mute_indicator.js.map +1 -1
  121. package/build/components/conversations/swipeable_toggle_button.d.ts +1 -2
  122. package/build/components/conversations/swipeable_toggle_button.d.ts.map +1 -1
  123. package/build/components/conversations/swipeable_toggle_button.js +3 -10
  124. package/build/components/conversations/swipeable_toggle_button.js.map +1 -1
  125. package/build/components/conversations/unread_count_badge.d.ts +1 -2
  126. package/build/components/conversations/unread_count_badge.d.ts.map +1 -1
  127. package/build/components/conversations/unread_count_badge.js +3 -7
  128. package/build/components/conversations/unread_count_badge.js.map +1 -1
  129. package/build/components/display/action_button.d.ts +1 -1
  130. package/build/components/display/action_button.d.ts.map +1 -1
  131. package/build/components/display/action_button.js +3 -13
  132. package/build/components/display/action_button.js.map +1 -1
  133. package/build/components/display/adult_requirement_notice.d.ts +1 -2
  134. package/build/components/display/adult_requirement_notice.d.ts.map +1 -1
  135. package/build/components/display/adult_requirement_notice.js +2 -4
  136. package/build/components/display/adult_requirement_notice.js.map +1 -1
  137. package/build/components/display/avatar.d.ts +1 -2
  138. package/build/components/display/avatar.d.ts.map +1 -1
  139. package/build/components/display/avatar.js +2 -7
  140. package/build/components/display/avatar.js.map +1 -1
  141. package/build/components/display/avatar_group.d.ts +1 -2
  142. package/build/components/display/avatar_group.d.ts.map +1 -1
  143. package/build/components/display/avatar_group.js +2 -9
  144. package/build/components/display/avatar_group.js.map +1 -1
  145. package/build/components/display/badge.d.ts +1 -2
  146. package/build/components/display/badge.d.ts.map +1 -1
  147. package/build/components/display/badge.js +6 -37
  148. package/build/components/display/badge.js.map +1 -1
  149. package/build/components/display/banner.d.ts +3 -3
  150. package/build/components/display/banner.d.ts.map +1 -1
  151. package/build/components/display/banner.js +4 -11
  152. package/build/components/display/banner.js.map +1 -1
  153. package/build/components/display/banner_collapsible.d.ts +2 -2
  154. package/build/components/display/banner_collapsible.d.ts.map +1 -1
  155. package/build/components/display/banner_collapsible.js +2 -10
  156. package/build/components/display/banner_collapsible.js.map +1 -1
  157. package/build/components/display/button.d.ts +1 -2
  158. package/build/components/display/button.d.ts.map +1 -1
  159. package/build/components/display/button.js +3 -14
  160. package/build/components/display/button.js.map +1 -1
  161. package/build/components/display/child_notice.d.ts +1 -2
  162. package/build/components/display/child_notice.d.ts.map +1 -1
  163. package/build/components/display/child_notice.js +3 -15
  164. package/build/components/display/child_notice.js.map +1 -1
  165. package/build/components/display/conversation_avatar.d.ts +1 -2
  166. package/build/components/display/conversation_avatar.d.ts.map +1 -1
  167. package/build/components/display/conversation_avatar.js +5 -9
  168. package/build/components/display/conversation_avatar.js.map +1 -1
  169. package/build/components/display/emoji_avatar.d.ts +1 -2
  170. package/build/components/display/emoji_avatar.d.ts.map +1 -1
  171. package/build/components/display/emoji_avatar.js +2 -12
  172. package/build/components/display/emoji_avatar.js.map +1 -1
  173. package/build/components/display/file_attachment_preview.d.ts +1 -1
  174. package/build/components/display/file_attachment_preview.d.ts.map +1 -1
  175. package/build/components/display/file_attachment_preview.js +3 -17
  176. package/build/components/display/file_attachment_preview.js.map +1 -1
  177. package/build/components/display/heading.d.ts +1 -2
  178. package/build/components/display/heading.d.ts.map +1 -1
  179. package/build/components/display/heading.js +2 -4
  180. package/build/components/display/heading.js.map +1 -1
  181. package/build/components/display/icon.d.ts +1 -2
  182. package/build/components/display/icon.d.ts.map +1 -1
  183. package/build/components/display/icon.js +4 -4
  184. package/build/components/display/icon.js.map +1 -1
  185. package/build/components/display/icon_avatar.d.ts +1 -2
  186. package/build/components/display/icon_avatar.d.ts.map +1 -1
  187. package/build/components/display/icon_avatar.js +2 -12
  188. package/build/components/display/icon_avatar.js.map +1 -1
  189. package/build/components/display/icon_button.d.ts +1 -2
  190. package/build/components/display/icon_button.d.ts.map +1 -1
  191. package/build/components/display/icon_button.js +3 -5
  192. package/build/components/display/icon_button.js.map +1 -1
  193. package/build/components/display/image.d.ts +1 -2
  194. package/build/components/display/image.d.ts.map +1 -1
  195. package/build/components/display/image.js +3 -7
  196. package/build/components/display/image.js.map +1 -1
  197. package/build/components/display/image_attachment_preview.d.ts +1 -1
  198. package/build/components/display/image_attachment_preview.d.ts.map +1 -1
  199. package/build/components/display/image_attachment_preview.js +2 -7
  200. package/build/components/display/image_attachment_preview.js.map +1 -1
  201. package/build/components/display/keyboard_view.d.ts +1 -2
  202. package/build/components/display/keyboard_view.d.ts.map +1 -1
  203. package/build/components/display/keyboard_view.js +4 -9
  204. package/build/components/display/keyboard_view.js.map +1 -1
  205. package/build/components/display/person.d.ts +1 -2
  206. package/build/components/display/person.d.ts.map +1 -1
  207. package/build/components/display/person.js +2 -12
  208. package/build/components/display/person.js.map +1 -1
  209. package/build/components/display/platform_modal_header_buttons.d.ts +3 -3
  210. package/build/components/display/platform_modal_header_buttons.d.ts.map +1 -1
  211. package/build/components/display/platform_modal_header_buttons.js +5 -10
  212. package/build/components/display/platform_modal_header_buttons.js.map +1 -1
  213. package/build/components/display/pressable_row.d.ts +1 -1
  214. package/build/components/display/pressable_row.d.ts.map +1 -1
  215. package/build/components/display/pressable_row.js +2 -7
  216. package/build/components/display/pressable_row.js.map +1 -1
  217. package/build/components/display/spinner.d.ts +1 -2
  218. package/build/components/display/spinner.d.ts.map +1 -1
  219. package/build/components/display/spinner.js +3 -9
  220. package/build/components/display/spinner.js.map +1 -1
  221. package/build/components/display/switch.d.ts +1 -2
  222. package/build/components/display/switch.d.ts.map +1 -1
  223. package/build/components/display/switch.js +2 -2
  224. package/build/components/display/switch.js.map +1 -1
  225. package/build/components/display/tabs.d.ts +1 -1
  226. package/build/components/display/tabs.d.ts.map +1 -1
  227. package/build/components/display/tabs.js +21 -31
  228. package/build/components/display/tabs.js.map +1 -1
  229. package/build/components/display/text.d.ts +1 -2
  230. package/build/components/display/text.d.ts.map +1 -1
  231. package/build/components/display/text.js +2 -4
  232. package/build/components/display/text.js.map +1 -1
  233. package/build/components/display/text_button.d.ts +1 -2
  234. package/build/components/display/text_button.d.ts.map +1 -1
  235. package/build/components/display/text_button.js +3 -8
  236. package/build/components/display/text_button.js.map +1 -1
  237. package/build/components/display/text_inline_button.d.ts +1 -2
  238. package/build/components/display/text_inline_button.d.ts.map +1 -1
  239. package/build/components/display/text_inline_button.js +4 -5
  240. package/build/components/display/text_inline_button.js.map +1 -1
  241. package/build/components/display/text_input.d.ts +1 -1
  242. package/build/components/display/text_input.d.ts.map +1 -1
  243. package/build/components/display/text_input.js +2 -1
  244. package/build/components/display/text_input.js.map +1 -1
  245. package/build/components/display/toggle_button.d.ts +1 -2
  246. package/build/components/display/toggle_button.d.ts.map +1 -1
  247. package/build/components/display/toggle_button.js +3 -9
  248. package/build/components/display/toggle_button.js.map +1 -1
  249. package/build/components/display/video_attachment_preview.d.ts +1 -1
  250. package/build/components/display/video_attachment_preview.d.ts.map +1 -1
  251. package/build/components/display/video_attachment_preview.js +3 -20
  252. package/build/components/display/video_attachment_preview.js.map +1 -1
  253. package/build/components/group_conversation_list.d.ts +1 -1
  254. package/build/components/group_conversation_list.d.ts.map +1 -1
  255. package/build/components/group_conversation_list.js +4 -14
  256. package/build/components/group_conversation_list.js.map +1 -1
  257. package/build/components/page/component_error_boundary.d.ts +2 -2
  258. package/build/components/page/component_error_boundary.d.ts.map +1 -1
  259. package/build/components/page/component_error_boundary.js +2 -4
  260. package/build/components/page/component_error_boundary.js.map +1 -1
  261. package/build/components/page/loading.d.ts +1 -2
  262. package/build/components/page/loading.d.ts.map +1 -1
  263. package/build/components/page/loading.js +2 -4
  264. package/build/components/page/loading.js.map +1 -1
  265. package/build/components/page/page_error_boundary.d.ts +2 -2
  266. package/build/components/page/page_error_boundary.d.ts.map +1 -1
  267. package/build/components/page/page_error_boundary.js +11 -32
  268. package/build/components/page/page_error_boundary.js.map +1 -1
  269. package/build/components/primitive/avatar_primitive.js +14 -41
  270. package/build/components/primitive/avatar_primitive.js.map +1 -1
  271. package/build/components/primitive/banner_primitive.js +10 -18
  272. package/build/components/primitive/banner_primitive.js.map +1 -1
  273. package/build/components/primitive/blank_state_primitive.js +8 -12
  274. package/build/components/primitive/blank_state_primitive.js.map +1 -1
  275. package/build/components/primitive/form_sheet.d.ts +1 -1
  276. package/build/components/primitive/form_sheet.d.ts.map +1 -1
  277. package/build/components/primitive/form_sheet.js +9 -22
  278. package/build/components/primitive/form_sheet.js.map +1 -1
  279. package/build/components/safe_area_modal.d.ts +1 -1
  280. package/build/components/safe_area_modal.d.ts.map +1 -1
  281. package/build/components/safe_area_modal.js +2 -3
  282. package/build/components/safe_area_modal.js.map +1 -1
  283. package/build/contexts/api_provider.d.ts +1 -2
  284. package/build/contexts/api_provider.d.ts.map +1 -1
  285. package/build/contexts/api_provider.js +3 -5
  286. package/build/contexts/api_provider.js.map +1 -1
  287. package/build/contexts/chat_context.d.ts +2 -1
  288. package/build/contexts/chat_context.d.ts.map +1 -1
  289. package/build/contexts/chat_context.js +9 -2
  290. package/build/contexts/chat_context.js.map +1 -1
  291. package/build/contexts/conversation_context.d.ts +2 -2
  292. package/build/contexts/conversation_context.d.ts.map +1 -1
  293. package/build/contexts/conversation_context.js +3 -2
  294. package/build/contexts/conversation_context.js.map +1 -1
  295. package/build/contexts/conversations_context.d.ts +2 -2
  296. package/build/contexts/conversations_context.d.ts.map +1 -1
  297. package/build/contexts/conversations_context.js +3 -2
  298. package/build/contexts/conversations_context.js.map +1 -1
  299. package/build/contexts/session_context.d.ts +1 -1
  300. package/build/contexts/session_context.d.ts.map +1 -1
  301. package/build/contexts/session_context.js +3 -2
  302. package/build/contexts/session_context.js.map +1 -1
  303. package/build/hooks/direct_messages/find_direct_message_conversation.d.ts +14 -0
  304. package/build/hooks/direct_messages/find_direct_message_conversation.d.ts.map +1 -0
  305. package/build/hooks/direct_messages/find_direct_message_conversation.js +10 -0
  306. package/build/hooks/direct_messages/find_direct_message_conversation.js.map +1 -0
  307. package/build/hooks/direct_messages/resolve_message_available_members_link.d.ts +16 -0
  308. package/build/hooks/direct_messages/resolve_message_available_members_link.d.ts.map +1 -0
  309. package/build/hooks/direct_messages/resolve_message_available_members_link.js +24 -0
  310. package/build/hooks/direct_messages/resolve_message_available_members_link.js.map +1 -0
  311. package/build/hooks/direct_messages/use_find_or_create_direct_message_conversation.d.ts.map +1 -1
  312. package/build/hooks/direct_messages/use_find_or_create_direct_message_conversation.js +1 -8
  313. package/build/hooks/direct_messages/use_find_or_create_direct_message_conversation.js.map +1 -1
  314. package/build/hooks/direct_messages/use_message_available_members.d.ts +6 -0
  315. package/build/hooks/direct_messages/use_message_available_members.d.ts.map +1 -0
  316. package/build/hooks/direct_messages/use_message_available_members.js +40 -0
  317. package/build/hooks/direct_messages/use_message_available_members.js.map +1 -0
  318. package/build/hooks/direct_messages/use_message_available_members_action.d.ts +6 -0
  319. package/build/hooks/direct_messages/use_message_available_members_action.d.ts.map +1 -0
  320. package/build/hooks/direct_messages/use_message_available_members_action.js +30 -0
  321. package/build/hooks/direct_messages/use_message_available_members_action.js.map +1 -0
  322. package/build/hooks/index.d.ts +1 -1
  323. package/build/hooks/index.d.ts.map +1 -1
  324. package/build/hooks/index.js +1 -1
  325. package/build/hooks/index.js.map +1 -1
  326. package/build/hooks/use_animated_message_background_color.d.ts +2 -2
  327. package/build/hooks/use_conversation.d.ts +1 -1
  328. package/build/hooks/use_conversation.d.ts.map +1 -1
  329. package/build/hooks/use_conversation.js +1 -0
  330. package/build/hooks/use_conversation.js.map +1 -1
  331. package/build/hooks/use_conversation_membership.d.ts +1 -1
  332. package/build/hooks/use_conversation_membership.d.ts.map +1 -1
  333. package/build/hooks/use_conversations_actions.d.ts +36 -36
  334. package/build/hooks/use_current_person.d.ts.map +1 -1
  335. package/build/hooks/use_current_person.js +1 -0
  336. package/build/hooks/use_current_person.js.map +1 -1
  337. package/build/hooks/use_direct_messages_eligible.d.ts +2 -0
  338. package/build/hooks/use_direct_messages_eligible.d.ts.map +1 -0
  339. package/build/hooks/use_direct_messages_eligible.js +9 -0
  340. package/build/hooks/use_direct_messages_eligible.js.map +1 -0
  341. package/build/hooks/use_features.d.ts +0 -1
  342. package/build/hooks/use_features.d.ts.map +1 -1
  343. package/build/hooks/use_features.js +0 -1
  344. package/build/hooks/use_features.js.map +1 -1
  345. package/build/hooks/use_person_settings.d.ts +1 -1
  346. package/build/index.d.ts +2 -1
  347. package/build/index.d.ts.map +1 -1
  348. package/build/index.js.map +1 -1
  349. package/build/navigation/chat_access_gate.d.ts +2 -2
  350. package/build/navigation/chat_access_gate.d.ts.map +1 -1
  351. package/build/navigation/chat_access_gate.js +6 -5
  352. package/build/navigation/chat_access_gate.js.map +1 -1
  353. package/build/navigation/index.d.ts +37 -39
  354. package/build/navigation/index.d.ts.map +1 -1
  355. package/build/navigation/index.js +21 -23
  356. package/build/navigation/index.js.map +1 -1
  357. package/build/navigation/screenLayout.d.ts +2 -2
  358. package/build/navigation/screenLayout.d.ts.map +1 -1
  359. package/build/navigation/screenLayout.js +3 -9
  360. package/build/navigation/screenLayout.js.map +1 -1
  361. package/build/polyfills/events/EventTarget.d.ts +1 -1
  362. package/build/polyfills/events/EventTarget.d.ts.map +1 -1
  363. package/build/polyfills/events/EventTarget.js.map +1 -1
  364. package/build/screens/age_check/age_check_required_screen.d.ts +1 -2
  365. package/build/screens/age_check/age_check_required_screen.d.ts.map +1 -1
  366. package/build/screens/age_check/age_check_required_screen.js +3 -46
  367. package/build/screens/age_check/age_check_required_screen.js.map +1 -1
  368. package/build/screens/age_check/age_check_underage_screen.d.ts +1 -2
  369. package/build/screens/age_check/age_check_underage_screen.d.ts.map +1 -1
  370. package/build/screens/age_check/age_check_underage_screen.js +2 -25
  371. package/build/screens/age_check/age_check_underage_screen.js.map +1 -1
  372. package/build/screens/age_check/components/age_check_select_birthdate_modal.d.ts +1 -2
  373. package/build/screens/age_check/components/age_check_select_birthdate_modal.d.ts.map +1 -1
  374. package/build/screens/age_check/components/age_check_select_birthdate_modal.js +6 -25
  375. package/build/screens/age_check/components/age_check_select_birthdate_modal.js.map +1 -1
  376. package/build/screens/attachment_actions/attachment_actions_screen.d.ts +1 -2
  377. package/build/screens/attachment_actions/attachment_actions_screen.d.ts.map +1 -1
  378. package/build/screens/attachment_actions/attachment_actions_screen.js +3 -5
  379. package/build/screens/attachment_actions/attachment_actions_screen.js.map +1 -1
  380. package/build/screens/avatar_picker/avatar_picker_screen.d.ts +1 -2
  381. package/build/screens/avatar_picker/avatar_picker_screen.d.ts.map +1 -1
  382. package/build/screens/avatar_picker/avatar_picker_screen.js +9 -36
  383. package/build/screens/avatar_picker/avatar_picker_screen.js.map +1 -1
  384. package/build/screens/avatar_picker/avatar_preview.d.ts +1 -1
  385. package/build/screens/avatar_picker/avatar_preview.d.ts.map +1 -1
  386. package/build/screens/avatar_picker/avatar_preview.js +5 -9
  387. package/build/screens/avatar_picker/avatar_preview.js.map +1 -1
  388. package/build/screens/avatar_picker/color_picker.d.ts +1 -2
  389. package/build/screens/avatar_picker/color_picker.d.ts.map +1 -1
  390. package/build/screens/avatar_picker/color_picker.js +4 -5
  391. package/build/screens/avatar_picker/color_picker.js.map +1 -1
  392. package/build/screens/avatar_picker/emoji_tab.d.ts +1 -2
  393. package/build/screens/avatar_picker/emoji_tab.d.ts.map +1 -1
  394. package/build/screens/avatar_picker/emoji_tab.js +12 -13
  395. package/build/screens/avatar_picker/emoji_tab.js.map +1 -1
  396. package/build/screens/avatar_picker/icon_grid.d.ts +1 -2
  397. package/build/screens/avatar_picker/icon_grid.d.ts.map +1 -1
  398. package/build/screens/avatar_picker/icon_grid.js +4 -5
  399. package/build/screens/avatar_picker/icon_grid.js.map +1 -1
  400. package/build/screens/avatar_picker/upload_tab.d.ts +1 -2
  401. package/build/screens/avatar_picker/upload_tab.d.ts.map +1 -1
  402. package/build/screens/avatar_picker/upload_tab.js +3 -4
  403. package/build/screens/avatar_picker/upload_tab.js.map +1 -1
  404. package/build/screens/bug_report_screen.d.ts +1 -2
  405. package/build/screens/bug_report_screen.d.ts.map +1 -1
  406. package/build/screens/bug_report_screen.js +11 -117
  407. package/build/screens/bug_report_screen.js.map +1 -1
  408. package/build/screens/conversation/message_read_receipts_screen.d.ts +1 -2
  409. package/build/screens/conversation/message_read_receipts_screen.d.ts.map +1 -1
  410. package/build/screens/conversation/message_read_receipts_screen.js +4 -20
  411. package/build/screens/conversation/message_read_receipts_screen.js.map +1 -1
  412. package/build/screens/conversation_details_screen.d.ts +1 -2
  413. package/build/screens/conversation_details_screen.d.ts.map +1 -1
  414. package/build/screens/conversation_details_screen.js +43 -106
  415. package/build/screens/conversation_details_screen.js.map +1 -1
  416. package/build/screens/conversation_filter_recipients/components/checkbox_row.d.ts +1 -1
  417. package/build/screens/conversation_filter_recipients/components/checkbox_row.d.ts.map +1 -1
  418. package/build/screens/conversation_filter_recipients/components/checkbox_row.js +3 -9
  419. package/build/screens/conversation_filter_recipients/components/checkbox_row.js.map +1 -1
  420. package/build/screens/conversation_filter_recipients/components/header_row.d.ts +1 -1
  421. package/build/screens/conversation_filter_recipients/components/header_row.d.ts.map +1 -1
  422. package/build/screens/conversation_filter_recipients/components/header_row.js +2 -12
  423. package/build/screens/conversation_filter_recipients/components/header_row.js.map +1 -1
  424. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.d.ts +1 -2
  425. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.d.ts.map +1 -1
  426. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.js +20 -44
  427. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.js.map +1 -1
  428. package/build/screens/conversation_filters/components/conversation_filters.d.ts +1 -2
  429. package/build/screens/conversation_filters/components/conversation_filters.d.ts.map +1 -1
  430. package/build/screens/conversation_filters/components/conversation_filters.js +13 -14
  431. package/build/screens/conversation_filters/components/conversation_filters.js.map +1 -1
  432. package/build/screens/conversation_filters/components/rows.d.ts +6 -6
  433. package/build/screens/conversation_filters/components/rows.d.ts.map +1 -1
  434. package/build/screens/conversation_filters/components/rows.js +7 -34
  435. package/build/screens/conversation_filters/components/rows.js.map +1 -1
  436. package/build/screens/conversation_filters/context/conversation_filter_context.d.ts +1 -1
  437. package/build/screens/conversation_filters/context/conversation_filter_context.d.ts.map +1 -1
  438. package/build/screens/conversation_filters/context/conversation_filter_context.js +2 -1
  439. package/build/screens/conversation_filters/context/conversation_filter_context.js.map +1 -1
  440. package/build/screens/conversation_filters/group_filters.d.ts +1 -2
  441. package/build/screens/conversation_filters/group_filters.d.ts.map +1 -1
  442. package/build/screens/conversation_filters/group_filters.js +2 -2
  443. package/build/screens/conversation_filters/group_filters.js.map +1 -1
  444. package/build/screens/conversation_filters/team_filters.d.ts +1 -2
  445. package/build/screens/conversation_filters/team_filters.d.ts.map +1 -1
  446. package/build/screens/conversation_filters/team_filters.js +2 -2
  447. package/build/screens/conversation_filters/team_filters.js.map +1 -1
  448. package/build/screens/conversation_filters_screen.d.ts +1 -2
  449. package/build/screens/conversation_filters_screen.d.ts.map +1 -1
  450. package/build/screens/conversation_filters_screen.js +4 -16
  451. package/build/screens/conversation_filters_screen.js.map +1 -1
  452. package/build/screens/conversation_new/components/avatar_selection_row.d.ts +2 -3
  453. package/build/screens/conversation_new/components/avatar_selection_row.d.ts.map +1 -1
  454. package/build/screens/conversation_new/components/avatar_selection_row.js +6 -16
  455. package/build/screens/conversation_new/components/avatar_selection_row.js.map +1 -1
  456. package/build/screens/conversation_new/components/filter_by_plan.d.ts +3 -4
  457. package/build/screens/conversation_new/components/filter_by_plan.d.ts.map +1 -1
  458. package/build/screens/conversation_new/components/filter_by_plan.js +22 -46
  459. package/build/screens/conversation_new/components/filter_by_plan.js.map +1 -1
  460. package/build/screens/conversation_new/components/form_list.d.ts +2 -3
  461. package/build/screens/conversation_new/components/form_list.d.ts.map +1 -1
  462. package/build/screens/conversation_new/components/form_list.js +4 -6
  463. package/build/screens/conversation_new/components/form_list.js.map +1 -1
  464. package/build/screens/conversation_new/components/gender_filter_toggle.d.ts +1 -2
  465. package/build/screens/conversation_new/components/gender_filter_toggle.d.ts.map +1 -1
  466. package/build/screens/conversation_new/components/gender_filter_toggle.js +4 -20
  467. package/build/screens/conversation_new/components/gender_filter_toggle.js.map +1 -1
  468. package/build/screens/conversation_new/components/groups_form.d.ts +1 -2
  469. package/build/screens/conversation_new/components/groups_form.d.ts.map +1 -1
  470. package/build/screens/conversation_new/components/groups_form.js +4 -30
  471. package/build/screens/conversation_new/components/groups_form.js.map +1 -1
  472. package/build/screens/conversation_new/components/services_form.d.ts +1 -2
  473. package/build/screens/conversation_new/components/services_form.d.ts.map +1 -1
  474. package/build/screens/conversation_new/components/services_form.js +27 -61
  475. package/build/screens/conversation_new/components/services_form.js.map +1 -1
  476. package/build/screens/conversation_new/components/source_app_error_card.d.ts +1 -1
  477. package/build/screens/conversation_new/components/source_app_error_card.d.ts.map +1 -1
  478. package/build/screens/conversation_new/components/source_app_error_card.js +2 -3
  479. package/build/screens/conversation_new/components/source_app_error_card.js.map +1 -1
  480. package/build/screens/conversation_new/conversation_new_screen.d.ts +1 -2
  481. package/build/screens/conversation_new/conversation_new_screen.d.ts.map +1 -1
  482. package/build/screens/conversation_new/conversation_new_screen.js +4 -4
  483. package/build/screens/conversation_new/conversation_new_screen.js.map +1 -1
  484. package/build/screens/conversation_notification_level_select_screen.d.ts +1 -2
  485. package/build/screens/conversation_notification_level_select_screen.d.ts.map +1 -1
  486. package/build/screens/conversation_notification_level_select_screen.js +4 -6
  487. package/build/screens/conversation_notification_level_select_screen.js.map +1 -1
  488. package/build/screens/conversation_screen.d.ts +2 -3
  489. package/build/screens/conversation_screen.d.ts.map +1 -1
  490. package/build/screens/conversation_screen.js +26 -65
  491. package/build/screens/conversation_screen.js.map +1 -1
  492. package/build/screens/conversation_select_recipients/components/groups_recipient_row.d.ts +1 -1
  493. package/build/screens/conversation_select_recipients/components/groups_recipient_row.d.ts.map +1 -1
  494. package/build/screens/conversation_select_recipients/components/groups_recipient_row.js +2 -1
  495. package/build/screens/conversation_select_recipients/components/groups_recipient_row.js.map +1 -1
  496. package/build/screens/conversation_select_recipients/components/recipient_link_row.d.ts +1 -2
  497. package/build/screens/conversation_select_recipients/components/recipient_link_row.d.ts.map +1 -1
  498. package/build/screens/conversation_select_recipients/components/recipient_link_row.js +2 -15
  499. package/build/screens/conversation_select_recipients/components/recipient_link_row.js.map +1 -1
  500. package/build/screens/conversation_select_recipients/components/restricted_group_row.d.ts +1 -2
  501. package/build/screens/conversation_select_recipients/components/restricted_group_row.d.ts.map +1 -1
  502. package/build/screens/conversation_select_recipients/components/restricted_group_row.js +2 -14
  503. package/build/screens/conversation_select_recipients/components/restricted_group_row.js.map +1 -1
  504. package/build/screens/conversation_select_recipients/components/team_recipient_row.d.ts +1 -1
  505. package/build/screens/conversation_select_recipients/components/team_recipient_row.d.ts.map +1 -1
  506. package/build/screens/conversation_select_recipients/components/team_recipient_row.js +2 -1
  507. package/build/screens/conversation_select_recipients/components/team_recipient_row.js.map +1 -1
  508. package/build/screens/conversation_select_recipients/components/view_more_link_row.d.ts +1 -1
  509. package/build/screens/conversation_select_recipients/components/view_more_link_row.d.ts.map +1 -1
  510. package/build/screens/conversation_select_recipients/components/view_more_link_row.js +2 -5
  511. package/build/screens/conversation_select_recipients/components/view_more_link_row.js.map +1 -1
  512. package/build/screens/conversation_select_recipients/conversation_new_entry_screen.d.ts +1 -2
  513. package/build/screens/conversation_select_recipients/conversation_new_entry_screen.d.ts.map +1 -1
  514. package/build/screens/conversation_select_recipients/conversation_new_entry_screen.js +4 -11
  515. package/build/screens/conversation_select_recipients/conversation_new_entry_screen.js.map +1 -1
  516. package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.d.ts +1 -1
  517. package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.d.ts.map +1 -1
  518. package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.js +24 -85
  519. package/build/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.js.map +1 -1
  520. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.d.ts +1 -2
  521. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.d.ts.map +1 -1
  522. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.js +7 -14
  523. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.js.map +1 -1
  524. package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.d.ts +1 -2
  525. package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.d.ts.map +1 -1
  526. package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.js +15 -18
  527. package/build/screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen.js.map +1 -1
  528. package/build/screens/conversation_select_recipients/types/screen_props.d.ts +2 -0
  529. package/build/screens/conversation_select_recipients/types/screen_props.d.ts.map +1 -1
  530. package/build/screens/conversation_select_recipients/types/screen_props.js.map +1 -1
  531. package/build/screens/conversation_select_type_screen.d.ts +1 -2
  532. package/build/screens/conversation_select_type_screen.d.ts.map +1 -1
  533. package/build/screens/conversation_select_type_screen.js +7 -17
  534. package/build/screens/conversation_select_type_screen.js.map +1 -1
  535. package/build/screens/conversations/components/chat_group_badge.d.ts +1 -2
  536. package/build/screens/conversations/components/chat_group_badge.d.ts.map +1 -1
  537. package/build/screens/conversations/components/chat_group_badge.js +3 -4
  538. package/build/screens/conversations/components/chat_group_badge.js.map +1 -1
  539. package/build/screens/conversations/components/list_header_action_button.d.ts +1 -2
  540. package/build/screens/conversations/components/list_header_action_button.d.ts.map +1 -1
  541. package/build/screens/conversations/components/list_header_action_button.js +3 -5
  542. package/build/screens/conversations/components/list_header_action_button.js.map +1 -1
  543. package/build/screens/conversations/components/list_header_component.d.ts +1 -2
  544. package/build/screens/conversations/components/list_header_component.d.ts.map +1 -1
  545. package/build/screens/conversations/components/list_header_component.js +22 -45
  546. package/build/screens/conversations/components/list_header_component.js.map +1 -1
  547. package/build/screens/conversations/conversations_screen.d.ts +1 -2
  548. package/build/screens/conversations/conversations_screen.d.ts.map +1 -1
  549. package/build/screens/conversations/conversations_screen.js +2 -6
  550. package/build/screens/conversations/conversations_screen.js.map +1 -1
  551. package/build/screens/design_system_screen.d.ts +1 -2
  552. package/build/screens/design_system_screen.d.ts.map +1 -1
  553. package/build/screens/design_system_screen.js +35 -558
  554. package/build/screens/design_system_screen.js.map +1 -1
  555. package/build/screens/get_help_screen.d.ts +1 -1
  556. package/build/screens/get_help_screen.d.ts.map +1 -1
  557. package/build/screens/get_help_screen.js +4 -25
  558. package/build/screens/get_help_screen.js.map +1 -1
  559. package/build/screens/group_notification_level_select_screen.d.ts +1 -2
  560. package/build/screens/group_notification_level_select_screen.d.ts.map +1 -1
  561. package/build/screens/group_notification_level_select_screen.js +2 -4
  562. package/build/screens/group_notification_level_select_screen.js.map +1 -1
  563. package/build/screens/group_notification_settings_screen.d.ts +1 -2
  564. package/build/screens/group_notification_settings_screen.d.ts.map +1 -1
  565. package/build/screens/group_notification_settings_screen.js +3 -25
  566. package/build/screens/group_notification_settings_screen.js.map +1 -1
  567. package/build/screens/message_actions_screen.d.ts +1 -2
  568. package/build/screens/message_actions_screen.d.ts.map +1 -1
  569. package/build/screens/message_actions_screen.js +12 -28
  570. package/build/screens/message_actions_screen.js.map +1 -1
  571. package/build/screens/message_report/components/message_preview.d.ts +1 -2
  572. package/build/screens/message_report/components/message_preview.d.ts.map +1 -1
  573. package/build/screens/message_report/components/message_preview.js +2 -22
  574. package/build/screens/message_report/components/message_preview.js.map +1 -1
  575. package/build/screens/message_report/components/report_reason_list.d.ts +1 -2
  576. package/build/screens/message_report/components/report_reason_list.d.ts.map +1 -1
  577. package/build/screens/message_report/components/report_reason_list.js +4 -13
  578. package/build/screens/message_report/components/report_reason_list.js.map +1 -1
  579. package/build/screens/message_report_screen.d.ts +1 -2
  580. package/build/screens/message_report_screen.d.ts.map +1 -1
  581. package/build/screens/message_report_screen.js +9 -61
  582. package/build/screens/message_report_screen.js.map +1 -1
  583. package/build/screens/not_found.d.ts +1 -2
  584. package/build/screens/not_found.d.ts.map +1 -1
  585. package/build/screens/not_found.js +2 -5
  586. package/build/screens/not_found.js.map +1 -1
  587. package/build/screens/notification_settings/hooks/groups.d.ts +1 -1
  588. package/build/screens/notification_settings/hooks/groups.d.ts.map +1 -1
  589. package/build/screens/notification_settings_screen.d.ts +1 -2
  590. package/build/screens/notification_settings_screen.d.ts.map +1 -1
  591. package/build/screens/notification_settings_screen.js +28 -66
  592. package/build/screens/notification_settings_screen.js.map +1 -1
  593. package/build/screens/preferred_app_selection_screen.d.ts +1 -2
  594. package/build/screens/preferred_app_selection_screen.d.ts.map +1 -1
  595. package/build/screens/preferred_app_selection_screen.js +3 -21
  596. package/build/screens/preferred_app_selection_screen.js.map +1 -1
  597. package/build/screens/reactions_screen.d.ts +1 -2
  598. package/build/screens/reactions_screen.d.ts.map +1 -1
  599. package/build/screens/reactions_screen.js +7 -19
  600. package/build/screens/reactions_screen.js.map +1 -1
  601. package/build/screens/send_giphy_screen.d.ts +1 -2
  602. package/build/screens/send_giphy_screen.d.ts.map +1 -1
  603. package/build/screens/send_giphy_screen.js +5 -31
  604. package/build/screens/send_giphy_screen.js.map +1 -1
  605. package/build/screens/settings_screen.d.ts +1 -2
  606. package/build/screens/settings_screen.d.ts.map +1 -1
  607. package/build/screens/settings_screen.js +6 -28
  608. package/build/screens/settings_screen.js.map +1 -1
  609. package/build/screens/system_message_people_screen.d.ts +1 -2
  610. package/build/screens/system_message_people_screen.d.ts.map +1 -1
  611. package/build/screens/system_message_people_screen.js +4 -10
  612. package/build/screens/system_message_people_screen.js.map +1 -1
  613. package/build/screens/team_conversation_screen.d.ts +1 -1
  614. package/build/screens/team_conversation_screen.d.ts.map +1 -1
  615. package/build/screens/team_conversation_screen.js +4 -12
  616. package/build/screens/team_conversation_screen.js.map +1 -1
  617. package/build/types/resources/direct_message_candidate.d.ts +1 -0
  618. package/build/types/resources/direct_message_candidate.d.ts.map +1 -1
  619. package/build/types/resources/direct_message_candidate.js.map +1 -1
  620. package/build/types/resources/member.d.ts +1 -0
  621. package/build/types/resources/member.d.ts.map +1 -1
  622. package/build/types/resources/member.js.map +1 -1
  623. package/build/types/resources/member_ability.d.ts +1 -0
  624. package/build/types/resources/member_ability.d.ts.map +1 -1
  625. package/build/types/resources/member_ability.js.map +1 -1
  626. package/build/types/resources/person.d.ts +1 -0
  627. package/build/types/resources/person.d.ts.map +1 -1
  628. package/build/types/resources/person.js.map +1 -1
  629. package/build/utils/index.d.ts +1 -0
  630. package/build/utils/index.d.ts.map +1 -1
  631. package/build/utils/index.js +1 -0
  632. package/build/utils/index.js.map +1 -1
  633. package/build/utils/liquid_glass.d.ts +3 -0
  634. package/build/utils/liquid_glass.d.ts.map +1 -0
  635. package/build/utils/liquid_glass.js +9 -0
  636. package/build/utils/liquid_glass.js.map +1 -0
  637. package/build/utils/sha_256.js.map +1 -1
  638. package/build/utils/system_messages.d.ts +1 -1
  639. package/build/utils/system_messages.d.ts.map +1 -1
  640. package/build/utils/system_messages.js.map +1 -1
  641. package/build/utils/theme.d.ts +2 -2
  642. package/build/utils/theme.d.ts.map +1 -1
  643. package/build/utils/theme.js +1 -1
  644. package/build/utils/theme.js.map +1 -1
  645. package/package.json +12 -12
  646. package/src/__tests__/hooks/resolve_message_available_members_link.test.ts +72 -0
  647. package/src/__tests__/hooks/use_attachment_uploader.test.tsx +1 -0
  648. package/src/__tests__/hooks/use_direct_messages_eligible.test.tsx +77 -0
  649. package/src/__tests__/hooks/use_font_scale.test.ts +7 -3
  650. package/src/__tests__/utils/liquid_glass.ts +40 -0
  651. package/src/__tests__/utils/native_adapters/configuration.ts +1 -1
  652. package/src/__tests__/utils/system_messages.ts +1 -1
  653. package/src/__tests__/utils/uri.ts +8 -50
  654. package/src/__utils__/handlers.ts +5 -6
  655. package/src/components/conversation/attachments/attachment_deleting_overlay.tsx +10 -3
  656. package/src/components/conversation/messages_disabled_banners.tsx +31 -4
  657. package/src/components/page/__tests__/component_error_boundary.test.tsx +1 -1
  658. package/src/components/page/__tests__/error_boundary.test.tsx +6 -2
  659. package/src/components/page/__tests__/page_error_boundary.test.tsx +1 -1
  660. package/src/contexts/chat_context.tsx +8 -0
  661. package/src/hooks/direct_messages/find_direct_message_conversation.ts +16 -0
  662. package/src/hooks/direct_messages/resolve_message_available_members_link.ts +42 -0
  663. package/src/hooks/direct_messages/use_find_or_create_direct_message_conversation.ts +2 -11
  664. package/src/hooks/direct_messages/use_message_available_members.ts +65 -0
  665. package/src/hooks/direct_messages/use_message_available_members_action.ts +34 -0
  666. package/src/hooks/index.ts +1 -1
  667. package/src/hooks/use_conversation.ts +1 -0
  668. package/src/hooks/use_current_person.ts +1 -0
  669. package/src/hooks/use_direct_messages_eligible.ts +11 -0
  670. package/src/hooks/use_features.ts +0 -1
  671. package/src/index.tsx +2 -1
  672. package/src/navigation/index.tsx +2 -2
  673. package/src/polyfills/events/EventTarget.ts +1 -1
  674. package/src/screens/conversation_filters/components/conversation_filters.tsx +3 -3
  675. package/src/screens/conversation_screen.tsx +9 -1
  676. package/src/screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen.tsx +18 -4
  677. package/src/screens/conversation_select_recipients/types/screen_props.tsx +2 -0
  678. package/src/screens/conversation_select_type_screen.tsx +4 -7
  679. package/src/screens/conversations/components/list_header_component.tsx +3 -3
  680. package/src/screens/settings_screen.tsx +3 -3
  681. package/src/types/resources/direct_message_candidate.ts +5 -0
  682. package/src/types/resources/member.ts +1 -0
  683. package/src/types/resources/member_ability.ts +1 -0
  684. package/src/types/resources/person.ts +1 -0
  685. package/src/utils/index.ts +1 -0
  686. package/src/utils/liquid_glass.ts +12 -0
  687. package/src/utils/sha_256.ts +24 -24
  688. package/src/utils/system_messages.ts +1 -1
  689. package/src/utils/theme.ts +3 -8
  690. package/build/hooks/use_direct_messages_enabled.d.ts +0 -2
  691. package/build/hooks/use_direct_messages_enabled.d.ts.map +0 -1
  692. package/build/hooks/use_direct_messages_enabled.js +0 -16
  693. package/build/hooks/use_direct_messages_enabled.js.map +0 -1
  694. 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
- useWindowDimensions: jest.fn(),
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: JSONAPIResponse, mockedStatus: number = 200) {
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: JSONAPIResponse, mockedStatus: number = 200) {
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?: JSONAPIResponse, mockedStatus: number = 200) {
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: JSONAPIResponse, mockedStatus: number = 200) {
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
- ...StyleSheet.absoluteFillObject,
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
- ...StyleSheet.absoluteFillObject,
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 = ({ disabledReason }: ConversationDisabledBannerProps) => {
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 <MessagesDisabledBanner description={description} style={styles.memberBanner} />
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 = ({ description, style }: MessagesDisabledBannerProps) => {
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 = { status: 500, statusText: 'Server Error', errors: [] } as FailedResponse
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}>
@@ -26,7 +26,7 @@ jest.mock('../../primitive/blank_state_primitive', () => {
26
26
  }
27
27
  })
28
28
 
29
- function Boom({ thrown }: { thrown: unknown }) {
29
+ function Boom({ thrown }: { thrown: unknown }): React.ReactElement {
30
30
  throw thrown
31
31
  }
32
32
 
@@ -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 { ApiCollection, ApiResource, ConversationResource } from '../../types'
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
+ }
@@ -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 './use_direct_messages_enabled'
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'
@@ -47,6 +47,7 @@ export const getConversationRequestArgs = ({ conversation_id }: { conversation_i
47
47
  'leader',
48
48
  'can_reply',
49
49
  'can_delete_non_authored_messages',
50
+ 'can_message_available_members',
50
51
  ],
51
52
  ConversationMembership: [
52
53
  'last_read_message_sort_key',
@@ -17,6 +17,7 @@ export const currentPersonRequestArgs = {
17
17
  'pco_chat_enabled',
18
18
  'age_qualification_status',
19
19
  'direct_messages_disabled',
20
+ 'direct_messages_eligible',
20
21
  'under_18',
21
22
  ],
22
23
  },
@@ -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 { ENV, platformFontWeightBold, Session, TemporaryDefaultColorsType, Uri } from './utils'
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'