@planningcenter/chat-react-native 4.4.0-rc.6 → 4.4.0

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 (350) hide show
  1. package/build/components/conversation/jump_to_bottom_button.d.ts.map +1 -1
  2. package/build/components/conversation/jump_to_bottom_button.js +42 -40
  3. package/build/components/conversation/jump_to_bottom_button.js.map +1 -1
  4. package/build/components/conversation/message.d.ts +2 -1
  5. package/build/components/conversation/message.d.ts.map +1 -1
  6. package/build/components/conversation/message.js +3 -1
  7. package/build/components/conversation/message.js.map +1 -1
  8. package/build/components/conversation/message_form.d.ts.map +1 -1
  9. package/build/components/conversation/message_form.js +3 -1
  10. package/build/components/conversation/message_form.js.map +1 -1
  11. package/build/components/conversation/message_list.d.ts.map +1 -1
  12. package/build/components/conversation/message_list.js +35 -31
  13. package/build/components/conversation/message_list.js.map +1 -1
  14. package/build/components/conversation/message_reaction.d.ts +2 -1
  15. package/build/components/conversation/message_reaction.d.ts.map +1 -1
  16. package/build/components/conversation/message_reaction.js +67 -60
  17. package/build/components/conversation/message_reaction.js.map +1 -1
  18. package/build/components/conversation/messages_disabled_banners.d.ts +7 -5
  19. package/build/components/conversation/messages_disabled_banners.d.ts.map +1 -1
  20. package/build/components/conversation/messages_disabled_banners.js +15 -14
  21. package/build/components/conversation/messages_disabled_banners.js.map +1 -1
  22. package/build/components/conversation/system_message.d.ts +2 -1
  23. package/build/components/conversation/system_message.d.ts.map +1 -1
  24. package/build/components/conversation/system_message.js +133 -100
  25. package/build/components/conversation/system_message.js.map +1 -1
  26. package/build/components/conversations/archived_results_footer.d.ts +6 -0
  27. package/build/components/conversations/archived_results_footer.d.ts.map +1 -0
  28. package/build/components/conversations/archived_results_footer.js +51 -0
  29. package/build/components/conversations/archived_results_footer.js.map +1 -0
  30. package/build/components/conversations/conversation_actions.d.ts.map +1 -1
  31. package/build/components/conversations/conversation_actions.js +241 -206
  32. package/build/components/conversations/conversation_actions.js.map +1 -1
  33. package/build/components/conversations/conversation_preview.d.ts.map +1 -1
  34. package/build/components/conversations/conversation_preview.js +102 -93
  35. package/build/components/conversations/conversation_preview.js.map +1 -1
  36. package/build/components/conversations/conversations.d.ts.map +1 -1
  37. package/build/components/conversations/conversations.js +66 -41
  38. package/build/components/conversations/conversations.js.map +1 -1
  39. package/build/components/conversations/conversations_blank_state.d.ts.map +1 -1
  40. package/build/components/conversations/conversations_blank_state.js +55 -12
  41. package/build/components/conversations/conversations_blank_state.js.map +1 -1
  42. package/build/components/conversations/filtered_results_footer.d.ts +2 -0
  43. package/build/components/conversations/filtered_results_footer.d.ts.map +1 -0
  44. package/build/components/conversations/filtered_results_footer.js +77 -0
  45. package/build/components/conversations/filtered_results_footer.js.map +1 -0
  46. package/build/components/display/action_button.d.ts.map +1 -1
  47. package/build/components/display/action_button.js +18 -16
  48. package/build/components/display/action_button.js.map +1 -1
  49. package/build/components/display/filter_dropdown.d.ts +14 -0
  50. package/build/components/display/filter_dropdown.d.ts.map +1 -0
  51. package/build/components/display/filter_dropdown.js +193 -0
  52. package/build/components/display/filter_dropdown.js.map +1 -0
  53. package/build/components/display/icon_tile.d.ts +13 -0
  54. package/build/components/display/icon_tile.d.ts.map +1 -0
  55. package/build/components/display/icon_tile.js +149 -0
  56. package/build/components/display/icon_tile.js.map +1 -0
  57. package/build/components/display/index.d.ts +2 -0
  58. package/build/components/display/index.d.ts.map +1 -1
  59. package/build/components/display/index.js +2 -0
  60. package/build/components/display/index.js.map +1 -1
  61. package/build/contexts/api_provider.d.ts.map +1 -1
  62. package/build/contexts/api_provider.js +21 -9
  63. package/build/contexts/api_provider.js.map +1 -1
  64. package/build/contexts/conversations_context.d.ts.map +1 -1
  65. package/build/contexts/conversations_context.js +21 -18
  66. package/build/contexts/conversations_context.js.map +1 -1
  67. package/build/hooks/groups/use_group_members_for_new_conversation.d.ts +196 -16
  68. package/build/hooks/groups/use_group_members_for_new_conversation.d.ts.map +1 -1
  69. package/build/hooks/groups/use_group_members_for_new_conversation.js +72 -58
  70. package/build/hooks/groups/use_group_members_for_new_conversation.js.map +1 -1
  71. package/build/hooks/index.d.ts +3 -0
  72. package/build/hooks/index.d.ts.map +1 -1
  73. package/build/hooks/index.js +3 -0
  74. package/build/hooks/index.js.map +1 -1
  75. package/build/hooks/use_animated_message_background_color.d.ts.map +1 -1
  76. package/build/hooks/use_animated_message_background_color.js +5 -3
  77. package/build/hooks/use_animated_message_background_color.js.map +1 -1
  78. package/build/hooks/use_api.d.ts +3 -2
  79. package/build/hooks/use_api.d.ts.map +1 -1
  80. package/build/hooks/use_api.js.map +1 -1
  81. package/build/hooks/use_can_browse_archived_conversations.d.ts +2 -0
  82. package/build/hooks/use_can_browse_archived_conversations.d.ts.map +1 -0
  83. package/build/hooks/use_can_browse_archived_conversations.js +29 -0
  84. package/build/hooks/use_can_browse_archived_conversations.js.map +1 -0
  85. package/build/hooks/use_clear_conversation_filters.d.ts +2 -0
  86. package/build/hooks/use_clear_conversation_filters.d.ts.map +1 -0
  87. package/build/hooks/use_clear_conversation_filters.js +25 -0
  88. package/build/hooks/use_clear_conversation_filters.js.map +1 -0
  89. package/build/hooks/use_conversation.d.ts +73 -1
  90. package/build/hooks/use_conversation.d.ts.map +1 -1
  91. package/build/hooks/use_conversation.js +130 -3
  92. package/build/hooks/use_conversation.js.map +1 -1
  93. package/build/hooks/use_conversation_messages.d.ts.map +1 -1
  94. package/build/hooks/use_conversation_messages.js +29 -26
  95. package/build/hooks/use_conversation_messages.js.map +1 -1
  96. package/build/hooks/use_current_person.d.ts.map +1 -1
  97. package/build/hooks/use_current_person.js +1 -1
  98. package/build/hooks/use_current_person.js.map +1 -1
  99. package/build/hooks/use_features.d.ts +2 -0
  100. package/build/hooks/use_features.d.ts.map +1 -1
  101. package/build/hooks/use_features.js +2 -0
  102. package/build/hooks/use_features.js.map +1 -1
  103. package/build/hooks/use_filter_dropdown_enabled.d.ts +2 -0
  104. package/build/hooks/use_filter_dropdown_enabled.d.ts.map +1 -0
  105. package/build/hooks/use_filter_dropdown_enabled.js +18 -0
  106. package/build/hooks/use_filter_dropdown_enabled.js.map +1 -0
  107. package/build/hooks/use_jolt.d.ts +1 -0
  108. package/build/hooks/use_jolt.d.ts.map +1 -1
  109. package/build/hooks/use_jolt.js +59 -0
  110. package/build/hooks/use_jolt.js.map +1 -1
  111. package/build/hooks/use_manual_archiving_enabled.d.ts +2 -0
  112. package/build/hooks/use_manual_archiving_enabled.d.ts.map +1 -0
  113. package/build/hooks/use_manual_archiving_enabled.js +18 -0
  114. package/build/hooks/use_manual_archiving_enabled.js.map +1 -0
  115. package/build/hooks/use_mark_latest_message_read.d.ts.map +1 -1
  116. package/build/hooks/use_mark_latest_message_read.js +3 -3
  117. package/build/hooks/use_mark_latest_message_read.js.map +1 -1
  118. package/build/hooks/use_reduce_motion.d.ts +2 -0
  119. package/build/hooks/use_reduce_motion.d.ts.map +1 -0
  120. package/build/hooks/use_reduce_motion.js +28 -0
  121. package/build/hooks/use_reduce_motion.js.map +1 -0
  122. package/build/hooks/use_unarchive_conversation_action.d.ts +7 -0
  123. package/build/hooks/use_unarchive_conversation_action.d.ts.map +1 -0
  124. package/build/hooks/use_unarchive_conversation_action.js +52 -0
  125. package/build/hooks/use_unarchive_conversation_action.js.map +1 -0
  126. package/build/screens/attachment_actions/attachment_actions_screen.d.ts.map +1 -1
  127. package/build/screens/attachment_actions/attachment_actions_screen.js +84 -61
  128. package/build/screens/attachment_actions/attachment_actions_screen.js.map +1 -1
  129. package/build/screens/conversation_details_screen.d.ts.map +1 -1
  130. package/build/screens/conversation_details_screen.js +490 -395
  131. package/build/screens/conversation_details_screen.js.map +1 -1
  132. package/build/screens/conversation_filters/components/conversation_filters.d.ts.map +1 -1
  133. package/build/screens/conversation_filters/components/conversation_filters.js +88 -18
  134. package/build/screens/conversation_filters/components/conversation_filters.js.map +1 -1
  135. package/build/screens/conversation_filters/components/rows.d.ts +9 -0
  136. package/build/screens/conversation_filters/components/rows.d.ts.map +1 -1
  137. package/build/screens/conversation_filters/components/rows.js +93 -1
  138. package/build/screens/conversation_filters/components/rows.js.map +1 -1
  139. package/build/screens/conversation_filters/context/conversation_filter_context.d.ts.map +1 -1
  140. package/build/screens/conversation_filters/context/conversation_filter_context.js +8 -4
  141. package/build/screens/conversation_filters/context/conversation_filter_context.js.map +1 -1
  142. package/build/screens/conversation_filters/filter_types.d.ts +1 -0
  143. package/build/screens/conversation_filters/filter_types.d.ts.map +1 -1
  144. package/build/screens/conversation_filters/filter_types.js +1 -0
  145. package/build/screens/conversation_filters/filter_types.js.map +1 -1
  146. package/build/screens/conversation_filters/screen_props.d.ts +1 -0
  147. package/build/screens/conversation_filters/screen_props.d.ts.map +1 -1
  148. package/build/screens/conversation_filters/screen_props.js.map +1 -1
  149. package/build/screens/conversation_filters_screen.d.ts +1 -0
  150. package/build/screens/conversation_filters_screen.d.ts.map +1 -1
  151. package/build/screens/conversation_filters_screen.js +79 -48
  152. package/build/screens/conversation_filters_screen.js.map +1 -1
  153. package/build/screens/conversation_new/components/groups_form.d.ts.map +1 -1
  154. package/build/screens/conversation_new/components/groups_form.js +37 -34
  155. package/build/screens/conversation_new/components/groups_form.js.map +1 -1
  156. package/build/screens/conversation_screen.d.ts.map +1 -1
  157. package/build/screens/conversation_screen.js +13 -10
  158. package/build/screens/conversation_screen.js.map +1 -1
  159. package/build/screens/conversations/components/filter_dropdown_list_header_component.d.ts +2 -0
  160. package/build/screens/conversations/components/filter_dropdown_list_header_component.d.ts.map +1 -0
  161. package/build/screens/conversations/components/filter_dropdown_list_header_component.js +580 -0
  162. package/build/screens/conversations/components/filter_dropdown_list_header_component.js.map +1 -0
  163. package/build/screens/conversations/components/list_header_component.d.ts.map +1 -1
  164. package/build/screens/conversations/components/list_header_component.js +95 -90
  165. package/build/screens/conversations/components/list_header_component.js.map +1 -1
  166. package/build/screens/conversations/components/search_list_header_component.d.ts.map +1 -1
  167. package/build/screens/conversations/components/search_list_header_component.js +100 -95
  168. package/build/screens/conversations/components/search_list_header_component.js.map +1 -1
  169. package/build/screens/conversations/conversations_screen.d.ts +1 -0
  170. package/build/screens/conversations/conversations_screen.d.ts.map +1 -1
  171. package/build/screens/conversations/conversations_screen.js +15 -2
  172. package/build/screens/conversations/conversations_screen.js.map +1 -1
  173. package/build/screens/design_system_screen.d.ts.map +1 -1
  174. package/build/screens/design_system_screen.js +275 -215
  175. package/build/screens/design_system_screen.js.map +1 -1
  176. package/build/screens/message_actions_screen.d.ts.map +1 -1
  177. package/build/screens/message_actions_screen.js +112 -92
  178. package/build/screens/message_actions_screen.js.map +1 -1
  179. package/build/screens/search/search_screen.d.ts.map +1 -1
  180. package/build/screens/search/search_screen.js +10 -2
  181. package/build/screens/search/search_screen.js.map +1 -1
  182. package/build/screens/send_giphy_screen.d.ts +1 -0
  183. package/build/screens/send_giphy_screen.d.ts.map +1 -1
  184. package/build/screens/send_giphy_screen.js +108 -106
  185. package/build/screens/send_giphy_screen.js.map +1 -1
  186. package/build/screens/team_conversation_screen.js +1 -1
  187. package/build/screens/team_conversation_screen.js.map +1 -1
  188. package/build/types/jolt_events/message_events.d.ts +2 -0
  189. package/build/types/jolt_events/message_events.d.ts.map +1 -1
  190. package/build/types/jolt_events/message_events.js.map +1 -1
  191. package/build/types/resources/conversation.d.ts +2 -2
  192. package/build/types/resources/conversation.d.ts.map +1 -1
  193. package/build/types/resources/conversation.js.map +1 -1
  194. package/build/types/resources/member_ability.d.ts +2 -0
  195. package/build/types/resources/member_ability.d.ts.map +1 -1
  196. package/build/types/resources/member_ability.js.map +1 -1
  197. package/build/types/resources/message.d.ts +2 -0
  198. package/build/types/resources/message.d.ts.map +1 -1
  199. package/build/types/resources/message.js.map +1 -1
  200. package/build/types/resources/person.d.ts +1 -0
  201. package/build/types/resources/person.d.ts.map +1 -1
  202. package/build/types/resources/person.js.map +1 -1
  203. package/build/utils/archived_conversation.d.ts +5 -0
  204. package/build/utils/archived_conversation.d.ts.map +1 -0
  205. package/build/utils/archived_conversation.js +5 -0
  206. package/build/utils/archived_conversation.js.map +1 -0
  207. package/build/utils/date.d.ts +1 -0
  208. package/build/utils/date.d.ts.map +1 -1
  209. package/build/utils/date.js +9 -0
  210. package/build/utils/date.js.map +1 -1
  211. package/build/utils/index.d.ts +1 -0
  212. package/build/utils/index.d.ts.map +1 -1
  213. package/build/utils/index.js +1 -0
  214. package/build/utils/index.js.map +1 -1
  215. package/build/utils/jolt/transform_message_event_data_to_message_resource.d.ts.map +1 -1
  216. package/build/utils/jolt/transform_message_event_data_to_message_resource.js +2 -1
  217. package/build/utils/jolt/transform_message_event_data_to_message_resource.js.map +1 -1
  218. package/build/utils/native_adapters/configuration.d.ts +3 -0
  219. package/build/utils/native_adapters/configuration.d.ts.map +1 -1
  220. package/build/utils/native_adapters/configuration.js +3 -0
  221. package/build/utils/native_adapters/configuration.js.map +1 -1
  222. package/build/utils/native_adapters/index.d.ts +1 -0
  223. package/build/utils/native_adapters/index.d.ts.map +1 -1
  224. package/build/utils/native_adapters/index.js +1 -0
  225. package/build/utils/native_adapters/index.js.map +1 -1
  226. package/build/utils/native_adapters/menu.d.ts +41 -0
  227. package/build/utils/native_adapters/menu.d.ts.map +1 -0
  228. package/build/utils/native_adapters/menu.js +56 -0
  229. package/build/utils/native_adapters/menu.js.map +1 -0
  230. package/build/utils/request/conversation.d.ts +2 -1
  231. package/build/utils/request/conversation.d.ts.map +1 -1
  232. package/build/utils/request/conversation.js +4 -1
  233. package/build/utils/request/conversation.js.map +1 -1
  234. package/build/utils/request/messages_data_options.d.ts.map +1 -1
  235. package/build/utils/request/messages_data_options.js +1 -1
  236. package/build/utils/request/messages_data_options.js.map +1 -1
  237. package/build/utils/system_messages.d.ts +7 -5
  238. package/build/utils/system_messages.d.ts.map +1 -1
  239. package/build/utils/system_messages.js +10 -2
  240. package/build/utils/system_messages.js.map +1 -1
  241. package/build/vendor/font_awesome_pro_solid_icons.d.ts +1 -0
  242. package/build/vendor/font_awesome_pro_solid_icons.d.ts.map +1 -1
  243. package/build/vendor/font_awesome_pro_solid_icons.js +5 -0
  244. package/build/vendor/font_awesome_pro_solid_icons.js.map +1 -1
  245. package/package.json +3 -3
  246. package/src/__tests__/hooks/use_can_browse_archived_conversations.test.tsx +98 -0
  247. package/src/__tests__/hooks/use_filter_dropdown_enabled.test.tsx +42 -0
  248. package/src/__tests__/screens/conversation_filters/components/conversation_filters.test.tsx +132 -0
  249. package/src/__tests__/screens/conversation_filters_screen.test.tsx +76 -0
  250. package/src/__tests__/screens/conversation_new/components/services_form.test.tsx +1 -0
  251. package/src/__tests__/screens/message_actions_screen.test.tsx +65 -2
  252. package/src/__tests__/screens/send_giphy_screen.test.tsx +102 -0
  253. package/src/__tests__/utils/system_messages.ts +19 -32
  254. package/src/components/conversation/__tests__/message_list.test.tsx +68 -2
  255. package/src/components/conversation/__tests__/system_message.test.tsx +106 -0
  256. package/src/components/conversation/jump_to_bottom_button.tsx +4 -3
  257. package/src/components/conversation/message.tsx +3 -0
  258. package/src/components/conversation/message_form.tsx +3 -1
  259. package/src/components/conversation/message_list.tsx +9 -1
  260. package/src/components/conversation/message_reaction.tsx +7 -2
  261. package/src/components/conversation/messages_disabled_banners.tsx +17 -18
  262. package/src/components/conversation/system_message.tsx +44 -16
  263. package/src/components/conversations/__tests__/conversation_actions.test.tsx +67 -0
  264. package/src/components/conversations/__tests__/conversation_preview.test.tsx +105 -0
  265. package/src/components/conversations/__tests__/conversations.test.tsx +93 -0
  266. package/src/components/conversations/__tests__/conversations_blank_state.test.tsx +73 -0
  267. package/src/components/conversations/archived_results_footer.tsx +36 -0
  268. package/src/components/conversations/conversation_actions.tsx +27 -19
  269. package/src/components/conversations/conversation_preview.tsx +39 -10
  270. package/src/components/conversations/conversations.tsx +26 -3
  271. package/src/components/conversations/conversations_blank_state.tsx +21 -0
  272. package/src/components/conversations/filtered_results_footer.tsx +38 -0
  273. package/src/components/display/__tests__/filter_dropdown.test.tsx +114 -0
  274. package/src/components/display/__tests__/icon_tile.test.tsx +16 -0
  275. package/src/components/display/action_button.tsx +4 -3
  276. package/src/components/display/filter_dropdown.tsx +124 -0
  277. package/src/components/display/icon_tile.tsx +67 -0
  278. package/src/components/display/index.ts +2 -0
  279. package/src/contexts/api_provider.tsx +8 -0
  280. package/src/contexts/conversations_context.tsx +2 -1
  281. package/src/hooks/__tests__/use_conversation_archive.test.tsx +152 -0
  282. package/src/hooks/__tests__/use_conversation_jolt_events.test.tsx +74 -0
  283. package/src/hooks/__tests__/use_conversation_messages.test.tsx +10 -2
  284. package/src/hooks/__tests__/use_jolt.test.tsx +100 -1
  285. package/src/hooks/__tests__/use_mark_latest_message_read.test.tsx +21 -7
  286. package/src/hooks/__tests__/use_reduce_motion.test.tsx +61 -0
  287. package/src/hooks/__tests__/use_unarchive_conversation_action.test.tsx +67 -0
  288. package/src/hooks/groups/use_group_members_for_new_conversation.ts +21 -16
  289. package/src/hooks/index.ts +3 -0
  290. package/src/hooks/use_animated_message_background_color.ts +6 -3
  291. package/src/hooks/use_api.ts +9 -2
  292. package/src/hooks/use_can_browse_archived_conversations.ts +17 -0
  293. package/src/hooks/use_clear_conversation_filters.ts +16 -0
  294. package/src/hooks/use_conversation.ts +44 -3
  295. package/src/hooks/use_conversation_messages.ts +7 -5
  296. package/src/hooks/use_current_person.ts +1 -0
  297. package/src/hooks/use_features.ts +2 -0
  298. package/src/hooks/use_filter_dropdown_enabled.ts +10 -0
  299. package/src/hooks/use_jolt.ts +57 -1
  300. package/src/hooks/use_manual_archiving_enabled.ts +10 -0
  301. package/src/hooks/use_mark_latest_message_read.ts +4 -3
  302. package/src/hooks/use_reduce_motion.ts +19 -0
  303. package/src/hooks/use_unarchive_conversation_action.ts +24 -0
  304. package/src/screens/__tests__/conversation_details_screen.test.tsx +305 -0
  305. package/src/screens/attachment_actions/__tests__/attachment_actions_screen.test.tsx +72 -0
  306. package/src/screens/attachment_actions/attachment_actions_screen.tsx +3 -1
  307. package/src/screens/conversation_details_screen.tsx +80 -16
  308. package/src/screens/conversation_filters/__tests__/conversation_filters.test.tsx +101 -0
  309. package/src/screens/conversation_filters/components/conversation_filters.tsx +40 -7
  310. package/src/screens/conversation_filters/components/rows.tsx +29 -1
  311. package/src/screens/conversation_filters/context/conversation_filter_context.tsx +4 -0
  312. package/src/screens/conversation_filters/filter_types.ts +1 -0
  313. package/src/screens/conversation_filters/screen_props.ts +1 -0
  314. package/src/screens/conversation_filters_screen.tsx +25 -5
  315. package/src/screens/conversation_new/components/groups_form.tsx +1 -0
  316. package/src/screens/conversation_screen.tsx +4 -2
  317. package/src/screens/conversations/__tests__/conversations_screen.test.tsx +52 -0
  318. package/src/screens/conversations/components/__tests__/filter_dropdown_list_header_component.test.tsx +259 -0
  319. package/src/screens/conversations/components/__tests__/list_header_component.test.tsx +21 -4
  320. package/src/screens/conversations/components/filter_dropdown_list_header_component.tsx +286 -0
  321. package/src/screens/conversations/components/list_header_component.tsx +17 -12
  322. package/src/screens/conversations/components/search_list_header_component.tsx +17 -12
  323. package/src/screens/conversations/conversations_screen.tsx +15 -2
  324. package/src/screens/design_system_screen.tsx +26 -0
  325. package/src/screens/message_actions_screen.tsx +29 -20
  326. package/src/screens/search/__tests__/search_screen.test.tsx +13 -1
  327. package/src/screens/search/search_screen.tsx +8 -2
  328. package/src/screens/send_giphy_screen.tsx +6 -3
  329. package/src/screens/team_conversation_screen.tsx +1 -1
  330. package/src/types/jolt_events/message_events.ts +2 -0
  331. package/src/types/resources/conversation.ts +2 -2
  332. package/src/types/resources/member_ability.ts +2 -0
  333. package/src/types/resources/message.ts +3 -0
  334. package/src/types/resources/person.ts +1 -0
  335. package/src/utils/__tests__/conversation.test.ts +1 -0
  336. package/src/utils/__tests__/date.test.ts +23 -0
  337. package/src/utils/__tests__/group_messages.test.ts +1 -0
  338. package/src/utils/archived_conversation.ts +13 -0
  339. package/src/utils/date.ts +8 -0
  340. package/src/utils/index.ts +1 -0
  341. package/src/utils/jolt/__tests__/transform_message_event_data_to_message_resource.test.ts +35 -0
  342. package/src/utils/jolt/transform_message_event_data_to_message_resource.ts +1 -0
  343. package/src/utils/native_adapters/__tests__/menu.test.tsx +46 -0
  344. package/src/utils/native_adapters/configuration.ts +5 -0
  345. package/src/utils/native_adapters/index.ts +1 -0
  346. package/src/utils/native_adapters/menu.tsx +70 -0
  347. package/src/utils/request/conversation.ts +4 -0
  348. package/src/utils/request/messages_data_options.ts +1 -0
  349. package/src/utils/system_messages.ts +19 -10
  350. package/src/vendor/font_awesome_pro_solid_icons.ts +12 -0
@@ -1 +1 @@
1
- {"version":3,"file":"message_actions_screen.d.ts","sourceRoot":"","sources":["../../src/screens/message_actions_screen.tsx"],"names":[],"mappings":"AACA,OAAO,EAAgB,iBAAiB,EAAiB,MAAM,0BAA0B,CAAA;AAsBzF,eAAO,MAAM,2BAA2B,6EAGtC,CAAA;AAEF,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;IACxD,UAAU,EAAE,MAAM,CAAA;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,eAAe,EAAE,MAAM,CAAA;IACvB,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAC,CAAA;AAEF,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE,yBAAyB,kDA6BxE"}
1
+ {"version":3,"file":"message_actions_screen.d.ts","sourceRoot":"","sources":["../../src/screens/message_actions_screen.tsx"],"names":[],"mappings":"AACA,OAAO,EAAgB,iBAAiB,EAAiB,MAAM,0BAA0B,CAAA;AAuBzF,eAAO,MAAM,2BAA2B,6EAGtC,CAAA;AAEF,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;IACxD,UAAU,EAAE,MAAM,CAAA;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,eAAe,EAAE,MAAM,CAAA;IACvB,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAC,CAAA;AAEF,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE,yBAAyB,kDA+BxE"}
@@ -10,6 +10,7 @@ import { useReactionStyles } from '../components/conversation/message_reaction';
10
10
  import FormSheet, { getFormSheetScreenOptions } from '../components/primitive/form_sheet';
11
11
  import { useCreateAndroidRippleColor, useFontScale, useTheme } from '../hooks';
12
12
  import { useApiClient } from '../hooks/use_api_client';
13
+ import { useConversation } from '../hooks/use_conversation';
13
14
  import { useConversationMessages } from '../hooks/use_conversation_messages';
14
15
  import { availableFeatures, useFeatures } from '../hooks/use_features';
15
16
  import { useMessageReactionToggle } from '../hooks/use_message_reaction_toggle';
@@ -22,7 +23,7 @@ export const MessageActionsScreenOptions = getFormSheetScreenOptions({
22
23
  headerTitle: 'Message actions'
23
24
  });
24
25
  export function MessageActionsScreen(t0) {
25
- const $ = _c(16);
26
+ const $ = _c(20);
26
27
  const {
27
28
  route
28
29
  } = t0;
@@ -58,56 +59,82 @@ export function MessageActionsScreen(t0) {
58
59
  refetch
59
60
  } = useConversationMessages(t1, t2);
60
61
  let t3;
61
- if ($[3] !== message_id || $[4] !== messages) {
62
- let t4;
63
- if ($[6] !== message_id) {
64
- t4 = m => m.id === message_id;
65
- $[6] = message_id;
66
- $[7] = t4;
62
+ if ($[3] !== conversation_id) {
63
+ t3 = {
64
+ conversation_id
65
+ };
66
+ $[3] = conversation_id;
67
+ $[4] = t3;
68
+ } else {
69
+ t3 = $[4];
70
+ }
71
+ let t4;
72
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
73
+ t4 = {
74
+ refetchOnMount: false
75
+ };
76
+ $[5] = t4;
77
+ } else {
78
+ t4 = $[5];
79
+ }
80
+ const {
81
+ data: conversation
82
+ } = useConversation(t3, t4);
83
+ let t5;
84
+ if ($[6] !== message_id || $[7] !== messages) {
85
+ let t6;
86
+ if ($[9] !== message_id) {
87
+ t6 = m => m.id === message_id;
88
+ $[9] = message_id;
89
+ $[10] = t6;
67
90
  } else {
68
- t4 = $[7];
91
+ t6 = $[10];
69
92
  }
70
- t3 = messages.find(t4);
71
- $[3] = message_id;
72
- $[4] = messages;
73
- $[5] = t3;
93
+ t5 = messages.find(t6);
94
+ $[6] = message_id;
95
+ $[7] = messages;
96
+ $[8] = t5;
74
97
  } else {
75
- t3 = $[5];
98
+ t5 = $[8];
76
99
  }
77
- const message = t3;
100
+ const message = t5;
78
101
  if (!message) {
79
102
  return null;
80
103
  }
81
- const t4 = canDeleteNonAuthoredMessages || false;
82
- let t5;
83
- if ($[8] !== conversation_id || $[9] !== inReplyScreen || $[10] !== isSystemMessage || $[11] !== message || $[12] !== refetch || $[13] !== reply_root_author_name || $[14] !== t4) {
84
- t5 = /*#__PURE__*/_jsx(MessageActionsScreenContent, {
104
+ const t6 = !!conversation.disabled;
105
+ const t7 = canDeleteNonAuthoredMessages || false;
106
+ let t8;
107
+ if ($[11] !== conversation_id || $[12] !== inReplyScreen || $[13] !== isSystemMessage || $[14] !== message || $[15] !== refetch || $[16] !== reply_root_author_name || $[17] !== t6 || $[18] !== t7) {
108
+ t8 = /*#__PURE__*/_jsx(MessageActionsScreenContent, {
85
109
  message: message,
86
110
  conversation_id: conversation_id,
87
- canDeleteNonAuthoredMessages: t4,
111
+ conversationDisabled: t6,
112
+ canDeleteNonAuthoredMessages: t7,
88
113
  refetchMessages: refetch,
89
114
  inReplyScreen: inReplyScreen,
90
115
  replyRootAuthorName: reply_root_author_name,
91
116
  isSystemMessage: isSystemMessage
92
117
  });
93
- $[8] = conversation_id;
94
- $[9] = inReplyScreen;
95
- $[10] = isSystemMessage;
96
- $[11] = message;
97
- $[12] = refetch;
98
- $[13] = reply_root_author_name;
99
- $[14] = t4;
100
- $[15] = t5;
101
- } else {
102
- t5 = $[15];
118
+ $[11] = conversation_id;
119
+ $[12] = inReplyScreen;
120
+ $[13] = isSystemMessage;
121
+ $[14] = message;
122
+ $[15] = refetch;
123
+ $[16] = reply_root_author_name;
124
+ $[17] = t6;
125
+ $[18] = t7;
126
+ $[19] = t8;
127
+ } else {
128
+ t8 = $[19];
103
129
  }
104
- return t5;
130
+ return t8;
105
131
  }
106
132
  function MessageActionsScreenContent(t0) {
107
133
  const $ = _c(93);
108
134
  const {
109
135
  message,
110
136
  conversation_id,
137
+ conversationDisabled,
111
138
  canDeleteNonAuthoredMessages,
112
139
  refetchMessages,
113
140
  inReplyScreen,
@@ -443,45 +470,37 @@ function MessageActionsScreenContent(t0) {
443
470
  t19 = $[65];
444
471
  }
445
472
  const showReportMessageAction = t19;
446
- const t20 = styles.formSheetContent;
447
- const t21 = styles.reactionList;
448
- let t22;
449
- if ($[66] !== availableReactions || $[67] !== handleReactionToggle || $[68] !== navigation) {
450
- t22 = availableReactions.map((reaction_1, index) => /*#__PURE__*/_jsx(Reaction, {
451
- reaction: reaction_1,
452
- onPress: () => {
453
- Haptic.impactLight();
454
- handleReactionToggle({
455
- value: reaction_1.value,
456
- mine: reaction_1.mine
457
- });
458
- navigation.goBack();
459
- }
460
- }, index));
461
- $[66] = availableReactions;
462
- $[67] = handleReactionToggle;
463
- $[68] = navigation;
464
- $[69] = t22;
465
- } else {
466
- t22 = $[69];
467
- }
468
- let t23;
469
- if ($[70] !== styles.reactionList || $[71] !== t22) {
470
- t23 = /*#__PURE__*/_jsx(View, {
471
- style: t21,
472
- children: t22
473
+ const showDeleteMessageAction = !conversationDisabled && (message?.mine || canDeleteNonAuthoredMessages);
474
+ let t20;
475
+ if ($[66] !== availableReactions || $[67] !== conversationDisabled || $[68] !== handleReactionToggle || $[69] !== navigation || $[70] !== styles.reactionList) {
476
+ t20 = !conversationDisabled && /*#__PURE__*/_jsx(View, {
477
+ style: styles.reactionList,
478
+ children: availableReactions.map((reaction_1, index) => /*#__PURE__*/_jsx(Reaction, {
479
+ reaction: reaction_1,
480
+ onPress: () => {
481
+ Haptic.impactLight();
482
+ handleReactionToggle({
483
+ value: reaction_1.value,
484
+ mine: reaction_1.mine
485
+ });
486
+ navigation.goBack();
487
+ }
488
+ }, index))
473
489
  });
490
+ $[66] = availableReactions;
491
+ $[67] = conversationDisabled;
492
+ $[68] = handleReactionToggle;
493
+ $[69] = navigation;
474
494
  $[70] = styles.reactionList;
475
- $[71] = t22;
476
- $[72] = t23;
495
+ $[71] = t20;
477
496
  } else {
478
- t23 = $[72];
497
+ t20 = $[71];
479
498
  }
480
- let t24;
481
- if ($[73] !== canDeleteNonAuthoredMessages || $[74] !== handleCopyPress || $[75] !== handleDeleteConfirm || $[76] !== handleEditPress || $[77] !== handleRemoveLinkPreviewConfirm || $[78] !== handleReplyPress || $[79] !== handleReportPress || $[80] !== handleViewReadReceiptsPress || $[81] !== hasExpandedLink || $[82] !== inReplyScreen || $[83] !== isPending || $[84] !== isSystemMessage || $[85] !== message.mine || $[86] !== showReportMessageAction || $[87] !== styles.actions) {
482
- t24 = !isSystemMessage && /*#__PURE__*/_jsxs(View, {
499
+ let t21;
500
+ if ($[72] !== conversationDisabled || $[73] !== handleCopyPress || $[74] !== handleDeleteConfirm || $[75] !== handleEditPress || $[76] !== handleRemoveLinkPreviewConfirm || $[77] !== handleReplyPress || $[78] !== handleReportPress || $[79] !== handleViewReadReceiptsPress || $[80] !== hasExpandedLink || $[81] !== inReplyScreen || $[82] !== isPending || $[83] !== isSystemMessage || $[84] !== message.mine || $[85] !== showDeleteMessageAction || $[86] !== showReportMessageAction || $[87] !== styles.actions) {
501
+ t21 = !isSystemMessage && /*#__PURE__*/_jsxs(View, {
483
502
  style: styles.actions,
484
- children: [!inReplyScreen && /*#__PURE__*/_jsx(FormSheet.Action, {
503
+ children: [!inReplyScreen && !conversationDisabled && /*#__PURE__*/_jsx(FormSheet.Action, {
485
504
  onPress: handleReplyPress,
486
505
  title: "Reply to message",
487
506
  iconName: "registrations.undo",
@@ -497,7 +516,7 @@ function MessageActionsScreenContent(t0) {
497
516
  title: "Report message",
498
517
  iconName: "chat.reportMessageO",
499
518
  accessibilityHint: "Opens a form to report this message"
500
- }), message?.mine && /*#__PURE__*/_jsx(FormSheet.Action, {
519
+ }), message?.mine && !conversationDisabled && /*#__PURE__*/_jsx(FormSheet.Action, {
501
520
  onPress: () => handleEditPress(),
502
521
  title: "Edit message",
503
522
  iconName: "accounts.editor",
@@ -507,12 +526,12 @@ function MessageActionsScreenContent(t0) {
507
526
  title: "View read receipts",
508
527
  iconName: "general.checkPerson",
509
528
  accessibilityHint: "Opens a modal with a list of people who read your message."
510
- }), message?.mine && hasExpandedLink && /*#__PURE__*/_jsx(FormSheet.Action, {
529
+ }), message?.mine && hasExpandedLink && !conversationDisabled && /*#__PURE__*/_jsx(FormSheet.Action, {
511
530
  onPress: () => handleRemoveLinkPreviewConfirm(),
512
531
  title: "Remove link preview",
513
532
  iconName: "general.brokenLink",
514
533
  accessibilityHint: "Removes an expanded link preview from the message."
515
- }), (message?.mine || canDeleteNonAuthoredMessages) && /*#__PURE__*/_jsx(FormSheet.Action, {
534
+ }), showDeleteMessageAction && /*#__PURE__*/_jsx(FormSheet.Action, {
516
535
  onPress: () => handleDeleteConfirm(),
517
536
  title: "Delete message",
518
537
  iconName: "publishing.trash",
@@ -521,39 +540,40 @@ function MessageActionsScreenContent(t0) {
521
540
  accessibilityHint: "Opens a confirmation alert to delete this message permanently."
522
541
  })]
523
542
  });
524
- $[73] = canDeleteNonAuthoredMessages;
525
- $[74] = handleCopyPress;
526
- $[75] = handleDeleteConfirm;
527
- $[76] = handleEditPress;
528
- $[77] = handleRemoveLinkPreviewConfirm;
529
- $[78] = handleReplyPress;
530
- $[79] = handleReportPress;
531
- $[80] = handleViewReadReceiptsPress;
532
- $[81] = hasExpandedLink;
533
- $[82] = inReplyScreen;
534
- $[83] = isPending;
535
- $[84] = isSystemMessage;
536
- $[85] = message.mine;
543
+ $[72] = conversationDisabled;
544
+ $[73] = handleCopyPress;
545
+ $[74] = handleDeleteConfirm;
546
+ $[75] = handleEditPress;
547
+ $[76] = handleRemoveLinkPreviewConfirm;
548
+ $[77] = handleReplyPress;
549
+ $[78] = handleReportPress;
550
+ $[79] = handleViewReadReceiptsPress;
551
+ $[80] = hasExpandedLink;
552
+ $[81] = inReplyScreen;
553
+ $[82] = isPending;
554
+ $[83] = isSystemMessage;
555
+ $[84] = message.mine;
556
+ $[85] = showDeleteMessageAction;
537
557
  $[86] = showReportMessageAction;
538
558
  $[87] = styles.actions;
539
- $[88] = t24;
559
+ $[88] = t21;
540
560
  } else {
541
- t24 = $[88];
561
+ t21 = $[88];
542
562
  }
543
- let t25;
544
- if ($[89] !== styles.formSheetContent || $[90] !== t23 || $[91] !== t24) {
545
- t25 = /*#__PURE__*/_jsxs(FormSheet.Root, {
546
- style: t20,
547
- children: [t23, t24]
563
+ let t22;
564
+ if ($[89] !== styles.formSheetContent || $[90] !== t20 || $[91] !== t21) {
565
+ t22 = /*#__PURE__*/_jsxs(FormSheet.Root, {
566
+ style: styles.formSheetContent,
567
+ children: [t20, t21]
548
568
  });
549
569
  $[89] = styles.formSheetContent;
550
- $[90] = t23;
551
- $[91] = t24;
552
- $[92] = t25;
570
+ $[90] = t20;
571
+ $[91] = t21;
572
+ $[92] = t22;
553
573
  } else {
554
- t25 = $[92];
574
+ t22 = $[92];
555
575
  }
556
- return t25;
576
+ return t22;
557
577
  }
558
578
  function _temp6() {
559
579
  Alert.alert("Oops", "We were unable to remove the preview. Please try again.");
@@ -1 +1 @@
1
- {"version":3,"file":"message_actions_screen.js","names":["PlatformPressable","StackActions","useNavigation","useMutation","useQueryClient","isNil","omitBy","React","useCallback","Alert","Platform","StyleSheet","View","Text","useReactionStyles","FormSheet","getFormSheetScreenOptions","useCreateAndroidRippleColor","useFontScale","useTheme","useApiClient","useConversationMessages","availableFeatures","useFeatures","useMessageReactionToggle","REACTION_EMOJIS","applyMessageDeletionToCaches","getThreadedMessagesQueryKey","Clipboard","Haptic","jsx","_jsx","jsxs","_jsxs","MessageActionsScreenOptions","sheetAllowedDetents","headerTitle","MessageActionsScreen","t0","$","_c","route","conversation_id","message_id","canDeleteNonAuthoredMessages","inReplyScreen","reply_root_author_name","isSystemMessage","params","t1","t2","Symbol","for","refetchOnMount","messages","refetch","t3","t4","m","id","find","message","t5","MessageActionsScreenContent","refetchMessages","replyRootAuthorName","navigation","apiClient","queryClient","styles","useStyles","featureEnabled","attachments","_temp","expandedLink","hasExpandedLink","reactionCounts","myReactions","filter","_temp2","map","_temp3","Object","entries","value","emoji","mine","includes","availableReactions","giphyTitleLink","_temp4","titleLink","attachmentForCopy","replyRootId","goBack","requestAnimationFrame","navigate","reply_root_id","handleReplyPress","text","textToCopy","setStringAsync","notificationSuccess","handleCopyPress","t6","impactLight","handleReportPress","t7","handleReactionToggle","isPending","t8","url","chat","delete","deleteMessage","t9","t10","invalidateQueries","queryKey","t11","mutationFn","mutationKey","onSuccess","onError","_temp5","mutate","handleDeleteMessage","t12","alert","style","onPress","handleDeleteConfirm","t13","state","getState","targetRouteName","targetRoute","routes","r","name","editing_message_id","dispatch","popTo","handleEditPress","t14","params_0","handleViewReadReceiptsPress","t15","url_0","data","type","attributes","expanded_link_id","post","removeLinkPreview","t16","t17","_temp6","handleRemoveLinkPreview","t18","handleRemoveLinkPreviewConfirm","t19","message_reporting","showReportMessageAction","t20","formSheetContent","t21","reactionList","t22","reaction_1","index","Reaction","reaction","t23","children","t24","actions","Action","title","iconName","accessibilityHint","accessibilityRole","appearance","t25","Root","attachment_0","attachment","reaction_0","reactionStyles","colors","baseRippleColor","interaction","fillColorNeutral060","color","androidRippleColor","borderless","foreground","reactionEmoji","allowFontScaling","android_ripple","maxFontSizeMultiplier","fontScale","baseSize","Math","max","borderColorDefaultBase","reactionBtnSize","select","ios","android","create","paddingTop","flexDirection","justifyContent","alignItems","gap","paddingBottom","borderBottomColor","borderBottomWidth","height","width","borderWidth","borderRadius","overflow","fontSize","textAlign"],"sources":["../../src/screens/message_actions_screen.tsx"],"sourcesContent":["import { PlatformPressable } from '@react-navigation/elements'\nimport { StackActions, StaticScreenProps, useNavigation } from '@react-navigation/native'\nimport { useMutation, useQueryClient } from '@tanstack/react-query'\nimport { isNil, omitBy } from 'lodash'\nimport React, { useCallback } from 'react'\nimport { Alert, Platform, StyleSheet, View } from 'react-native'\nimport { Text } from '../components'\nimport { useReactionStyles } from '../components/conversation/message_reaction'\nimport FormSheet, { getFormSheetScreenOptions } from '../components/primitive/form_sheet'\nimport { useCreateAndroidRippleColor, useFontScale, useTheme } from '../hooks'\nimport { useApiClient } from '../hooks/use_api_client'\nimport { useConversationMessages } from '../hooks/use_conversation_messages'\nimport { availableFeatures, useFeatures } from '../hooks/use_features'\nimport { useMessageReactionToggle } from '../hooks/use_message_reaction_toggle'\nimport { MessageResource } from '../types'\nimport { ReactionCountResource } from '../types/resources/reaction'\nimport { REACTION_EMOJIS } from '../utils'\nimport {\n applyMessageDeletionToCaches,\n getThreadedMessagesQueryKey,\n} from '../utils/cache/messages_cache'\nimport { Clipboard, Haptic } from '../utils/native_adapters'\n\nexport const MessageActionsScreenOptions = getFormSheetScreenOptions({\n sheetAllowedDetents: [0.5],\n headerTitle: 'Message actions',\n})\n\nexport type MessageActionsScreenProps = StaticScreenProps<{\n message_id: string\n reply_root_author_name?: string\n conversation_id: number\n canDeleteNonAuthoredMessages?: boolean\n inReplyScreen?: boolean\n isSystemMessage?: boolean\n}>\n\nexport function MessageActionsScreen({ route }: MessageActionsScreenProps) {\n const {\n conversation_id,\n message_id,\n canDeleteNonAuthoredMessages,\n inReplyScreen,\n reply_root_author_name,\n isSystemMessage,\n } = route.params\n\n const { messages, refetch } = useConversationMessages(\n { conversation_id },\n { refetchOnMount: false }\n )\n const message = messages.find(m => m.id === message_id)\n\n if (!message) return null\n\n return (\n <MessageActionsScreenContent\n message={message}\n conversation_id={conversation_id}\n canDeleteNonAuthoredMessages={canDeleteNonAuthoredMessages || false}\n refetchMessages={refetch}\n inReplyScreen={inReplyScreen}\n replyRootAuthorName={reply_root_author_name}\n isSystemMessage={isSystemMessage}\n />\n )\n}\n\nfunction MessageActionsScreenContent({\n message,\n conversation_id,\n canDeleteNonAuthoredMessages,\n refetchMessages,\n inReplyScreen,\n replyRootAuthorName,\n isSystemMessage,\n}: {\n message: MessageResource\n conversation_id: number\n canDeleteNonAuthoredMessages: boolean\n refetchMessages: () => void\n inReplyScreen?: boolean\n replyRootAuthorName?: string\n isSystemMessage?: boolean\n}) {\n const navigation = useNavigation()\n const apiClient = useApiClient()\n const queryClient = useQueryClient()\n const styles = useStyles()\n const { featureEnabled } = useFeatures()\n const expandedLink = message.attachments.find(attachment => attachment.type === 'ExpandedLink')\n const hasExpandedLink = !!expandedLink\n\n const myReactions = message?.reactionCounts\n .filter(reaction => reaction.mine)\n .map(reaction => reaction.value)\n\n const availableReactions = Object.entries(REACTION_EMOJIS).map(([value, emoji]) => {\n return {\n value: value as ReactionCountResource['value'],\n emoji,\n mine: myReactions?.includes(value as ReactionCountResource['value']),\n }\n })\n\n const attachmentForCopy = (): string => {\n const giphyTitleLink = message?.attachments.find(\n attachment => attachment.type === 'giphy'\n )?.titleLink\n\n if (giphyTitleLink) return giphyTitleLink\n return ''\n }\n\n const handleReplyPress = useCallback(() => {\n navigation.goBack()\n // Waits for the modal to be dismissed before pushing the reply screen\n requestAnimationFrame(() => {\n navigation.navigate('ConversationReply', {\n conversation_id,\n reply_root_id: message.replyRootId || message.id,\n reply_root_author_name: replyRootAuthorName,\n })\n })\n }, [navigation, conversation_id, message.id, message.replyRootId, replyRootAuthorName])\n\n const handleCopyPress = async () => {\n const textToCopy = message?.text || attachmentForCopy()\n if (textToCopy) {\n await Clipboard.setStringAsync(textToCopy)\n Haptic.notificationSuccess()\n }\n navigation.goBack()\n }\n\n const handleReportPress = useCallback(() => {\n Haptic.impactLight()\n navigation.navigate('MessageReport', {\n conversation_id,\n message_id: message.id,\n })\n }, [navigation, conversation_id, message.id])\n\n const { handleReactionToggle, isPending } = useMessageReactionToggle({\n conversation_id,\n message,\n })\n\n const deleteMessage = useCallback(() => {\n const url = `/me/conversations/${conversation_id}/messages/${message.id}/`\n\n return apiClient.chat.delete({ url })\n }, [apiClient, conversation_id, message.id])\n\n const { mutate: handleDeleteMessage } = useMutation({\n mutationFn: deleteMessage,\n mutationKey: ['deleteMessage', message.id],\n onSuccess: () => {\n applyMessageDeletionToCaches(queryClient, conversation_id, message)\n if (message.replyRootId) {\n queryClient.invalidateQueries({\n queryKey: getThreadedMessagesQueryKey(conversation_id, message.replyRootId),\n })\n }\n refetchMessages()\n Haptic.notificationSuccess()\n },\n onError: () => {\n Alert.alert('Oops', 'We were unable to delete this message. Please try again.')\n },\n })\n\n const handleDeleteConfirm = useCallback(() => {\n Alert.alert('Delete message', 'Are you sure you want to permanently delete this message?', [\n { text: 'Cancel', style: 'cancel' },\n {\n text: 'Delete',\n style: 'destructive',\n onPress: () => {\n handleDeleteMessage()\n navigation.goBack()\n },\n },\n ])\n }, [handleDeleteMessage, navigation])\n\n const handleEditPress = useCallback(() => {\n const state = navigation.getState?.()\n const targetRouteName = inReplyScreen ? 'ConversationReply' : 'Conversation'\n const targetRoute = state?.routes?.find(r => r.name === targetRouteName)\n const params = omitBy(\n {\n ...(targetRoute?.params || {}),\n conversation_id,\n editing_message_id: message.id,\n },\n isNil\n )\n navigation.dispatch(StackActions.popTo(targetRouteName, params))\n }, [navigation, conversation_id, message.id, inReplyScreen])\n\n const handleViewReadReceiptsPress = useCallback(() => {\n Haptic.impactLight()\n const params = omitBy(\n {\n conversation_id,\n message_id: message.id,\n },\n isNil\n )\n navigation.dispatch(StackActions.popTo('MessageReadReceipts', params))\n }, [navigation, conversation_id, message.id])\n\n const removeLinkPreview = useCallback(() => {\n const url = `/me/conversations/${conversation_id}/messages/${message.id}/remove_expanded_link`\n const data = {\n data: { type: 'ExpandedLink', attributes: { expanded_link_id: expandedLink?.id } },\n }\n\n return apiClient.chat.post({ url, data })\n }, [apiClient, conversation_id, message.id, expandedLink])\n\n const { mutate: handleRemoveLinkPreview } = useMutation({\n mutationFn: removeLinkPreview,\n onSuccess: () => {\n refetchMessages()\n Haptic.notificationSuccess()\n navigation.goBack()\n },\n onError: () => {\n Alert.alert('Oops', 'We were unable to remove the preview. Please try again.')\n },\n })\n\n const handleRemoveLinkPreviewConfirm = useCallback(() => {\n Alert.alert('Remove link preview?', 'This will remove the image preview but retain the link', [\n { text: 'Cancel', style: 'cancel' },\n { text: 'Remove', style: 'destructive', onPress: () => handleRemoveLinkPreview() },\n ])\n }, [handleRemoveLinkPreview])\n\n const showReportMessageAction =\n !message?.mine && featureEnabled(availableFeatures.message_reporting)\n\n return (\n <FormSheet.Root style={styles.formSheetContent}>\n <View style={styles.reactionList}>\n {availableReactions.map((reaction, index) => (\n <Reaction\n key={index}\n reaction={reaction}\n onPress={() => {\n Haptic.impactLight()\n handleReactionToggle({\n value: reaction.value,\n mine: reaction.mine,\n })\n navigation.goBack()\n }}\n />\n ))}\n </View>\n {!isSystemMessage && (\n <View style={styles.actions}>\n {!inReplyScreen && (\n <FormSheet.Action\n onPress={handleReplyPress}\n title=\"Reply to message\"\n iconName=\"registrations.undo\"\n accessibilityHint=\"Navigates to the reply screen\"\n accessibilityRole=\"link\"\n />\n )}\n <FormSheet.Action\n onPress={handleCopyPress}\n title=\"Copy text\"\n iconName=\"services.fileCopy\"\n accessibilityHint=\"Copies text and links to clipboard\"\n />\n {showReportMessageAction && (\n <FormSheet.Action\n onPress={handleReportPress}\n title=\"Report message\"\n iconName=\"chat.reportMessageO\"\n accessibilityHint=\"Opens a form to report this message\"\n />\n )}\n {message?.mine && (\n <FormSheet.Action\n onPress={() => handleEditPress()}\n title=\"Edit message\"\n iconName=\"accounts.editor\"\n accessibilityHint=\"Opens existing text in the message form input.\"\n />\n )}\n {message?.mine && (\n <FormSheet.Action\n onPress={() => handleViewReadReceiptsPress()}\n title=\"View read receipts\"\n iconName=\"general.checkPerson\"\n accessibilityHint=\"Opens a modal with a list of people who read your message.\"\n />\n )}\n {message?.mine && hasExpandedLink && (\n <FormSheet.Action\n onPress={() => handleRemoveLinkPreviewConfirm()}\n title=\"Remove link preview\"\n iconName=\"general.brokenLink\"\n accessibilityHint=\"Removes an expanded link preview from the message.\"\n />\n )}\n {(message?.mine || canDeleteNonAuthoredMessages) && (\n <FormSheet.Action\n onPress={() => handleDeleteConfirm()}\n title=\"Delete message\"\n iconName=\"publishing.trash\"\n appearance=\"danger\"\n disabled={isPending}\n accessibilityHint=\"Opens a confirmation alert to delete this message permanently.\"\n />\n )}\n </View>\n )}\n </FormSheet.Root>\n )\n}\n\nconst Reaction = ({\n reaction,\n onPress,\n}: {\n reaction: { value: ReactionCountResource['value']; emoji: string; mine: boolean | undefined }\n onPress: () => void\n}) => {\n const styles = useStyles()\n const reactionStyles = useReactionStyles({ mine: reaction.mine ? 1 : 0 })\n\n const { colors } = useTheme()\n const baseRippleColor = reaction.mine ? colors.interaction : colors.fillColorNeutral060\n const androidRippleColor = useCreateAndroidRippleColor({ color: baseRippleColor })\n\n return (\n <PlatformPressable\n key={reaction.value}\n style={[reactionStyles.reaction, styles.reaction]}\n android_ripple={{ color: androidRippleColor, borderless: false, foreground: true }}\n onPress={onPress}\n >\n <Text style={styles.reactionEmoji} allowFontScaling={false}>\n {REACTION_EMOJIS[reaction.value]}\n </Text>\n </PlatformPressable>\n )\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n const fontScale = useFontScale({ maxFontSizeMultiplier: 1.3 })\n\n const btnBorderWidth = 1\n const baseSize = 46 * Math.max(1, fontScale)\n const reactionBtnSize = Platform.select({\n ios: baseSize,\n android: baseSize + btnBorderWidth * 2,\n })\n\n return StyleSheet.create({\n formSheetContent: {\n paddingTop: 16,\n },\n reactionList: {\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n gap: 16,\n paddingTop: 8,\n paddingBottom: 16,\n borderBottomColor: colors.borderColorDefaultBase,\n borderBottomWidth: 1,\n },\n reaction: {\n height: reactionBtnSize,\n width: reactionBtnSize,\n borderWidth: btnBorderWidth,\n borderRadius: 32,\n justifyContent: 'center',\n overflow: 'hidden',\n },\n reactionEmoji: {\n fontSize: 24,\n textAlign: 'center',\n },\n actions: {\n paddingTop: 4,\n },\n })\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"message_actions_screen.js","names":["PlatformPressable","StackActions","useNavigation","useMutation","useQueryClient","isNil","omitBy","React","useCallback","Alert","Platform","StyleSheet","View","Text","useReactionStyles","FormSheet","getFormSheetScreenOptions","useCreateAndroidRippleColor","useFontScale","useTheme","useApiClient","useConversation","useConversationMessages","availableFeatures","useFeatures","useMessageReactionToggle","REACTION_EMOJIS","applyMessageDeletionToCaches","getThreadedMessagesQueryKey","Clipboard","Haptic","jsx","_jsx","jsxs","_jsxs","MessageActionsScreenOptions","sheetAllowedDetents","headerTitle","MessageActionsScreen","t0","$","_c","route","conversation_id","message_id","canDeleteNonAuthoredMessages","inReplyScreen","reply_root_author_name","isSystemMessage","params","t1","t2","Symbol","for","refetchOnMount","messages","refetch","t3","t4","data","conversation","t5","t6","m","id","find","message","disabled","t7","t8","MessageActionsScreenContent","conversationDisabled","refetchMessages","replyRootAuthorName","navigation","apiClient","queryClient","styles","useStyles","featureEnabled","attachments","_temp","expandedLink","hasExpandedLink","reactionCounts","myReactions","filter","_temp2","map","_temp3","Object","entries","value","emoji","mine","includes","availableReactions","giphyTitleLink","_temp4","titleLink","attachmentForCopy","replyRootId","goBack","requestAnimationFrame","navigate","reply_root_id","handleReplyPress","text","textToCopy","setStringAsync","notificationSuccess","handleCopyPress","impactLight","handleReportPress","handleReactionToggle","isPending","url","chat","delete","deleteMessage","t9","t10","invalidateQueries","queryKey","t11","mutationFn","mutationKey","onSuccess","onError","_temp5","mutate","handleDeleteMessage","t12","alert","style","onPress","handleDeleteConfirm","t13","state","getState","targetRouteName","targetRoute","routes","r","name","editing_message_id","dispatch","popTo","handleEditPress","t14","params_0","handleViewReadReceiptsPress","t15","url_0","type","attributes","expanded_link_id","post","removeLinkPreview","t16","t17","_temp6","handleRemoveLinkPreview","t18","handleRemoveLinkPreviewConfirm","t19","message_reporting","showReportMessageAction","showDeleteMessageAction","t20","reactionList","children","reaction_1","index","Reaction","reaction","t21","actions","Action","title","iconName","accessibilityHint","accessibilityRole","appearance","t22","formSheetContent","Root","attachment_0","attachment","reaction_0","reactionStyles","colors","baseRippleColor","interaction","fillColorNeutral060","color","androidRippleColor","borderless","foreground","reactionEmoji","allowFontScaling","android_ripple","maxFontSizeMultiplier","fontScale","baseSize","Math","max","borderColorDefaultBase","reactionBtnSize","select","ios","android","create","paddingTop","flexDirection","justifyContent","alignItems","gap","paddingBottom","borderBottomColor","borderBottomWidth","height","width","borderWidth","borderRadius","overflow","fontSize","textAlign"],"sources":["../../src/screens/message_actions_screen.tsx"],"sourcesContent":["import { PlatformPressable } from '@react-navigation/elements'\nimport { StackActions, StaticScreenProps, useNavigation } from '@react-navigation/native'\nimport { useMutation, useQueryClient } from '@tanstack/react-query'\nimport { isNil, omitBy } from 'lodash'\nimport React, { useCallback } from 'react'\nimport { Alert, Platform, StyleSheet, View } from 'react-native'\nimport { Text } from '../components'\nimport { useReactionStyles } from '../components/conversation/message_reaction'\nimport FormSheet, { getFormSheetScreenOptions } from '../components/primitive/form_sheet'\nimport { useCreateAndroidRippleColor, useFontScale, useTheme } from '../hooks'\nimport { useApiClient } from '../hooks/use_api_client'\nimport { useConversation } from '../hooks/use_conversation'\nimport { useConversationMessages } from '../hooks/use_conversation_messages'\nimport { availableFeatures, useFeatures } from '../hooks/use_features'\nimport { useMessageReactionToggle } from '../hooks/use_message_reaction_toggle'\nimport { MessageResource } from '../types'\nimport { ReactionCountResource } from '../types/resources/reaction'\nimport { REACTION_EMOJIS } from '../utils'\nimport {\n applyMessageDeletionToCaches,\n getThreadedMessagesQueryKey,\n} from '../utils/cache/messages_cache'\nimport { Clipboard, Haptic } from '../utils/native_adapters'\n\nexport const MessageActionsScreenOptions = getFormSheetScreenOptions({\n sheetAllowedDetents: [0.5],\n headerTitle: 'Message actions',\n})\n\nexport type MessageActionsScreenProps = StaticScreenProps<{\n message_id: string\n reply_root_author_name?: string\n conversation_id: number\n canDeleteNonAuthoredMessages?: boolean\n inReplyScreen?: boolean\n isSystemMessage?: boolean\n}>\n\nexport function MessageActionsScreen({ route }: MessageActionsScreenProps) {\n const {\n conversation_id,\n message_id,\n canDeleteNonAuthoredMessages,\n inReplyScreen,\n reply_root_author_name,\n isSystemMessage,\n } = route.params\n\n const { messages, refetch } = useConversationMessages(\n { conversation_id },\n { refetchOnMount: false }\n )\n const { data: conversation } = useConversation({ conversation_id }, { refetchOnMount: false })\n const message = messages.find(m => m.id === message_id)\n\n if (!message) return null\n\n return (\n <MessageActionsScreenContent\n message={message}\n conversation_id={conversation_id}\n conversationDisabled={!!conversation.disabled}\n canDeleteNonAuthoredMessages={canDeleteNonAuthoredMessages || false}\n refetchMessages={refetch}\n inReplyScreen={inReplyScreen}\n replyRootAuthorName={reply_root_author_name}\n isSystemMessage={isSystemMessage}\n />\n )\n}\n\nfunction MessageActionsScreenContent({\n message,\n conversation_id,\n conversationDisabled,\n canDeleteNonAuthoredMessages,\n refetchMessages,\n inReplyScreen,\n replyRootAuthorName,\n isSystemMessage,\n}: {\n message: MessageResource\n conversation_id: number\n conversationDisabled: boolean\n canDeleteNonAuthoredMessages: boolean\n refetchMessages: () => void\n inReplyScreen?: boolean\n replyRootAuthorName?: string\n isSystemMessage?: boolean\n}) {\n const navigation = useNavigation()\n const apiClient = useApiClient()\n const queryClient = useQueryClient()\n const styles = useStyles()\n const { featureEnabled } = useFeatures()\n const expandedLink = message.attachments.find(attachment => attachment.type === 'ExpandedLink')\n const hasExpandedLink = !!expandedLink\n\n const myReactions = message?.reactionCounts\n .filter(reaction => reaction.mine)\n .map(reaction => reaction.value)\n\n const availableReactions = Object.entries(REACTION_EMOJIS).map(([value, emoji]) => {\n return {\n value: value as ReactionCountResource['value'],\n emoji,\n mine: myReactions?.includes(value as ReactionCountResource['value']),\n }\n })\n\n const attachmentForCopy = (): string => {\n const giphyTitleLink = message?.attachments.find(\n attachment => attachment.type === 'giphy'\n )?.titleLink\n\n if (giphyTitleLink) return giphyTitleLink\n return ''\n }\n\n const handleReplyPress = useCallback(() => {\n navigation.goBack()\n // Waits for the modal to be dismissed before pushing the reply screen\n requestAnimationFrame(() => {\n navigation.navigate('ConversationReply', {\n conversation_id,\n reply_root_id: message.replyRootId || message.id,\n reply_root_author_name: replyRootAuthorName,\n })\n })\n }, [navigation, conversation_id, message.id, message.replyRootId, replyRootAuthorName])\n\n const handleCopyPress = async () => {\n const textToCopy = message?.text || attachmentForCopy()\n if (textToCopy) {\n await Clipboard.setStringAsync(textToCopy)\n Haptic.notificationSuccess()\n }\n navigation.goBack()\n }\n\n const handleReportPress = useCallback(() => {\n Haptic.impactLight()\n navigation.navigate('MessageReport', {\n conversation_id,\n message_id: message.id,\n })\n }, [navigation, conversation_id, message.id])\n\n const { handleReactionToggle, isPending } = useMessageReactionToggle({\n conversation_id,\n message,\n })\n\n const deleteMessage = useCallback(() => {\n const url = `/me/conversations/${conversation_id}/messages/${message.id}/`\n\n return apiClient.chat.delete({ url })\n }, [apiClient, conversation_id, message.id])\n\n const { mutate: handleDeleteMessage } = useMutation({\n mutationFn: deleteMessage,\n mutationKey: ['deleteMessage', message.id],\n onSuccess: () => {\n applyMessageDeletionToCaches(queryClient, conversation_id, message)\n if (message.replyRootId) {\n queryClient.invalidateQueries({\n queryKey: getThreadedMessagesQueryKey(conversation_id, message.replyRootId),\n })\n }\n refetchMessages()\n Haptic.notificationSuccess()\n },\n onError: () => {\n Alert.alert('Oops', 'We were unable to delete this message. Please try again.')\n },\n })\n\n const handleDeleteConfirm = useCallback(() => {\n Alert.alert('Delete message', 'Are you sure you want to permanently delete this message?', [\n { text: 'Cancel', style: 'cancel' },\n {\n text: 'Delete',\n style: 'destructive',\n onPress: () => {\n handleDeleteMessage()\n navigation.goBack()\n },\n },\n ])\n }, [handleDeleteMessage, navigation])\n\n const handleEditPress = useCallback(() => {\n const state = navigation.getState?.()\n const targetRouteName = inReplyScreen ? 'ConversationReply' : 'Conversation'\n const targetRoute = state?.routes?.find(r => r.name === targetRouteName)\n const params = omitBy(\n {\n ...(targetRoute?.params || {}),\n conversation_id,\n editing_message_id: message.id,\n },\n isNil\n )\n navigation.dispatch(StackActions.popTo(targetRouteName, params))\n }, [navigation, conversation_id, message.id, inReplyScreen])\n\n const handleViewReadReceiptsPress = useCallback(() => {\n Haptic.impactLight()\n const params = omitBy(\n {\n conversation_id,\n message_id: message.id,\n },\n isNil\n )\n navigation.dispatch(StackActions.popTo('MessageReadReceipts', params))\n }, [navigation, conversation_id, message.id])\n\n const removeLinkPreview = useCallback(() => {\n const url = `/me/conversations/${conversation_id}/messages/${message.id}/remove_expanded_link`\n const data = {\n data: { type: 'ExpandedLink', attributes: { expanded_link_id: expandedLink?.id } },\n }\n\n return apiClient.chat.post({ url, data })\n }, [apiClient, conversation_id, message.id, expandedLink])\n\n const { mutate: handleRemoveLinkPreview } = useMutation({\n mutationFn: removeLinkPreview,\n onSuccess: () => {\n refetchMessages()\n Haptic.notificationSuccess()\n navigation.goBack()\n },\n onError: () => {\n Alert.alert('Oops', 'We were unable to remove the preview. Please try again.')\n },\n })\n\n const handleRemoveLinkPreviewConfirm = useCallback(() => {\n Alert.alert('Remove link preview?', 'This will remove the image preview but retain the link', [\n { text: 'Cancel', style: 'cancel' },\n { text: 'Remove', style: 'destructive', onPress: () => handleRemoveLinkPreview() },\n ])\n }, [handleRemoveLinkPreview])\n\n const showReportMessageAction =\n !message?.mine && featureEnabled(availableFeatures.message_reporting)\n const showDeleteMessageAction =\n !conversationDisabled && (message?.mine || canDeleteNonAuthoredMessages)\n\n return (\n <FormSheet.Root style={styles.formSheetContent}>\n {!conversationDisabled && (\n <View style={styles.reactionList}>\n {availableReactions.map((reaction, index) => (\n <Reaction\n key={index}\n reaction={reaction}\n onPress={() => {\n Haptic.impactLight()\n handleReactionToggle({\n value: reaction.value,\n mine: reaction.mine,\n })\n navigation.goBack()\n }}\n />\n ))}\n </View>\n )}\n {!isSystemMessage && (\n <View style={styles.actions}>\n {!inReplyScreen && !conversationDisabled && (\n <FormSheet.Action\n onPress={handleReplyPress}\n title=\"Reply to message\"\n iconName=\"registrations.undo\"\n accessibilityHint=\"Navigates to the reply screen\"\n accessibilityRole=\"link\"\n />\n )}\n <FormSheet.Action\n onPress={handleCopyPress}\n title=\"Copy text\"\n iconName=\"services.fileCopy\"\n accessibilityHint=\"Copies text and links to clipboard\"\n />\n {showReportMessageAction && (\n <FormSheet.Action\n onPress={handleReportPress}\n title=\"Report message\"\n iconName=\"chat.reportMessageO\"\n accessibilityHint=\"Opens a form to report this message\"\n />\n )}\n {message?.mine && !conversationDisabled && (\n <FormSheet.Action\n onPress={() => handleEditPress()}\n title=\"Edit message\"\n iconName=\"accounts.editor\"\n accessibilityHint=\"Opens existing text in the message form input.\"\n />\n )}\n {message?.mine && (\n <FormSheet.Action\n onPress={() => handleViewReadReceiptsPress()}\n title=\"View read receipts\"\n iconName=\"general.checkPerson\"\n accessibilityHint=\"Opens a modal with a list of people who read your message.\"\n />\n )}\n {message?.mine && hasExpandedLink && !conversationDisabled && (\n <FormSheet.Action\n onPress={() => handleRemoveLinkPreviewConfirm()}\n title=\"Remove link preview\"\n iconName=\"general.brokenLink\"\n accessibilityHint=\"Removes an expanded link preview from the message.\"\n />\n )}\n {showDeleteMessageAction && (\n <FormSheet.Action\n onPress={() => handleDeleteConfirm()}\n title=\"Delete message\"\n iconName=\"publishing.trash\"\n appearance=\"danger\"\n disabled={isPending}\n accessibilityHint=\"Opens a confirmation alert to delete this message permanently.\"\n />\n )}\n </View>\n )}\n </FormSheet.Root>\n )\n}\n\nconst Reaction = ({\n reaction,\n onPress,\n}: {\n reaction: { value: ReactionCountResource['value']; emoji: string; mine: boolean | undefined }\n onPress: () => void\n}) => {\n const styles = useStyles()\n const reactionStyles = useReactionStyles({ mine: reaction.mine ? 1 : 0 })\n\n const { colors } = useTheme()\n const baseRippleColor = reaction.mine ? colors.interaction : colors.fillColorNeutral060\n const androidRippleColor = useCreateAndroidRippleColor({ color: baseRippleColor })\n\n return (\n <PlatformPressable\n key={reaction.value}\n style={[reactionStyles.reaction, styles.reaction]}\n android_ripple={{ color: androidRippleColor, borderless: false, foreground: true }}\n onPress={onPress}\n >\n <Text style={styles.reactionEmoji} allowFontScaling={false}>\n {REACTION_EMOJIS[reaction.value]}\n </Text>\n </PlatformPressable>\n )\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n const fontScale = useFontScale({ maxFontSizeMultiplier: 1.3 })\n\n const btnBorderWidth = 1\n const baseSize = 46 * Math.max(1, fontScale)\n const reactionBtnSize = Platform.select({\n ios: baseSize,\n android: baseSize + btnBorderWidth * 2,\n })\n\n return StyleSheet.create({\n formSheetContent: {\n paddingTop: 16,\n },\n reactionList: {\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n gap: 16,\n paddingTop: 8,\n paddingBottom: 16,\n borderBottomColor: colors.borderColorDefaultBase,\n borderBottomWidth: 1,\n },\n reaction: {\n height: reactionBtnSize,\n width: reactionBtnSize,\n borderWidth: btnBorderWidth,\n borderRadius: 32,\n justifyContent: 'center',\n overflow: 'hidden',\n },\n reactionEmoji: {\n fontSize: 24,\n textAlign: 'center',\n },\n actions: {\n paddingTop: 4,\n },\n })\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"search_screen.d.ts","sourceRoot":"","sources":["../../../src/screens/search/search_screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAiB,MAAM,0BAA0B,CAAA;AACvE,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACvB,MAAM,gCAAgC,CAAA;AAevC,eAAO,MAAM,mBAAmB,GAAI,iBAEjC,sBAAsB,CAAC,aAAa,CAAC,KAAG,4BAIxC,CAAA;AAEH,wBAAgB,YAAY,4CAqD3B"}
1
+ {"version":3,"file":"search_screen.d.ts","sourceRoot":"","sources":["../../../src/screens/search/search_screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAiB,MAAM,0BAA0B,CAAA;AACvE,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACvB,MAAM,gCAAgC,CAAA;AAevC,eAAO,MAAM,mBAAmB,GAAI,iBAEjC,sBAAsB,CAAC,aAAa,CAAC,KAAG,4BAIxC,CAAA;AAEH,wBAAgB,YAAY,4CAuD3B"}
@@ -1,7 +1,7 @@
1
1
  import { c as _c } from "react/compiler-runtime";
2
2
  import { useNavigation } from '@react-navigation/native';
3
3
  import React, { useRef, useState } from 'react';
4
- import { Keyboard, StyleSheet, View } from 'react-native';
4
+ import { Keyboard, ScrollView, StyleSheet, View } from 'react-native';
5
5
  import { KeyboardView } from '../../components';
6
6
  import { composeOptions, withMinimalBack } from '../../components/display/platform_modal_header_buttons';
7
7
  import { useDebouncedSearchTerm } from '../../hooks/use_debounced_search_term';
@@ -98,7 +98,11 @@ export function SearchScreen() {
98
98
  term: debouncedTerm,
99
99
  onSelect: openResult,
100
100
  onSettled: publishSearch
101
- }, debouncedTerm) : /*#__PURE__*/_jsx(SearchPromptBlankState, {});
101
+ }, debouncedTerm) : /*#__PURE__*/_jsx(ScrollView, {
102
+ contentContainerStyle: styles.prompt,
103
+ keyboardShouldPersistTaps: "handled",
104
+ children: /*#__PURE__*/_jsx(SearchPromptBlankState, {})
105
+ });
102
106
  $[8] = debouncedTerm;
103
107
  $[9] = openResult;
104
108
  $[10] = publishSearch;
@@ -126,6 +130,10 @@ export function SearchScreen() {
126
130
  const styles = StyleSheet.create({
127
131
  container: {
128
132
  flex: 1
133
+ },
134
+ prompt: {
135
+ flexGrow: 1,
136
+ justifyContent: 'center'
129
137
  }
130
138
  });
131
139
  //# sourceMappingURL=search_screen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search_screen.js","names":["useNavigation","React","useRef","useState","Keyboard","StyleSheet","View","KeyboardView","composeOptions","withMinimalBack","useDebouncedSearchTerm","analyticsEvents","useProductAnalytics","SearchPromptBlankState","SearchField","SearchResultsList","jsx","_jsx","jsxs","_jsxs","SearchScreenOptions","navigation","title","animation","onPress","goBack","SearchScreen","$","_c","term","setTerm","debouncedTerm","publishEvent","t0","Symbol","for","Set","publishedTerms","t1","settledTerm","counts","current","has","add","search_performed","term_length","length","conversation_result_count","conversationResultCount","message_result_count","messageResultCount","publishSearch","t2","result","position","dismiss","search_result_opened","result_type","type","navigate","conversation_id","Number","id","extra","conversationId","initial_message_id","openResult","t3","t4","t5","children","style","styles","container","testID","create","flex"],"sources":["../../../src/screens/search/search_screen.tsx"],"sourcesContent":["import { ParamListBase, useNavigation } from '@react-navigation/native'\nimport {\n NativeStackNavigationOptions,\n NativeStackScreenProps,\n} from '@react-navigation/native-stack'\nimport React, { useRef, useState } from 'react'\nimport { Keyboard, StyleSheet, View } from 'react-native'\nimport { KeyboardView } from '../../components'\nimport {\n composeOptions,\n withMinimalBack,\n} from '../../components/display/platform_modal_header_buttons'\nimport { useDebouncedSearchTerm } from '../../hooks/use_debounced_search_term'\nimport { analyticsEvents, useProductAnalytics } from '../../hooks/use_product_analytics'\nimport type { SearchResultResource } from '../../types/resources/search_result'\nimport { SearchPromptBlankState } from './components/search_blank_states'\nimport { SearchField } from './components/search_field'\nimport { SearchResultsList, type SearchResultCounts } from './components/search_results_list'\n\nexport const SearchScreenOptions = ({\n navigation,\n}: NativeStackScreenProps<ParamListBase>): NativeStackNavigationOptions =>\n composeOptions(\n { title: 'Search', animation: 'fade' },\n withMinimalBack({ onPress: () => navigation.goBack() })\n )\n\nexport function SearchScreen() {\n const navigation = useNavigation()\n const [term, setTerm] = useState('')\n const debouncedTerm = useDebouncedSearchTerm(term)\n const { publishEvent } = useProductAnalytics()\n const publishedTerms = useRef(new Set<string>())\n\n const publishSearch = (settledTerm: string, counts: SearchResultCounts) => {\n if (publishedTerms.current.has(settledTerm)) return\n\n publishedTerms.current.add(settledTerm)\n publishEvent(analyticsEvents.search_performed, {\n term_length: settledTerm.length,\n conversation_result_count: counts.conversationResultCount,\n message_result_count: counts.messageResultCount,\n })\n }\n\n const openResult = (result: SearchResultResource, position: number) => {\n Keyboard.dismiss()\n publishEvent(analyticsEvents.search_result_opened, { result_type: result.type, position })\n\n if (result.type === 'conversation') {\n navigation.navigate('Conversation', {\n conversation_id: Number(result.id),\n title: result.title,\n })\n } else {\n navigation.navigate('Conversation', {\n conversation_id: result.extra.conversationId,\n initial_message_id: result.id,\n title: result.title,\n })\n }\n }\n\n return (\n <KeyboardView>\n <View style={styles.container} testID=\"search-screen\">\n <SearchField term={term} onChange={setTerm} />\n {debouncedTerm.length > 0 ? (\n <SearchResultsList\n key={debouncedTerm}\n term={debouncedTerm}\n onSelect={openResult}\n onSettled={publishSearch}\n />\n ) : (\n <SearchPromptBlankState />\n )}\n </View>\n </KeyboardView>\n )\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n})\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"search_screen.js","names":["useNavigation","React","useRef","useState","Keyboard","ScrollView","StyleSheet","View","KeyboardView","composeOptions","withMinimalBack","useDebouncedSearchTerm","analyticsEvents","useProductAnalytics","SearchPromptBlankState","SearchField","SearchResultsList","jsx","_jsx","jsxs","_jsxs","SearchScreenOptions","navigation","title","animation","onPress","goBack","SearchScreen","$","_c","term","setTerm","debouncedTerm","publishEvent","t0","Symbol","for","Set","publishedTerms","t1","settledTerm","counts","current","has","add","search_performed","term_length","length","conversation_result_count","conversationResultCount","message_result_count","messageResultCount","publishSearch","t2","result","position","dismiss","search_result_opened","result_type","type","navigate","conversation_id","Number","id","extra","conversationId","initial_message_id","openResult","t3","t4","contentContainerStyle","styles","prompt","keyboardShouldPersistTaps","children","t5","style","container","testID","create","flex","flexGrow","justifyContent"],"sources":["../../../src/screens/search/search_screen.tsx"],"sourcesContent":["import { ParamListBase, useNavigation } from '@react-navigation/native'\nimport {\n NativeStackNavigationOptions,\n NativeStackScreenProps,\n} from '@react-navigation/native-stack'\nimport React, { useRef, useState } from 'react'\nimport { Keyboard, ScrollView, StyleSheet, View } from 'react-native'\nimport { KeyboardView } from '../../components'\nimport {\n composeOptions,\n withMinimalBack,\n} from '../../components/display/platform_modal_header_buttons'\nimport { useDebouncedSearchTerm } from '../../hooks/use_debounced_search_term'\nimport { analyticsEvents, useProductAnalytics } from '../../hooks/use_product_analytics'\nimport type { SearchResultResource } from '../../types/resources/search_result'\nimport { SearchPromptBlankState } from './components/search_blank_states'\nimport { SearchField } from './components/search_field'\nimport { SearchResultsList, type SearchResultCounts } from './components/search_results_list'\n\nexport const SearchScreenOptions = ({\n navigation,\n}: NativeStackScreenProps<ParamListBase>): NativeStackNavigationOptions =>\n composeOptions(\n { title: 'Search', animation: 'fade' },\n withMinimalBack({ onPress: () => navigation.goBack() })\n )\n\nexport function SearchScreen() {\n const navigation = useNavigation()\n const [term, setTerm] = useState('')\n const debouncedTerm = useDebouncedSearchTerm(term)\n const { publishEvent } = useProductAnalytics()\n const publishedTerms = useRef(new Set<string>())\n\n const publishSearch = (settledTerm: string, counts: SearchResultCounts) => {\n if (publishedTerms.current.has(settledTerm)) return\n\n publishedTerms.current.add(settledTerm)\n publishEvent(analyticsEvents.search_performed, {\n term_length: settledTerm.length,\n conversation_result_count: counts.conversationResultCount,\n message_result_count: counts.messageResultCount,\n })\n }\n\n const openResult = (result: SearchResultResource, position: number) => {\n Keyboard.dismiss()\n publishEvent(analyticsEvents.search_result_opened, { result_type: result.type, position })\n\n if (result.type === 'conversation') {\n navigation.navigate('Conversation', {\n conversation_id: Number(result.id),\n title: result.title,\n })\n } else {\n navigation.navigate('Conversation', {\n conversation_id: result.extra.conversationId,\n initial_message_id: result.id,\n title: result.title,\n })\n }\n }\n\n return (\n <KeyboardView>\n <View style={styles.container} testID=\"search-screen\">\n <SearchField term={term} onChange={setTerm} />\n {debouncedTerm.length > 0 ? (\n <SearchResultsList\n key={debouncedTerm}\n term={debouncedTerm}\n onSelect={openResult}\n onSettled={publishSearch}\n />\n ) : (\n <ScrollView contentContainerStyle={styles.prompt} keyboardShouldPersistTaps=\"handled\">\n <SearchPromptBlankState />\n </ScrollView>\n )}\n </View>\n </KeyboardView>\n )\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n prompt: {\n flexGrow: 1,\n justifyContent: 'center',\n },\n})\n"],"mappings":"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","ignoreList":[]}
@@ -2,6 +2,7 @@ import { StaticScreenProps } from '@react-navigation/native';
2
2
  export declare const SendGiphyScreenOptions: () => import("@react-navigation/native-stack").NativeStackNavigationOptions;
3
3
  export type SendGiphyScreenProps = StaticScreenProps<{
4
4
  conversation_id: number;
5
+ reply_root_id?: string | null;
5
6
  search_term: string;
6
7
  }>;
7
8
  export declare function SendGiphyScreen({ route }: SendGiphyScreenProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"send_giphy_screen.d.ts","sourceRoot":"","sources":["../../src/screens/send_giphy_screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,iBAAiB,EAAiB,MAAM,0BAA0B,CAAA;AAYzF,eAAO,MAAM,sBAAsB,6EAGjC,CAAA;AAEF,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;IACnD,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAC,CAAA;AAEF,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,oBAAoB,2CA6G9D"}
1
+ {"version":3,"file":"send_giphy_screen.d.ts","sourceRoot":"","sources":["../../src/screens/send_giphy_screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,iBAAiB,EAAiB,MAAM,0BAA0B,CAAA;AAYzF,eAAO,MAAM,sBAAsB,6EAGjC,CAAA;AAEF,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;IACnD,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,WAAW,EAAE,MAAM,CAAA;CACpB,CAAC,CAAA;AAEF,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,oBAAoB,2CA+G9D"}