@planningcenter/chat-react-native 3.2.0-rc.8 → 3.2.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 (362) hide show
  1. package/build/components/conversation/message_form/message_form_attachment_image.d.ts +13 -0
  2. package/build/components/conversation/message_form/message_form_attachment_image.d.ts.map +1 -0
  3. package/build/components/conversation/message_form/message_form_attachment_image.js +78 -0
  4. package/build/components/conversation/message_form/message_form_attachment_image.js.map +1 -0
  5. package/build/components/conversation/message_form.d.ts.map +1 -1
  6. package/build/components/conversation/message_form.js +128 -16
  7. package/build/components/conversation/message_form.js.map +1 -1
  8. package/build/components/conversations/conversation_actions.d.ts +2 -2
  9. package/build/components/conversations/conversation_actions.d.ts.map +1 -1
  10. package/build/components/conversations/conversation_actions.js.map +1 -1
  11. package/build/components/conversations/conversation_preview.d.ts +3 -1
  12. package/build/components/conversations/conversation_preview.d.ts.map +1 -1
  13. package/build/components/conversations/conversation_preview.js +2 -2
  14. package/build/components/conversations/conversation_preview.js.map +1 -1
  15. package/build/components/display/action_button.d.ts +2 -1
  16. package/build/components/display/action_button.d.ts.map +1 -1
  17. package/build/components/display/action_button.js +3 -4
  18. package/build/components/display/action_button.js.map +1 -1
  19. package/build/components/display/banner.d.ts +6 -1
  20. package/build/components/display/banner.d.ts.map +1 -1
  21. package/build/components/display/banner.js +2 -2
  22. package/build/components/display/banner.js.map +1 -1
  23. package/build/components/display/banner_collapsible.d.ts +1 -1
  24. package/build/components/display/banner_collapsible.d.ts.map +1 -1
  25. package/build/components/display/banner_collapsible.js +2 -2
  26. package/build/components/display/banner_collapsible.js.map +1 -1
  27. package/build/components/display/child_notice.d.ts +3 -1
  28. package/build/components/display/child_notice.d.ts.map +1 -1
  29. package/build/components/display/child_notice.js +2 -2
  30. package/build/components/display/child_notice.js.map +1 -1
  31. package/build/components/display/person.d.ts +3 -1
  32. package/build/components/display/person.d.ts.map +1 -1
  33. package/build/components/display/person.js +2 -2
  34. package/build/components/display/person.js.map +1 -1
  35. package/build/components/group_conversation_list.d.ts +19 -0
  36. package/build/components/group_conversation_list.d.ts.map +1 -0
  37. package/build/components/group_conversation_list.js +48 -0
  38. package/build/components/group_conversation_list.js.map +1 -0
  39. package/build/components/index.d.ts +1 -0
  40. package/build/components/index.d.ts.map +1 -1
  41. package/build/components/index.js +1 -0
  42. package/build/components/index.js.map +1 -1
  43. package/build/components/primitive/banner_primitive.d.ts +3 -0
  44. package/build/components/primitive/banner_primitive.d.ts.map +1 -1
  45. package/build/components/primitive/banner_primitive.js +4 -4
  46. package/build/components/primitive/banner_primitive.js.map +1 -1
  47. package/build/contexts/api_provider.d.ts +1 -1
  48. package/build/contexts/api_provider.d.ts.map +1 -1
  49. package/build/contexts/api_provider.js +3 -3
  50. package/build/contexts/api_provider.js.map +1 -1
  51. package/build/contexts/chat_context.d.ts +4 -4
  52. package/build/contexts/chat_context.d.ts.map +1 -1
  53. package/build/contexts/chat_context.js +3 -3
  54. package/build/contexts/chat_context.js.map +1 -1
  55. package/build/contexts/conversations_context.js +1 -1
  56. package/build/contexts/conversations_context.js.map +1 -1
  57. package/build/hooks/attachments/supported_extensions.d.ts +2 -0
  58. package/build/hooks/attachments/supported_extensions.d.ts.map +1 -0
  59. package/build/hooks/attachments/supported_extensions.js +48 -0
  60. package/build/hooks/attachments/supported_extensions.js.map +1 -0
  61. package/build/hooks/groups/use_group_members_for_new_conversation.d.ts +235 -0
  62. package/build/hooks/groups/use_group_members_for_new_conversation.d.ts.map +1 -0
  63. package/build/hooks/groups/use_group_members_for_new_conversation.js +55 -0
  64. package/build/hooks/groups/use_group_members_for_new_conversation.js.map +1 -0
  65. package/build/hooks/groups/use_groups_conversation_create.d.ts +9 -0
  66. package/build/hooks/groups/use_groups_conversation_create.d.ts.map +1 -0
  67. package/build/hooks/groups/use_groups_conversation_create.js +36 -0
  68. package/build/hooks/groups/use_groups_conversation_create.js.map +1 -0
  69. package/build/hooks/index.d.ts +4 -0
  70. package/build/hooks/index.d.ts.map +1 -1
  71. package/build/hooks/index.js +4 -0
  72. package/build/hooks/index.js.map +1 -1
  73. package/build/hooks/use_api.d.ts +43 -43
  74. package/build/hooks/use_api.d.ts.map +1 -1
  75. package/build/hooks/use_api.js +5 -0
  76. package/build/hooks/use_api.js.map +1 -1
  77. package/build/hooks/use_api_client.d.ts.map +1 -1
  78. package/build/hooks/use_api_client.js +5 -3
  79. package/build/hooks/use_api_client.js.map +1 -1
  80. package/build/hooks/use_attachment_uploader.d.ts +26 -0
  81. package/build/hooks/use_attachment_uploader.d.ts.map +1 -0
  82. package/build/hooks/use_attachment_uploader.js +111 -0
  83. package/build/hooks/use_attachment_uploader.js.map +1 -0
  84. package/build/hooks/use_chat_permissions.d.ts +14 -14
  85. package/build/hooks/use_conversation.d.ts.map +1 -1
  86. package/build/hooks/use_conversation.js +1 -0
  87. package/build/hooks/use_conversation.js.map +1 -1
  88. package/build/hooks/use_conversations_actions.d.ts.map +1 -1
  89. package/build/hooks/use_conversations_actions.js +10 -0
  90. package/build/hooks/use_conversations_actions.js.map +1 -1
  91. package/build/hooks/use_conversations_jolt_events.d.ts.map +1 -1
  92. package/build/hooks/use_conversations_jolt_events.js +4 -1
  93. package/build/hooks/use_conversations_jolt_events.js.map +1 -1
  94. package/build/hooks/use_current_person.d.ts +15 -0
  95. package/build/hooks/use_current_person.d.ts.map +1 -1
  96. package/build/hooks/use_current_person.js +26 -9
  97. package/build/hooks/use_current_person.js.map +1 -1
  98. package/build/hooks/use_groups.d.ts +26 -26
  99. package/build/hooks/use_groups_groups.d.ts +26 -26
  100. package/build/hooks/use_jolt.d.ts.map +1 -1
  101. package/build/hooks/use_jolt.js +15 -22
  102. package/build/hooks/use_jolt.js.map +1 -1
  103. package/build/hooks/use_message_create.js +2 -2
  104. package/build/hooks/use_message_create.js.map +1 -1
  105. package/build/hooks/use_suspense_api.d.ts.map +1 -1
  106. package/build/hooks/use_suspense_api.js +5 -0
  107. package/build/hooks/use_suspense_api.js.map +1 -1
  108. package/build/hooks/use_teams.d.ts +26 -26
  109. package/build/hooks/use_upload_client.d.ts +28 -0
  110. package/build/hooks/use_upload_client.d.ts.map +1 -0
  111. package/build/hooks/use_upload_client.js +32 -0
  112. package/build/hooks/use_upload_client.js.map +1 -0
  113. package/build/index.d.ts +3 -2
  114. package/build/index.d.ts.map +1 -1
  115. package/build/index.js +3 -2
  116. package/build/index.js.map +1 -1
  117. package/build/navigation/index.d.ts +52 -34
  118. package/build/navigation/index.d.ts.map +1 -1
  119. package/build/navigation/index.js +16 -2
  120. package/build/navigation/index.js.map +1 -1
  121. package/build/screens/conversation_details_screen.js +2 -2
  122. package/build/screens/conversation_details_screen.js.map +1 -1
  123. package/build/screens/conversation_filter_recipients/components/checkbox_row.d.ts +10 -0
  124. package/build/screens/conversation_filter_recipients/components/checkbox_row.d.ts.map +1 -0
  125. package/build/screens/conversation_filter_recipients/components/checkbox_row.js +74 -0
  126. package/build/screens/conversation_filter_recipients/components/checkbox_row.js.map +1 -0
  127. package/build/screens/conversation_filter_recipients/components/header_row.d.ts +10 -0
  128. package/build/screens/conversation_filter_recipients/components/header_row.d.ts.map +1 -0
  129. package/build/screens/conversation_filter_recipients/components/header_row.js +69 -0
  130. package/build/screens/conversation_filter_recipients/components/header_row.js.map +1 -0
  131. package/build/screens/conversation_filter_recipients/components/navigation_header.d.ts +5 -0
  132. package/build/screens/conversation_filter_recipients/components/navigation_header.d.ts.map +1 -0
  133. package/build/screens/conversation_filter_recipients/components/navigation_header.js +46 -0
  134. package/build/screens/conversation_filter_recipients/components/navigation_header.js.map +1 -0
  135. package/build/screens/conversation_filter_recipients/context/conversation_filter_recipients_context.d.ts +17 -0
  136. package/build/screens/conversation_filter_recipients/context/conversation_filter_recipients_context.d.ts.map +1 -0
  137. package/build/screens/conversation_filter_recipients/context/conversation_filter_recipients_context.js +37 -0
  138. package/build/screens/conversation_filter_recipients/context/conversation_filter_recipients_context.js.map +1 -0
  139. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.d.ts +1 -3
  140. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.d.ts.map +1 -1
  141. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.js +67 -32
  142. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.js.map +1 -1
  143. package/build/screens/conversation_filter_recipients/hooks/use_flattened_array_of_service_types_with_teams.d.ts +10 -0
  144. package/build/screens/conversation_filter_recipients/hooks/use_flattened_array_of_service_types_with_teams.d.ts.map +1 -0
  145. package/build/screens/conversation_filter_recipients/hooks/use_flattened_array_of_service_types_with_teams.js +32 -0
  146. package/build/screens/conversation_filter_recipients/hooks/use_flattened_array_of_service_types_with_teams.js.map +1 -0
  147. package/build/screens/conversation_filter_recipients/hooks/use_service_types_with_teams.d.ts +8 -0
  148. package/build/screens/conversation_filter_recipients/hooks/use_service_types_with_teams.d.ts.map +1 -0
  149. package/build/screens/conversation_filter_recipients/hooks/use_service_types_with_teams.js +65 -0
  150. package/build/screens/conversation_filter_recipients/hooks/use_service_types_with_teams.js.map +1 -0
  151. package/build/screens/conversation_filter_recipients/types.d.ts +38 -0
  152. package/build/screens/conversation_filter_recipients/types.d.ts.map +1 -0
  153. package/build/screens/conversation_filter_recipients/types.js +6 -0
  154. package/build/screens/conversation_filter_recipients/types.js.map +1 -0
  155. package/build/screens/conversation_filters/components/conversation_filters.js +5 -2
  156. package/build/screens/conversation_filters/components/conversation_filters.js.map +1 -1
  157. package/build/screens/conversation_filters/components/rows.d.ts.map +1 -1
  158. package/build/screens/conversation_filters/components/rows.js +6 -1
  159. package/build/screens/conversation_filters/components/rows.js.map +1 -1
  160. package/build/screens/conversation_filters/group_filters.d.ts.map +1 -1
  161. package/build/screens/conversation_filters/group_filters.js +12 -4
  162. package/build/screens/conversation_filters/group_filters.js.map +1 -1
  163. package/build/screens/conversation_filters/hooks/filters.d.ts +40 -40
  164. package/build/screens/conversation_filters/hooks/filters.js +1 -1
  165. package/build/screens/conversation_filters/hooks/filters.js.map +1 -1
  166. package/build/screens/conversation_filters/team_filters.d.ts.map +1 -1
  167. package/build/screens/conversation_filters/team_filters.js +12 -4
  168. package/build/screens/conversation_filters/team_filters.js.map +1 -1
  169. package/build/screens/conversation_filters_screen.js +1 -0
  170. package/build/screens/conversation_filters_screen.js.map +1 -1
  171. package/build/screens/conversation_new/components/form_list.d.ts +12 -0
  172. package/build/screens/conversation_new/components/form_list.d.ts.map +1 -0
  173. package/build/screens/conversation_new/components/form_list.js +42 -0
  174. package/build/screens/conversation_new/components/form_list.js.map +1 -0
  175. package/build/screens/conversation_new/components/groups_form.d.ts +4 -2
  176. package/build/screens/conversation_new/components/groups_form.d.ts.map +1 -1
  177. package/build/screens/conversation_new/components/groups_form.js +82 -90
  178. package/build/screens/conversation_new/components/groups_form.js.map +1 -1
  179. package/build/screens/conversation_new/components/team_form.d.ts +1 -1
  180. package/build/screens/conversation_new/components/team_form.js.map +1 -1
  181. package/build/screens/conversation_new/conversation_new_screen.d.ts +5 -2
  182. package/build/screens/conversation_new/conversation_new_screen.d.ts.map +1 -1
  183. package/build/screens/conversation_new/conversation_new_screen.js +2 -2
  184. package/build/screens/conversation_new/conversation_new_screen.js.map +1 -1
  185. package/build/screens/conversation_screen.d.ts +7 -0
  186. package/build/screens/conversation_screen.d.ts.map +1 -1
  187. package/build/screens/conversation_screen.js +103 -4
  188. package/build/screens/conversation_screen.js.map +1 -1
  189. package/build/screens/conversation_select_recipients/components/groups_without_chat_disclaimer_row.d.ts +2 -0
  190. package/build/screens/conversation_select_recipients/components/groups_without_chat_disclaimer_row.d.ts.map +1 -0
  191. package/build/screens/conversation_select_recipients/components/groups_without_chat_disclaimer_row.js +17 -0
  192. package/build/screens/conversation_select_recipients/components/groups_without_chat_disclaimer_row.js.map +1 -0
  193. package/build/screens/conversation_select_recipients/components/recipient_link_row.d.ts +12 -0
  194. package/build/screens/conversation_select_recipients/components/recipient_link_row.d.ts.map +1 -0
  195. package/build/screens/conversation_select_recipients/components/recipient_link_row.js +61 -0
  196. package/build/screens/conversation_select_recipients/components/recipient_link_row.js.map +1 -0
  197. package/build/screens/conversation_select_recipients/components/view_more_link_row.d.ts +7 -0
  198. package/build/screens/conversation_select_recipients/components/view_more_link_row.d.ts.map +1 -0
  199. package/build/screens/conversation_select_recipients/components/view_more_link_row.js +21 -0
  200. package/build/screens/conversation_select_recipients/components/view_more_link_row.js.map +1 -0
  201. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.d.ts +4 -0
  202. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.d.ts.map +1 -0
  203. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.js +48 -0
  204. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.js.map +1 -0
  205. package/build/screens/conversation_select_recipients/conversation_select_recipients_screen.d.ts +2 -6
  206. package/build/screens/conversation_select_recipients/conversation_select_recipients_screen.d.ts.map +1 -1
  207. package/build/screens/conversation_select_recipients/conversation_select_recipients_screen.js +37 -49
  208. package/build/screens/conversation_select_recipients/conversation_select_recipients_screen.js.map +1 -1
  209. package/build/screens/conversation_select_recipients/types/screen_props.d.ts +9 -0
  210. package/build/screens/conversation_select_recipients/types/screen_props.d.ts.map +1 -0
  211. package/build/screens/conversation_select_recipients/types/screen_props.js +2 -0
  212. package/build/screens/conversation_select_recipients/types/screen_props.js.map +1 -0
  213. package/build/screens/conversations/components/list_header_component.d.ts.map +1 -1
  214. package/build/screens/conversations/components/list_header_component.js +18 -4
  215. package/build/screens/conversations/components/list_header_component.js.map +1 -1
  216. package/build/screens/conversations/conversations_screen.d.ts +2 -1
  217. package/build/screens/conversations/conversations_screen.d.ts.map +1 -1
  218. package/build/screens/conversations/conversations_screen.js +32 -1
  219. package/build/screens/conversations/conversations_screen.js.map +1 -1
  220. package/build/screens/send_giphy_screen.js +29 -1
  221. package/build/screens/send_giphy_screen.js.map +1 -1
  222. package/build/types/resources/groups/groups_group_resource.d.ts +1 -1
  223. package/build/types/resources/groups/groups_group_resource.js.map +1 -1
  224. package/build/types/resources/groups/groups_member_resource_with_person.d.ts +14 -0
  225. package/build/types/resources/groups/groups_member_resource_with_person.d.ts.map +1 -0
  226. package/build/types/resources/groups/groups_member_resource_with_person.js +2 -0
  227. package/build/types/resources/groups/groups_member_resource_with_person.js.map +1 -0
  228. package/build/types/resources/member.d.ts +0 -10
  229. package/build/types/resources/member.d.ts.map +1 -1
  230. package/build/types/resources/member.js.map +1 -1
  231. package/build/types/resources/message.d.ts +2 -0
  232. package/build/types/resources/message.d.ts.map +1 -1
  233. package/build/types/resources/message.js.map +1 -1
  234. package/build/types/resources/oauth_token.d.ts +4 -4
  235. package/build/types/resources/oauth_token.d.ts.map +1 -1
  236. package/build/types/resources/oauth_token.js.map +1 -1
  237. package/build/utils/client/client.d.ts +4 -8
  238. package/build/utils/client/client.d.ts.map +1 -1
  239. package/build/utils/client/client.js +10 -9
  240. package/build/utils/client/client.js.map +1 -1
  241. package/build/utils/date.d.ts +5 -0
  242. package/build/utils/date.d.ts.map +1 -1
  243. package/build/utils/date.js +8 -1
  244. package/build/utils/date.js.map +1 -1
  245. package/build/utils/destructure_chat_group_graph_id.d.ts +10 -0
  246. package/build/utils/destructure_chat_group_graph_id.d.ts.map +1 -0
  247. package/build/utils/destructure_chat_group_graph_id.js +8 -0
  248. package/build/utils/destructure_chat_group_graph_id.js.map +1 -0
  249. package/build/utils/index.d.ts +1 -0
  250. package/build/utils/index.d.ts.map +1 -1
  251. package/build/utils/index.js +1 -0
  252. package/build/utils/index.js.map +1 -1
  253. package/build/utils/native_adapters/configuration.d.ts +4 -1
  254. package/build/utils/native_adapters/configuration.d.ts.map +1 -1
  255. package/build/utils/native_adapters/configuration.js +13 -1
  256. package/build/utils/native_adapters/configuration.js.map +1 -1
  257. package/build/utils/native_adapters/image_picker.d.ts +25 -0
  258. package/build/utils/native_adapters/image_picker.d.ts.map +1 -0
  259. package/build/utils/native_adapters/image_picker.js +9 -0
  260. package/build/utils/native_adapters/image_picker.js.map +1 -0
  261. package/build/utils/native_adapters/index.d.ts +1 -0
  262. package/build/utils/native_adapters/index.d.ts.map +1 -1
  263. package/build/utils/native_adapters/index.js +1 -0
  264. package/build/utils/native_adapters/index.js.map +1 -1
  265. package/build/utils/session.d.ts +6 -2
  266. package/build/utils/session.d.ts.map +1 -1
  267. package/build/utils/session.js +6 -1
  268. package/build/utils/session.js.map +1 -1
  269. package/build/utils/upload_uri.d.ts +23 -0
  270. package/build/utils/upload_uri.d.ts.map +1 -0
  271. package/build/utils/upload_uri.js +60 -0
  272. package/build/utils/upload_uri.js.map +1 -0
  273. package/build/utils/uri.d.ts +10 -2
  274. package/build/utils/uri.d.ts.map +1 -1
  275. package/build/utils/uri.js +24 -6
  276. package/build/utils/uri.js.map +1 -1
  277. package/build/vendor/tapestry/alias_tokens_color_map.d.ts +2 -0
  278. package/build/vendor/tapestry/alias_tokens_color_map.d.ts.map +1 -1
  279. package/build/vendor/tapestry/alias_tokens_color_map.js +2 -0
  280. package/build/vendor/tapestry/alias_tokens_color_map.js.map +1 -1
  281. package/package.json +4 -3
  282. package/src/__tests__/hooks/useTheme.tsx +1 -1
  283. package/src/__tests__/{client.ts → utils/client.ts} +7 -115
  284. package/src/__tests__/{session.ts → utils/session.ts} +4 -4
  285. package/src/__tests__/utils/uri.ts +107 -0
  286. package/src/components/conversation/message_form/message_form_attachment_image.tsx +121 -0
  287. package/src/components/conversation/message_form.tsx +197 -31
  288. package/src/components/conversations/conversation_actions.tsx +2 -2
  289. package/src/components/conversations/conversation_preview.tsx +8 -2
  290. package/src/components/display/action_button.tsx +4 -3
  291. package/src/components/display/banner.tsx +7 -1
  292. package/src/components/display/banner_collapsible.tsx +6 -1
  293. package/src/components/display/child_notice.tsx +9 -3
  294. package/src/components/display/person.tsx +4 -3
  295. package/src/components/group_conversation_list.tsx +82 -0
  296. package/src/components/index.tsx +1 -0
  297. package/src/components/primitive/banner_primitive.tsx +12 -5
  298. package/src/contexts/api_provider.tsx +3 -3
  299. package/src/contexts/chat_context.tsx +7 -7
  300. package/src/contexts/conversations_context.tsx +1 -1
  301. package/src/hooks/attachments/supported_extensions.ts +47 -0
  302. package/src/hooks/groups/use_group_members_for_new_conversation.ts +74 -0
  303. package/src/hooks/groups/use_groups_conversation_create.ts +50 -0
  304. package/src/hooks/index.ts +4 -0
  305. package/src/hooks/use_api.ts +13 -7
  306. package/src/hooks/use_api_client.ts +7 -3
  307. package/src/hooks/use_attachment_uploader.ts +179 -0
  308. package/src/hooks/use_conversation.ts +1 -0
  309. package/src/hooks/use_conversations_actions.ts +11 -0
  310. package/src/hooks/use_conversations_jolt_events.ts +5 -1
  311. package/src/hooks/use_current_person.ts +37 -9
  312. package/src/hooks/use_jolt.ts +18 -23
  313. package/src/hooks/use_message_create.ts +2 -2
  314. package/src/hooks/use_suspense_api.ts +6 -0
  315. package/src/hooks/use_upload_client.ts +67 -0
  316. package/src/index.tsx +3 -1
  317. package/src/navigation/index.tsx +23 -2
  318. package/src/screens/conversation_details_screen.tsx +2 -2
  319. package/src/screens/conversation_filter_recipients/components/checkbox_row.tsx +101 -0
  320. package/src/screens/conversation_filter_recipients/components/header_row.tsx +99 -0
  321. package/src/screens/conversation_filter_recipients/components/navigation_header.tsx +68 -0
  322. package/src/screens/conversation_filter_recipients/context/conversation_filter_recipients_context.tsx +53 -0
  323. package/src/screens/conversation_filter_recipients/conversation_filter_recipients_screen.tsx +90 -49
  324. package/src/screens/conversation_filter_recipients/hooks/use_flattened_array_of_service_types_with_teams.tsx +50 -0
  325. package/src/screens/conversation_filter_recipients/hooks/use_service_types_with_teams.ts +90 -0
  326. package/src/screens/conversation_filter_recipients/types.tsx +47 -0
  327. package/src/screens/conversation_filters/components/conversation_filters.tsx +5 -2
  328. package/src/screens/conversation_filters/components/rows.tsx +6 -1
  329. package/src/screens/conversation_filters/group_filters.tsx +23 -14
  330. package/src/screens/conversation_filters/hooks/filters.ts +1 -1
  331. package/src/screens/conversation_filters/team_filters.tsx +23 -14
  332. package/src/screens/conversation_filters_screen.tsx +1 -0
  333. package/src/screens/conversation_new/components/form_list.tsx +67 -0
  334. package/src/screens/conversation_new/components/groups_form.tsx +133 -107
  335. package/src/screens/conversation_new/components/team_form.tsx +1 -1
  336. package/src/screens/conversation_new/conversation_new_screen.tsx +11 -4
  337. package/src/screens/conversation_screen.tsx +123 -4
  338. package/src/screens/conversation_select_recipients/components/groups_without_chat_disclaimer_row.tsx +21 -0
  339. package/src/screens/conversation_select_recipients/components/recipient_link_row.tsx +91 -0
  340. package/src/screens/conversation_select_recipients/components/view_more_link_row.tsx +30 -0
  341. package/src/screens/conversation_select_recipients/conversation_select_group_recipients_screen.tsx +79 -0
  342. package/src/screens/conversation_select_recipients/conversation_select_recipients_screen.tsx +57 -65
  343. package/src/screens/conversation_select_recipients/types/screen_props.tsx +11 -0
  344. package/src/screens/conversations/components/list_header_component.tsx +20 -4
  345. package/src/screens/conversations/conversations_screen.tsx +37 -2
  346. package/src/screens/send_giphy_screen.tsx +30 -1
  347. package/src/types/resources/groups/groups_group_resource.ts +1 -1
  348. package/src/types/resources/groups/groups_member_resource_with_person.ts +13 -0
  349. package/src/types/resources/member.ts +0 -11
  350. package/src/types/resources/message.ts +2 -0
  351. package/src/types/resources/oauth_token.ts +4 -4
  352. package/src/utils/client/client.ts +13 -13
  353. package/src/utils/date.ts +11 -1
  354. package/src/utils/destructure_chat_group_graph_id.ts +25 -0
  355. package/src/utils/index.ts +1 -0
  356. package/src/utils/native_adapters/configuration.ts +15 -1
  357. package/src/utils/native_adapters/image_picker.ts +31 -0
  358. package/src/utils/native_adapters/index.ts +1 -0
  359. package/src/utils/session.ts +10 -4
  360. package/src/utils/upload_uri.ts +69 -0
  361. package/src/utils/uri.ts +30 -6
  362. package/src/vendor/tapestry/alias_tokens_color_map.ts +3 -0
@@ -1,15 +1,23 @@
1
1
  import React from 'react';
2
- import { FlatList, RefreshControl, View } from 'react-native';
2
+ import { FlatList, RefreshControl, StyleSheet } from 'react-native';
3
3
  import { Text } from '../../components/display';
4
4
  import { TeamRow } from './components/rows';
5
5
  import { useFilterContext } from './context/conversation_filter_context';
6
6
  import { useTeamsToFilter } from './hooks/filters';
7
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
7
8
  export const TeamFilters = () => {
9
+ const styles = useStyles();
8
10
  const { teams, fetchNextPage, isRefetching, refetch } = useTeamsToFilter();
9
11
  const { params } = useFilterContext();
10
12
  const { chat_group_graph_id } = params;
11
- return (<View>
12
- <FlatList data={teams} renderItem={({ item }) => (<TeamRow team={item} isActive={item?.id.toString() === chat_group_graph_id}/>)} refreshing={isRefetching} refreshControl={<RefreshControl refreshing={isRefetching} onRefresh={refetch}/>} ListEmptyComponent={<Text>No teams available</Text>} onEndReached={() => fetchNextPage()}/>
13
- </View>);
13
+ return (<FlatList data={teams} renderItem={({ item }) => (<TeamRow team={item} isActive={item?.id.toString() === chat_group_graph_id}/>)} refreshing={isRefetching} refreshControl={<RefreshControl refreshing={isRefetching} onRefresh={refetch}/>} ListEmptyComponent={<Text>No teams available</Text>} onEndReached={() => fetchNextPage()} contentContainerStyle={styles.container}/>);
14
+ };
15
+ const useStyles = () => {
16
+ const { bottom } = useSafeAreaInsets();
17
+ return StyleSheet.create({
18
+ container: {
19
+ paddingBottom: bottom + 12,
20
+ },
21
+ });
14
22
  };
15
23
  //# sourceMappingURL=team_filters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"team_filters.js","sourceRoot":"","sources":["../../../src/screens/conversation_filters/team_filters.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAKlD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAA;IAC1E,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAA;IACrC,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAAA;IAEtC,OAAO,CACL,CAAC,IAAI,CACH;MAAA,CAAC,QAAQ,CACP,IAAI,CAAC,CAAC,KAAK,CAAC,CACZ,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CACxB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,KAAK,mBAAmB,CAAC,EAAG,CAC/E,CAAC,CACF,UAAU,CAAC,CAAC,YAAY,CAAC,CACzB,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAG,CAAC,CACjF,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CACpD,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,EAExC;IAAA,EAAE,IAAI,CAAC,CACR,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { StaticScreenProps } from '@react-navigation/native'\nimport React from 'react'\nimport { FlatList, RefreshControl, View } from 'react-native'\nimport { Text } from '../../components/display'\nimport { TeamRow } from './components/rows'\nimport { useFilterContext } from './context/conversation_filter_context'\nimport { useTeamsToFilter } from './hooks/filters'\nimport { ConversationFiltersParams } from './screen_props'\n\nexport type GroupFiltersScreenProps = StaticScreenProps<ConversationFiltersParams>\n\nexport const TeamFilters = () => {\n const { teams, fetchNextPage, isRefetching, refetch } = useTeamsToFilter()\n const { params } = useFilterContext()\n const { chat_group_graph_id } = params\n\n return (\n <View>\n <FlatList\n data={teams}\n renderItem={({ item }) => (\n <TeamRow team={item} isActive={item?.id.toString() === chat_group_graph_id} />\n )}\n refreshing={isRefetching}\n refreshControl={<RefreshControl refreshing={isRefetching} onRefresh={refetch} />}\n ListEmptyComponent={<Text>No teams available</Text>}\n onEndReached={() => fetchNextPage()}\n />\n </View>\n )\n}\n"]}
1
+ {"version":3,"file":"team_filters.js","sourceRoot":"","sources":["../../../src/screens/conversation_filters/team_filters.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAIlE,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAA;IAC1E,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAA;IACrC,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAAA;IACtC,OAAO,CACL,CAAC,QAAQ,CACP,IAAI,CAAC,CAAC,KAAK,CAAC,CACZ,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CACxB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,KAAK,mBAAmB,CAAC,EAAG,CAC/E,CAAC,CACF,UAAU,CAAC,CAAC,YAAY,CAAC,CACzB,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAG,CAAC,CACjF,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CACpD,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,CACpC,qBAAqB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EACxC,CACH,CAAA;AACH,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAA;IACtC,OAAO,UAAU,CAAC,MAAM,CAAC;QACvB,SAAS,EAAE;YACT,aAAa,EAAE,MAAM,GAAG,EAAE;SAC3B;KACF,CAAC,CAAA;AACJ,CAAC,CAAA","sourcesContent":["import { StaticScreenProps } from '@react-navigation/native'\nimport React from 'react'\nimport { FlatList, RefreshControl, StyleSheet } from 'react-native'\nimport { Text } from '../../components/display'\nimport { TeamRow } from './components/rows'\nimport { useFilterContext } from './context/conversation_filter_context'\nimport { useTeamsToFilter } from './hooks/filters'\nimport { ConversationFiltersParams } from './screen_props'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\n\nexport type GroupFiltersScreenProps = StaticScreenProps<ConversationFiltersParams>\n\nexport const TeamFilters = () => {\n const styles = useStyles()\n const { teams, fetchNextPage, isRefetching, refetch } = useTeamsToFilter()\n const { params } = useFilterContext()\n const { chat_group_graph_id } = params\n return (\n <FlatList\n data={teams}\n renderItem={({ item }) => (\n <TeamRow team={item} isActive={item?.id.toString() === chat_group_graph_id} />\n )}\n refreshing={isRefetching}\n refreshControl={<RefreshControl refreshing={isRefetching} onRefresh={refetch} />}\n ListEmptyComponent={<Text>No teams available</Text>}\n onEndReached={() => fetchNextPage()}\n contentContainerStyle={styles.container}\n />\n )\n}\n\nconst useStyles = () => {\n const { bottom } = useSafeAreaInsets()\n return StyleSheet.create({\n container: {\n paddingBottom: bottom + 12,\n },\n })\n}\n"]}
@@ -92,6 +92,7 @@ const useStyles = () => {
92
92
  return StyleSheet.create({
93
93
  container: {
94
94
  height: containerHeight,
95
+ flex: 1,
95
96
  },
96
97
  headerTitle: {
97
98
  textAlign: 'left',
@@ -1 +1 @@
1
- {"version":3,"file":"conversation_filters_screen.js","sourceRoot":"","sources":["../../src/screens/conversation_filters_screen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { HeaderTitle, HeaderTitleProps, useHeaderHeight } from '@react-navigation/elements'\nimport { createComponentForStaticNavigation, RouteProp, useRoute } from '@react-navigation/native'\nimport {\n createNativeStackNavigator,\n NativeStackNavigationOptions,\n} from '@react-navigation/native-stack'\nimport React from 'react'\nimport { Platform, StyleSheet, useWindowDimensions, View } from 'react-native'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\nimport { Button, TextButton } from '../components'\nimport {\n FilterContext,\n FilterProvider,\n} from './conversation_filters/context/conversation_filter_context'\nimport { ConversationFilters } from './conversation_filters/components/conversation_filters'\nimport { GroupFilters } from './conversation_filters/group_filters'\nimport {\n ConversationFiltersScreenProps,\n ConversationFilterStackParamList,\n} from './conversation_filters/screen_props'\nimport { useTheme } from '../hooks'\nimport { TeamFilters } from './conversation_filters/team_filters'\n\nconst FilterHeaderTitle = ({ tintColor }: HeaderTitleProps) => {\n const styles = useStyles()\n return <HeaderTitle style={[styles.headerTitle, { color: tintColor }]}>Filters</HeaderTitle>\n}\n\nconst HeaderRight = () => {\n const { resetFilter, applyFilters } = React.useContext(FilterContext)\n const route = useRoute<RouteProp<ConversationFiltersScreenProps['route']>>()\n const styles = useStyles()\n\n return (\n <View style={styles.headerRight}>\n <TextButton onPress={resetFilter}>Reset</TextButton>\n <Button title=\"Apply\" onPress={() => applyFilters(route.params)} />\n </View>\n )\n}\n\nconst HeaderRightWithContext = () => {\n return (\n <FilterProvider>\n <HeaderRight />\n </FilterProvider>\n )\n}\n\nexport const ConversationFiltersScreenOptions: NativeStackNavigationOptions = {\n presentation: Platform.select({ android: 'modal', ios: 'formSheet' }),\n sheetAllowedDetents: Platform.select({\n android: [0.75, 0.94],\n default: [0.75, 1],\n }),\n sheetGrabberVisible: true,\n headerBackVisible: false,\n headerRight: HeaderRightWithContext,\n headerTitle: FilterHeaderTitle,\n headerTitleAlign: 'left',\n}\n\nconst FilterNavigator = createNativeStackNavigator<ConversationFilterStackParamList>({\n initialRouteName: 'Filters',\n screens: {\n Filters: {\n screen: ConversationFilters,\n options: {\n headerShown: false,\n },\n },\n GroupFilters: {\n screen: GroupFilters,\n options: {\n headerTitle: Platform.select({\n android: 'Groups',\n ios: '',\n }),\n headerBackTitle: 'Groups',\n },\n },\n TeamFilters: {\n screen: TeamFilters,\n options: {\n headerTitle: Platform.select({\n android: 'Teams',\n ios: '',\n }),\n headerBackTitle: 'Teams',\n },\n },\n },\n})\n\nconst Filters = createComponentForStaticNavigation(FilterNavigator, 'Filters')\n\nexport const ConversationFiltersScreen = (_props: ConversationFiltersScreenProps) => {\n const styles = useStyles()\n\n return (\n <FilterProvider>\n <View style={styles.container}>\n <Filters />\n </View>\n </FilterProvider>\n )\n}\n\nconst useStyles = () => {\n const { top } = useSafeAreaInsets()\n const { height } = useWindowDimensions()\n const headerHeight = useHeaderHeight()\n const theme = useTheme()\n\n const containerHeight = Platform.select({\n android: height,\n ios: height - top - headerHeight,\n })\n\n return StyleSheet.create({\n container: {\n height: containerHeight,\n },\n headerTitle: {\n textAlign: 'left',\n flex: 1,\n },\n filterBar: {\n backgroundColor: theme.colors.fillColorNeutral100Inverted,\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingHorizontal: 16,\n paddingVertical: 16,\n gap: 8,\n },\n filterBarScroll: {\n elevation: 4,\n boxShadow: '0px 4px 4px rgba(0, 0, 0, 0.1)',\n },\n filterBarActions: {\n flexDirection: 'row',\n gap: 8,\n alignItems: 'center',\n },\n headerRight: {\n flexDirection: 'row',\n gap: 8,\n alignItems: 'center',\n },\n })\n}\n"]}
1
+ {"version":3,"file":"conversation_filters_screen.js","sourceRoot":"","sources":["../../src/screens/conversation_filters_screen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { HeaderTitle, HeaderTitleProps, useHeaderHeight } from '@react-navigation/elements'\nimport { createComponentForStaticNavigation, RouteProp, useRoute } from '@react-navigation/native'\nimport {\n createNativeStackNavigator,\n NativeStackNavigationOptions,\n} from '@react-navigation/native-stack'\nimport React from 'react'\nimport { Platform, StyleSheet, useWindowDimensions, View } from 'react-native'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\nimport { Button, TextButton } from '../components'\nimport {\n FilterContext,\n FilterProvider,\n} from './conversation_filters/context/conversation_filter_context'\nimport { ConversationFilters } from './conversation_filters/components/conversation_filters'\nimport { GroupFilters } from './conversation_filters/group_filters'\nimport {\n ConversationFiltersScreenProps,\n ConversationFilterStackParamList,\n} from './conversation_filters/screen_props'\nimport { useTheme } from '../hooks'\nimport { TeamFilters } from './conversation_filters/team_filters'\n\nconst FilterHeaderTitle = ({ tintColor }: HeaderTitleProps) => {\n const styles = useStyles()\n return <HeaderTitle style={[styles.headerTitle, { color: tintColor }]}>Filters</HeaderTitle>\n}\n\nconst HeaderRight = () => {\n const { resetFilter, applyFilters } = React.useContext(FilterContext)\n const route = useRoute<RouteProp<ConversationFiltersScreenProps['route']>>()\n const styles = useStyles()\n\n return (\n <View style={styles.headerRight}>\n <TextButton onPress={resetFilter}>Reset</TextButton>\n <Button title=\"Apply\" onPress={() => applyFilters(route.params)} />\n </View>\n )\n}\n\nconst HeaderRightWithContext = () => {\n return (\n <FilterProvider>\n <HeaderRight />\n </FilterProvider>\n )\n}\n\nexport const ConversationFiltersScreenOptions: NativeStackNavigationOptions = {\n presentation: Platform.select({ android: 'modal', ios: 'formSheet' }),\n sheetAllowedDetents: Platform.select({\n android: [0.75, 0.94],\n default: [0.75, 1],\n }),\n sheetGrabberVisible: true,\n headerBackVisible: false,\n headerRight: HeaderRightWithContext,\n headerTitle: FilterHeaderTitle,\n headerTitleAlign: 'left',\n}\n\nconst FilterNavigator = createNativeStackNavigator<ConversationFilterStackParamList>({\n initialRouteName: 'Filters',\n screens: {\n Filters: {\n screen: ConversationFilters,\n options: {\n headerShown: false,\n },\n },\n GroupFilters: {\n screen: GroupFilters,\n options: {\n headerTitle: Platform.select({\n android: 'Groups',\n ios: '',\n }),\n headerBackTitle: 'Groups',\n },\n },\n TeamFilters: {\n screen: TeamFilters,\n options: {\n headerTitle: Platform.select({\n android: 'Teams',\n ios: '',\n }),\n headerBackTitle: 'Teams',\n },\n },\n },\n})\n\nconst Filters = createComponentForStaticNavigation(FilterNavigator, 'Filters')\n\nexport const ConversationFiltersScreen = (_props: ConversationFiltersScreenProps) => {\n const styles = useStyles()\n\n return (\n <FilterProvider>\n <View style={styles.container}>\n <Filters />\n </View>\n </FilterProvider>\n )\n}\n\nconst useStyles = () => {\n const { top } = useSafeAreaInsets()\n const { height } = useWindowDimensions()\n const headerHeight = useHeaderHeight()\n const theme = useTheme()\n\n const containerHeight = Platform.select({\n android: height,\n ios: height - top - headerHeight,\n })\n\n return StyleSheet.create({\n container: {\n height: containerHeight,\n flex: 1,\n },\n headerTitle: {\n textAlign: 'left',\n flex: 1,\n },\n filterBar: {\n backgroundColor: theme.colors.fillColorNeutral100Inverted,\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingHorizontal: 16,\n paddingVertical: 16,\n gap: 8,\n },\n filterBarScroll: {\n elevation: 4,\n boxShadow: '0px 4px 4px rgba(0, 0, 0, 0.1)',\n },\n filterBarActions: {\n flexDirection: 'row',\n gap: 8,\n alignItems: 'center',\n },\n headerRight: {\n flexDirection: 'row',\n gap: 8,\n alignItems: 'center',\n },\n })\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { type FlashListProps } from '@shopify/flash-list';
3
+ import { MemberResource } from '../../../types';
4
+ interface FormListProps {
5
+ memberData: MemberResource[];
6
+ FormContent?: FlashListProps<MemberResource>['ListHeaderComponent'];
7
+ listEmptyText?: string;
8
+ }
9
+ export declare const FormList: ({ memberData, FormContent, listEmptyText }: FormListProps) => React.JSX.Element;
10
+ export declare const Divider: () => React.JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=form_list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form_list.d.ts","sourceRoot":"","sources":["../../../../src/screens/conversation_new/components/form_list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAI/C,UAAU,aAAa;IACrB,UAAU,EAAE,cAAc,EAAE,CAAA;IAC5B,WAAW,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAA;IACnE,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,eAAO,MAAM,QAAQ,+CAAgD,aAAa,sBAajF,CAAA;AAYD,eAAO,MAAM,OAAO,yBAInB,CAAA"}
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+ import { StyleSheet, View } from 'react-native';
3
+ import { FlashList } from '@shopify/flash-list';
4
+ import { Person, Text } from '../../../components/display';
5
+ import { useTheme } from '../../../hooks';
6
+ export const FormList = ({ memberData, FormContent, listEmptyText }) => {
7
+ const styles = useStyles();
8
+ return (<FlashList data={memberData} ListHeaderComponent={FormContent} renderItem={({ item }) => <Person person={item} style={styles.person}/>} keyExtractor={item => item.id.toString()} estimatedItemSize={45} ListEmptyComponent={<ListEmptyText text={listEmptyText || 'No members found'}/>}/>);
9
+ };
10
+ const ListEmptyText = ({ text }) => {
11
+ const styles = useStyles();
12
+ return (<View style={styles.emptyTextContainer}>
13
+ <Text style={styles.emptyText}>{text}</Text>
14
+ </View>);
15
+ };
16
+ export const Divider = () => {
17
+ const styles = useStyles();
18
+ return <View style={styles.divider}/>;
19
+ };
20
+ const useStyles = () => {
21
+ const { colors } = useTheme();
22
+ return StyleSheet.create({
23
+ person: {
24
+ paddingHorizontal: 16,
25
+ paddingBottom: 12,
26
+ },
27
+ emptyTextContainer: {
28
+ alignItems: 'center',
29
+ justifyContent: 'center',
30
+ padding: 32,
31
+ },
32
+ emptyText: {
33
+ textAlign: 'center',
34
+ color: colors.textColorDefaultSecondary,
35
+ },
36
+ divider: {
37
+ borderBottomWidth: 1,
38
+ borderBottomColor: colors.fillColorNeutral050Base,
39
+ },
40
+ });
41
+ };
42
+ //# sourceMappingURL=form_list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form_list.js","sourceRoot":"","sources":["../../../../src/screens/conversation_new/components/form_list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAuB,MAAM,qBAAqB,CAAA;AAEpE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAQzC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAiB,EAAE,EAAE;IACpF,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,OAAO,CACL,CAAC,SAAS,CACR,IAAI,CAAC,CAAC,UAAU,CAAC,CACjB,mBAAmB,CAAC,CAAC,WAAW,CAAC,CACjC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAG,CAAC,CACzE,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CACzC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CACtB,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,aAAa,IAAI,kBAAkB,CAAC,EAAG,CAAC,EACjF,CACH,CAAA;AACH,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAE,EAAE;IACnD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CACrC;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAC7C;IAAA,EAAE,IAAI,CAAC,CACR,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE;IAC1B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAG,CAAA;AACxC,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IAE7B,OAAO,UAAU,CAAC,MAAM,CAAC;QACvB,MAAM,EAAE;YACN,iBAAiB,EAAE,EAAE;YACrB,aAAa,EAAE,EAAE;SAClB;QACD,kBAAkB,EAAE;YAClB,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;YACxB,OAAO,EAAE,EAAE;SACZ;QACD,SAAS,EAAE;YACT,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,MAAM,CAAC,yBAAyB;SACxC;QACD,OAAO,EAAE;YACP,iBAAiB,EAAE,CAAC;YACpB,iBAAiB,EAAE,MAAM,CAAC,uBAAuB;SAClD;KACF,CAAC,CAAA;AACJ,CAAC,CAAA","sourcesContent":["import React from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport { FlashList, type FlashListProps } from '@shopify/flash-list'\nimport { MemberResource } from '../../../types'\nimport { Person, Text } from '../../../components/display'\nimport { useTheme } from '../../../hooks'\n\ninterface FormListProps {\n memberData: MemberResource[]\n FormContent?: FlashListProps<MemberResource>['ListHeaderComponent']\n listEmptyText?: string\n}\n\nexport const FormList = ({ memberData, FormContent, listEmptyText }: FormListProps) => {\n const styles = useStyles()\n\n return (\n <FlashList\n data={memberData}\n ListHeaderComponent={FormContent}\n renderItem={({ item }) => <Person person={item} style={styles.person} />}\n keyExtractor={item => item.id.toString()}\n estimatedItemSize={45}\n ListEmptyComponent={<ListEmptyText text={listEmptyText || 'No members found'} />}\n />\n )\n}\n\nconst ListEmptyText = ({ text }: { text: string }) => {\n const styles = useStyles()\n\n return (\n <View style={styles.emptyTextContainer}>\n <Text style={styles.emptyText}>{text}</Text>\n </View>\n )\n}\n\nexport const Divider = () => {\n const styles = useStyles()\n\n return <View style={styles.divider} />\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n\n return StyleSheet.create({\n person: {\n paddingHorizontal: 16,\n paddingBottom: 12,\n },\n emptyTextContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n padding: 32,\n },\n emptyText: {\n textAlign: 'center',\n color: colors.textColorDefaultSecondary,\n },\n divider: {\n borderBottomWidth: 1,\n borderBottomColor: colors.fillColorNeutral050Base,\n },\n })\n}\n"]}
@@ -1,7 +1,9 @@
1
1
  import React from 'react';
2
+ import { GraphId } from '../../../types/resources/group_resource';
2
3
  type GroupsFormProps = {
3
- groupId?: string;
4
+ groupId: number;
5
+ chat_group_graph_id?: GraphId;
4
6
  };
5
- export declare const GroupsForm: ({ groupId }: GroupsFormProps) => React.JSX.Element;
7
+ export declare const GroupsForm: ({ groupId, chat_group_graph_id }: GroupsFormProps) => React.JSX.Element;
6
8
  export {};
7
9
  //# sourceMappingURL=groups_form.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"groups_form.d.ts","sourceRoot":"","sources":["../../../../src/screens/conversation_new/components/groups_form.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAepD,KAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAMD,eAAO,MAAM,UAAU,gBAAiB,eAAe,sBAqFtD,CAAA"}
1
+ {"version":3,"file":"groups_form.d.ts","sourceRoot":"","sources":["../../../../src/screens/conversation_new/components/groups_form.tsx"],"names":[],"mappings":"AACA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAY7D,OAAO,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAA;AAIjE,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,UAAU,qCAAsC,eAAe,sBAuD3E,CAAA"}
@@ -1,17 +1,17 @@
1
1
  import { StackActions, useNavigation } from '@react-navigation/native';
2
- import React, { useCallback, useState } from 'react';
3
- import { StyleSheet, TextInput, View } from 'react-native';
4
- import { useSafeAreaInsets } from 'react-native-safe-area-context';
5
- import { Text } from '../../../components';
2
+ import React, { useCallback, useMemo, useState } from 'react';
3
+ import { Platform, StyleSheet, TextInput, View } from 'react-native';
4
+ import { Banner, ChildNotice, Heading, Text } from '../../../components';
6
5
  import { ActionButton } from '../../../components/display/action_button';
7
- import { useSuspenseGet, useTheme } from '../../../hooks';
8
- import { useApiClient } from '../../../hooks/use_api_client';
9
- import { useMutation } from '@tanstack/react-query';
10
- export const GroupsForm = ({ groupId }) => {
11
- const styles = useStyles();
6
+ import { KeyboardView } from '../../../components/display/keyboard_view';
7
+ import { useCurrentPerson, useSuspenseGet, useTheme } from '../../../hooks';
8
+ import { useGroupMembersForNewConversation, } from '../../../hooks/groups/use_group_members_for_new_conversation';
9
+ import { useGroupsConversationCreate } from '../../../hooks/groups/use_groups_conversation_create';
10
+ import { pluralize } from '../../../utils';
11
+ import { Divider, FormList } from './form_list';
12
+ export const GroupsForm = ({ groupId, chat_group_graph_id }) => {
12
13
  const navigation = useNavigation();
13
14
  const [title, setTitle] = useState();
14
- const apiClient = useApiClient();
15
15
  const { data: group } = useSuspenseGet({
16
16
  url: `/me/groups/${groupId}`,
17
17
  data: {
@@ -21,101 +21,93 @@ export const GroupsForm = ({ groupId }) => {
21
21
  },
22
22
  app: 'groups',
23
23
  });
24
- const { mutate: handleSave } = useMutation({
25
- throwOnError: true,
26
- onSuccess: result => {
27
- handleRedirectToConversation({ conversation_id: result.data.id });
28
- },
29
- mutationFn: () => apiClient.groups
30
- .post({
31
- url: `/me/groups/${groupId}/chat_conversation_payload`,
32
- data: {
33
- data: {
34
- type: '',
35
- attributes: {
36
- title,
37
- },
38
- },
39
- },
40
- })
41
- .then(res => res.data.value)
42
- .then(payload => apiClient.chat.post({
43
- url: '/me/conversations',
44
- data: {
45
- data: {
46
- type: 'Conversation',
47
- attributes: {
48
- payload,
49
- },
50
- },
51
- },
52
- })),
53
- });
54
- const handleRedirectToConversation = useCallback(({ conversation_id }) => {
55
- // exit from the create stack
56
- navigation.getParent()?.goBack();
24
+ const groupMemberships = useGroupMembersForNewConversation({ id: groupId });
25
+ const redirectToConversation = useCallback((conversationId) => {
57
26
  // navigate to the conversation screen
58
- navigation.dispatch(StackActions.push('Conversation', {
59
- conversation_id,
27
+ navigation.dispatch(StackActions.popTo('Conversation', {
28
+ conversation_id: conversationId,
29
+ chat_group_graph_id,
60
30
  }));
61
- }, [navigation]);
62
- return (<View style={styles.container}>
63
- <View style={styles.section}>
64
- <View style={styles.to}>
65
- <Text>To:</Text>
66
- <View>
67
- <Text>{group.name}</Text>
68
- <Text>{group.membershipsCount} members</Text>
69
- </View>
70
- </View>
71
- <View style={styles.titleContainer}>
72
- <Text style={styles.titleLabel}>Title</Text>
73
- <TextInput placeholder="Topic of conversation (required)" value={title} onChangeText={setTitle} style={styles.titleInput}/>
74
- </View>
31
+ }, [chat_group_graph_id, navigation]);
32
+ const { mutate: handleSave } = useGroupsConversationCreate({
33
+ groupId,
34
+ title,
35
+ onSuccess: redirectToConversation,
36
+ });
37
+ return (<KeyboardView>
38
+ <FormList memberData={groupMemberships.adultMembers} FormContent={<FormContent group={group} title={title} setTitle={setTitle} groupMemberships={groupMemberships}/>}/>
39
+ <ActionButton disabled={!title} title="Start Conversation" onPress={() => handleSave()} infoText="Conversation will be automatically updated if any members are added or removed from this group."/>
40
+ </KeyboardView>);
41
+ };
42
+ function FormContent({ group, title, setTitle, groupMemberships }) {
43
+ const styles = useStyles();
44
+ const currentPerson = useCurrentPerson();
45
+ const { name, membershipsCount } = group;
46
+ const myGroupsMembership = useMemo(() => groupMemberships.data.find(m => m.id === currentPerson.id), [groupMemberships.data, currentPerson.id]);
47
+ const isLeader = myGroupsMembership?.role === 'leader';
48
+ const childMembers = groupMemberships.childMembers;
49
+ const hasChildren = childMembers.length > 0;
50
+ const adultCount = groupMemberships.adultMembers.length;
51
+ const memberCount = isLeader ? membershipsCount : adultCount;
52
+ const memberHeaderLabel = `${pluralize(memberCount, 'member')} selected`;
53
+ const showMemberError = groupMemberships.isError;
54
+ const showChildNotice = hasChildren && isLeader;
55
+ return (<View style={styles.formContent}>
56
+ <View style={styles.toSection}>
57
+ <Heading variant="h3">To:</Heading>
58
+ <Text style={styles.groupName}>{name}</Text>
59
+ </View>
60
+ <Divider />
61
+ <View style={styles.titleSection}>
62
+ <Heading variant="h3">Title</Heading>
63
+ <TextInput placeholder="Topic of conversation (required)" value={title} onChangeText={setTitle} style={styles.titleInput} autoFocus={true}/>
64
+ </View>
65
+ <Divider />
66
+ <View style={styles.memberSection}>
67
+ <Heading variant="h3">{memberHeaderLabel}</Heading>
68
+ {showChildNotice && <ChildNotice childMembers={childMembers} style={styles.banner}/>}
69
+ {showMemberError && (<Banner appearance="error" description="There was an issue loading group members, please refresh and try again." style={styles.banner}/>)}
75
70
  </View>
76
- <ActionButton title="Start Conversation" onPress={() => handleSave()}/>
77
71
  </View>);
78
- };
72
+ }
79
73
  const useStyles = () => {
80
- const { bottom } = useSafeAreaInsets();
81
- const theme = useTheme();
74
+ const { colors } = useTheme();
75
+ const sectionPadding = 16;
76
+ const inputPadding = 8;
82
77
  return StyleSheet.create({
83
- container: {
78
+ formContent: {
79
+ paddingVertical: sectionPadding,
84
80
  flex: 1,
85
- gap: 8,
86
81
  },
87
- section: {
88
- padding: 16,
89
- flex: 1,
90
- },
91
- sectionHeader: {
82
+ toSection: {
83
+ padding: sectionPadding,
92
84
  flexDirection: 'row',
93
- justifyContent: 'space-between',
85
+ gap: 8,
94
86
  },
95
- selectTeamsButton: {},
96
- routeDebug: {
97
- alignContent: 'center',
98
- padding: 16,
99
- paddingBottom: bottom,
100
- borderTopWidth: 1,
101
- borderTopColor: theme.colors.fillColorNeutral050Base,
87
+ groupName: {
88
+ fontSize: 18,
102
89
  },
103
- titleContainer: {
104
- paddingVertical: 12,
105
- borderBottomWidth: 1,
106
- borderBottomColor: theme.colors.fillColorNeutral050Base,
107
- gap: 8,
90
+ titleSection: {
91
+ padding: sectionPadding,
92
+ paddingBottom: Platform.select({
93
+ ios: sectionPadding,
94
+ android: sectionPadding - inputPadding,
95
+ }),
96
+ gap: Platform.select({
97
+ ios: 8,
98
+ android: 0,
99
+ }),
108
100
  },
109
101
  titleInput: {
110
102
  fontSize: 18,
103
+ color: colors.textColorDefaultPrimary,
111
104
  },
112
- titleLabel: {},
113
- to: {
114
- flexDirection: 'row',
115
- gap: 8,
116
- paddingVertical: 12,
117
- borderBottomWidth: 1,
118
- borderBottomColor: theme.colors.fillColorNeutral050Base,
105
+ memberSection: {
106
+ padding: sectionPadding,
107
+ paddingBottom: 0,
108
+ },
109
+ banner: {
110
+ marginTop: 16,
119
111
  },
120
112
  });
121
113
  };
@@ -1 +1 @@
1
- {"version":3,"file":"groups_form.js","sourceRoot":"","sources":["../../../../src/screens/conversation_new/components/groups_form.tsx"],"names":[],"mappings":"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","sourcesContent":["import { StackActions, useNavigation } from '@react-navigation/native'\nimport React, { useCallback, useState } from 'react'\nimport { StyleSheet, TextInput, View } from 'react-native'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\nimport { Text } from '../../../components'\nimport { ActionButton } from '../../../components/display/action_button'\nimport { useSuspenseGet, useTheme } from '../../../hooks'\nimport { useApiClient } from '../../../hooks/use_api_client'\nimport { useMutation } from '@tanstack/react-query'\nimport {\n ApiResource,\n ConversationResource,\n GroupsGroupResource,\n ResourceObject,\n} from '../../../types'\n\ntype GroupsFormProps = {\n groupId?: string\n}\n\ninterface ChatConversationPayload extends ResourceObject {\n value: string\n}\n\nexport const GroupsForm = ({ groupId }: GroupsFormProps) => {\n const styles = useStyles()\n const navigation = useNavigation()\n const [title, setTitle] = useState<string>()\n const apiClient = useApiClient()\n const { data: group } = useSuspenseGet<GroupsGroupResource>({\n url: `/me/groups/${groupId}`,\n data: {\n fields: {\n Group: [],\n },\n },\n app: 'groups',\n })\n const { mutate: handleSave } = useMutation({\n throwOnError: true,\n onSuccess: result => {\n handleRedirectToConversation({ conversation_id: result.data.id })\n },\n mutationFn: () =>\n apiClient.groups\n .post<ApiResource<ChatConversationPayload>>({\n url: `/me/groups/${groupId}/chat_conversation_payload`,\n data: {\n data: {\n type: '',\n attributes: {\n title,\n },\n },\n },\n })\n .then(res => res.data.value)\n .then(payload =>\n apiClient.chat.post<ApiResource<ConversationResource>>({\n url: '/me/conversations',\n data: {\n data: {\n type: 'Conversation',\n attributes: {\n payload,\n },\n },\n },\n })\n ),\n })\n\n const handleRedirectToConversation = useCallback(\n ({ conversation_id }: { conversation_id: number }) => {\n // exit from the create stack\n navigation.getParent()?.goBack()\n // navigate to the conversation screen\n navigation.dispatch(\n StackActions.push('Conversation', {\n conversation_id,\n })\n )\n },\n [navigation]\n )\n\n return (\n <View style={styles.container}>\n <View style={styles.section}>\n <View style={styles.to}>\n <Text>To:</Text>\n <View>\n <Text>{group.name}</Text>\n <Text>{group.membershipsCount} members</Text>\n </View>\n </View>\n <View style={styles.titleContainer}>\n <Text style={styles.titleLabel}>Title</Text>\n <TextInput\n placeholder=\"Topic of conversation (required)\"\n value={title}\n onChangeText={setTitle}\n style={styles.titleInput}\n />\n </View>\n </View>\n <ActionButton title=\"Start Conversation\" onPress={() => handleSave()} />\n </View>\n )\n}\n\nconst useStyles = () => {\n const { bottom } = useSafeAreaInsets()\n const theme = useTheme()\n\n return StyleSheet.create({\n container: {\n flex: 1,\n gap: 8,\n },\n section: {\n padding: 16,\n flex: 1,\n },\n sectionHeader: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n selectTeamsButton: {},\n routeDebug: {\n alignContent: 'center',\n padding: 16,\n paddingBottom: bottom,\n borderTopWidth: 1,\n borderTopColor: theme.colors.fillColorNeutral050Base,\n },\n titleContainer: {\n paddingVertical: 12,\n borderBottomWidth: 1,\n borderBottomColor: theme.colors.fillColorNeutral050Base,\n gap: 8,\n },\n titleInput: {\n fontSize: 18,\n },\n titleLabel: {},\n to: {\n flexDirection: 'row',\n gap: 8,\n paddingVertical: 12,\n borderBottomWidth: 1,\n borderBottomColor: theme.colors.fillColorNeutral050Base,\n },\n })\n}\n"]}
1
+ {"version":3,"file":"groups_form.js","sourceRoot":"","sources":["../../../../src/screens/conversation_new/components/groups_form.tsx"],"names":[],"mappings":"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","sourcesContent":["import { StackActions, useNavigation } from '@react-navigation/native'\nimport React, { useCallback, useMemo, useState } from 'react'\nimport { Platform, StyleSheet, TextInput, View } from 'react-native'\nimport { Banner, ChildNotice, Heading, Text } from '../../../components'\nimport { ActionButton } from '../../../components/display/action_button'\nimport { KeyboardView } from '../../../components/display/keyboard_view'\nimport { useCurrentPerson, useSuspenseGet, useTheme } from '../../../hooks'\nimport {\n GroupMembersForNewConversationResult,\n useGroupMembersForNewConversation,\n} from '../../../hooks/groups/use_group_members_for_new_conversation'\nimport { useGroupsConversationCreate } from '../../../hooks/groups/use_groups_conversation_create'\nimport { GroupsGroupResource } from '../../../types'\nimport { GraphId } from '../../../types/resources/group_resource'\nimport { pluralize } from '../../../utils'\nimport { Divider, FormList } from './form_list'\n\ntype GroupsFormProps = {\n groupId: number\n chat_group_graph_id?: GraphId\n}\n\nexport const GroupsForm = ({ groupId, chat_group_graph_id }: GroupsFormProps) => {\n const navigation = useNavigation()\n const [title, setTitle] = useState<string>()\n const { data: group } = useSuspenseGet<GroupsGroupResource>({\n url: `/me/groups/${groupId}`,\n data: {\n fields: {\n Group: [],\n },\n },\n app: 'groups',\n })\n\n const groupMemberships = useGroupMembersForNewConversation({ id: groupId })\n\n const redirectToConversation = useCallback(\n (conversationId: number) => {\n // navigate to the conversation screen\n navigation.dispatch(\n StackActions.popTo('Conversation', {\n conversation_id: conversationId,\n chat_group_graph_id,\n })\n )\n },\n [chat_group_graph_id, navigation]\n )\n\n const { mutate: handleSave } = useGroupsConversationCreate({\n groupId,\n title,\n onSuccess: redirectToConversation,\n })\n\n return (\n <KeyboardView>\n <FormList\n memberData={groupMemberships.adultMembers}\n FormContent={\n <FormContent\n group={group}\n title={title}\n setTitle={setTitle}\n groupMemberships={groupMemberships}\n />\n }\n />\n <ActionButton\n disabled={!title}\n title=\"Start Conversation\"\n onPress={() => handleSave()}\n infoText=\"Conversation will be automatically updated if any members are added or removed from this group.\"\n />\n </KeyboardView>\n )\n}\n\ninterface FormContentProps {\n group: GroupsGroupResource\n title?: string\n setTitle: (title: string) => void\n groupMemberships: GroupMembersForNewConversationResult\n}\n\nfunction FormContent({ group, title, setTitle, groupMemberships }: FormContentProps) {\n const styles = useStyles()\n const currentPerson = useCurrentPerson()\n const { name, membershipsCount } = group\n\n const myGroupsMembership = useMemo(\n () => groupMemberships.data.find(m => m.id === currentPerson.id),\n [groupMemberships.data, currentPerson.id]\n )\n const isLeader = myGroupsMembership?.role === 'leader'\n\n const childMembers = groupMemberships.childMembers\n const hasChildren = childMembers.length > 0\n const adultCount = groupMemberships.adultMembers.length\n const memberCount = isLeader ? membershipsCount : adultCount\n const memberHeaderLabel = `${pluralize(memberCount, 'member')} selected`\n\n const showMemberError = groupMemberships.isError\n const showChildNotice = hasChildren && isLeader\n\n return (\n <View style={styles.formContent}>\n <View style={styles.toSection}>\n <Heading variant=\"h3\">To:</Heading>\n <Text style={styles.groupName}>{name}</Text>\n </View>\n <Divider />\n <View style={styles.titleSection}>\n <Heading variant=\"h3\">Title</Heading>\n <TextInput\n placeholder=\"Topic of conversation (required)\"\n value={title}\n onChangeText={setTitle}\n style={styles.titleInput}\n autoFocus={true}\n />\n </View>\n <Divider />\n <View style={styles.memberSection}>\n <Heading variant=\"h3\">{memberHeaderLabel}</Heading>\n {showChildNotice && <ChildNotice childMembers={childMembers} style={styles.banner} />}\n {showMemberError && (\n <Banner\n appearance=\"error\"\n description=\"There was an issue loading group members, please refresh and try again.\"\n style={styles.banner}\n />\n )}\n </View>\n </View>\n )\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n const sectionPadding = 16\n const inputPadding = 8\n\n return StyleSheet.create({\n formContent: {\n paddingVertical: sectionPadding,\n flex: 1,\n },\n toSection: {\n padding: sectionPadding,\n flexDirection: 'row',\n gap: 8,\n },\n groupName: {\n fontSize: 18,\n },\n titleSection: {\n padding: sectionPadding,\n paddingBottom: Platform.select({\n ios: sectionPadding,\n android: sectionPadding - inputPadding,\n }),\n gap: Platform.select({\n ios: 8,\n android: 0,\n }),\n },\n titleInput: {\n fontSize: 18,\n color: colors.textColorDefaultPrimary,\n },\n memberSection: {\n padding: sectionPadding,\n paddingBottom: 0,\n },\n banner: {\n marginTop: 16,\n },\n })\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  type TeamFormProps = {
3
- initialTeamIds?: string[];
3
+ initialTeamIds?: number[];
4
4
  initialPlanId?: number;
5
5
  };
6
6
  export declare const TeamsForm: ({ initialTeamIds, initialPlanId }: TeamFormProps) => React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"team_form.js","sourceRoot":"","sources":["../../../../src/screens/conversation_new/components/team_form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAO1C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,cAAc,EAAE,aAAa,EAAiB,EAAE,EAAE;IAC5E,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAA;IAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,CAAA;IAC3C,OAAO,CACL,CAAC,IAAI,CACH;MAAA,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAC5C;IAAA,EAAE,IAAI,CAAC,CACR,CAAA;AACH,CAAC,CAAA","sourcesContent":["import React from 'react'\nimport { View } from 'react-native'\nimport { Text } from '../../../components'\n\ntype TeamFormProps = {\n initialTeamIds?: string[]\n initialPlanId?: number\n}\n\nexport const TeamsForm = ({ initialTeamIds, initialPlanId }: TeamFormProps) => {\n console.log('initialTeamIds', initialTeamIds)\n console.log('initialPlanId', initialPlanId)\n return (\n <View>\n <Text>Services team form coming soon</Text>\n </View>\n )\n}\n"]}
1
+ {"version":3,"file":"team_form.js","sourceRoot":"","sources":["../../../../src/screens/conversation_new/components/team_form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAO1C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,cAAc,EAAE,aAAa,EAAiB,EAAE,EAAE;IAC5E,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAA;IAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,aAAa,CAAC,CAAA;IAC3C,OAAO,CACL,CAAC,IAAI,CACH;MAAA,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAC5C;IAAA,EAAE,IAAI,CAAC,CACR,CAAA;AACH,CAAC,CAAA","sourcesContent":["import React from 'react'\nimport { View } from 'react-native'\nimport { Text } from '../../../components'\n\ntype TeamFormProps = {\n initialTeamIds?: number[]\n initialPlanId?: number\n}\n\nexport const TeamsForm = ({ initialTeamIds, initialPlanId }: TeamFormProps) => {\n console.log('initialTeamIds', initialTeamIds)\n console.log('initialPlanId', initialPlanId)\n return (\n <View>\n <Text>Services team form coming soon</Text>\n </View>\n )\n}\n"]}
@@ -1,11 +1,14 @@
1
1
  import { StaticScreenProps } from '@react-navigation/native';
2
2
  import React from 'react';
3
3
  import { AppName } from '../../types/resources/app_name';
4
+ import { GraphId } from '../../types/resources/group_resource';
4
5
  type ConversationNewScreenProps = StaticScreenProps<{
5
- group_id?: string;
6
- team_ids?: string[];
6
+ group_id?: number;
7
+ team_ids?: number[];
7
8
  plan_id?: number;
8
9
  source_app_name: AppName;
10
+ chat_group_graph_id?: GraphId;
11
+ group_source_app_name?: AppName;
9
12
  }>;
10
13
  export declare const ConversationNewScreen: ({ route }: ConversationNewScreenProps) => React.JSX.Element;
11
14
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"conversation_new_screen.d.ts","sourceRoot":"","sources":["../../../src/screens/conversation_new/conversation_new_screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAExD,KAAK,0BAA0B,GAAG,iBAAiB,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,OAAO,CAAA;CACzB,CAAC,CAAA;AAEF,eAAO,MAAM,qBAAqB,cAAe,0BAA0B,sBAW1E,CAAA"}
1
+ {"version":3,"file":"conversation_new_screen.d.ts","sourceRoot":"","sources":["../../../src/screens/conversation_new/conversation_new_screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AAE9D,KAAK,0BAA0B,GAAG,iBAAiB,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,OAAO,CAAA;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAC,CAAA;AAEF,eAAO,MAAM,qBAAqB,cAAe,0BAA0B,sBAe1E,CAAA"}
@@ -3,10 +3,10 @@ import { GroupsForm } from './components/groups_form';
3
3
  import { TeamsForm } from './components/team_form';
4
4
  import { SourceAppErrorCard } from './components/source_app_error_card';
5
5
  export const ConversationNewScreen = ({ route }) => {
6
- const { group_id, team_ids, source_app_name, plan_id } = route.params;
6
+ const { group_id, team_ids, source_app_name, plan_id, chat_group_graph_id } = route.params;
7
7
  switch (source_app_name) {
8
8
  case 'Groups':
9
- return <GroupsForm groupId={group_id}/>;
9
+ return group_id ? (<GroupsForm groupId={group_id} chat_group_graph_id={chat_group_graph_id}/>) : (<SourceAppErrorCard />);
10
10
  case 'Services':
11
11
  return <TeamsForm initialTeamIds={team_ids} initialPlanId={plan_id}/>;
12
12
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"conversation_new_screen.js","sourceRoot":"","sources":["../../../src/screens/conversation_new/conversation_new_screen.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAUvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAE,KAAK,EAA8B,EAAE,EAAE;IAC7E,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,CAAA;IAErE,QAAQ,eAAe,EAAE,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAG,CAAA;QAC1C,KAAK,UAAU;YACb,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAG,CAAA;QACxE;YACE,OAAO,CAAC,kBAAkB,CAAC,AAAD,EAAG,CAAA;IACjC,CAAC;AACH,CAAC,CAAA","sourcesContent":["import { StaticScreenProps } from '@react-navigation/native'\nimport React from 'react'\nimport { GroupsForm } from './components/groups_form'\nimport { TeamsForm } from './components/team_form'\nimport { SourceAppErrorCard } from './components/source_app_error_card'\nimport { AppName } from '../../types/resources/app_name'\n\ntype ConversationNewScreenProps = StaticScreenProps<{\n group_id?: string\n team_ids?: string[]\n plan_id?: number\n source_app_name: AppName\n}>\n\nexport const ConversationNewScreen = ({ route }: ConversationNewScreenProps) => {\n const { group_id, team_ids, source_app_name, plan_id } = route.params\n\n switch (source_app_name) {\n case 'Groups':\n return <GroupsForm groupId={group_id} />\n case 'Services':\n return <TeamsForm initialTeamIds={team_ids} initialPlanId={plan_id} />\n default:\n return <SourceAppErrorCard />\n }\n}\n"]}
1
+ {"version":3,"file":"conversation_new_screen.js","sourceRoot":"","sources":["../../../src/screens/conversation_new/conversation_new_screen.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AAavE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAE,KAAK,EAA8B,EAAE,EAAE;IAC7E,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC,MAAM,CAAA;IAE1F,QAAQ,eAAe,EAAE,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC,CAAC,CAAC,CAChB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,mBAAmB,CAAC,CAAC,mBAAmB,CAAC,EAAG,CAC5E,CAAC,CAAC,CAAC,CACF,CAAC,kBAAkB,CAAC,AAAD,EAAG,CACvB,CAAA;QACH,KAAK,UAAU;YACb,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAG,CAAA;QACxE;YACE,OAAO,CAAC,kBAAkB,CAAC,AAAD,EAAG,CAAA;IACjC,CAAC;AACH,CAAC,CAAA","sourcesContent":["import { StaticScreenProps } from '@react-navigation/native'\nimport React from 'react'\nimport { GroupsForm } from './components/groups_form'\nimport { TeamsForm } from './components/team_form'\nimport { SourceAppErrorCard } from './components/source_app_error_card'\nimport { AppName } from '../../types/resources/app_name'\nimport { GraphId } from '../../types/resources/group_resource'\n\ntype ConversationNewScreenProps = StaticScreenProps<{\n group_id?: number\n team_ids?: number[]\n plan_id?: number\n source_app_name: AppName\n chat_group_graph_id?: GraphId\n group_source_app_name?: AppName\n}>\n\nexport const ConversationNewScreen = ({ route }: ConversationNewScreenProps) => {\n const { group_id, team_ids, source_app_name, plan_id, chat_group_graph_id } = route.params\n\n switch (source_app_name) {\n case 'Groups':\n return group_id ? (\n <GroupsForm groupId={group_id} chat_group_graph_id={chat_group_graph_id} />\n ) : (\n <SourceAppErrorCard />\n )\n case 'Services':\n return <TeamsForm initialTeamIds={team_ids} initialPlanId={plan_id} />\n default:\n return <SourceAppErrorCard />\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import { StaticScreenProps } from '@react-navigation/native';
2
2
  import React from 'react';
3
+ import { MessageResource } from '../types';
3
4
  type ConversationRouteProps = {
4
5
  conversation_id: number;
5
6
  chat_group_graph_id?: string;
@@ -7,5 +8,11 @@ type ConversationRouteProps = {
7
8
  };
8
9
  export type ConversationScreenProps = StaticScreenProps<ConversationRouteProps>;
9
10
  export declare function ConversationScreen({ route }: ConversationScreenProps): React.JSX.Element;
11
+ export type DateSeparator = {
12
+ type: 'DateSeparator';
13
+ id: string;
14
+ date: string;
15
+ };
16
+ export declare const groupMessages: (ms: MessageResource[]) => (MessageResource | DateSeparator)[];
10
17
  export {};
11
18
  //# sourceMappingURL=conversation_screen.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation_screen.d.ts","sourceRoot":"","sources":["../../src/screens/conversation_screen.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EAIlB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAiC,MAAM,OAAO,CAAA;AAUrD,KAAK,sBAAsB,GAAG;IAC5B,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,CAAA;AAE/E,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,uBAAuB,qBA0CpE"}
1
+ {"version":3,"file":"conversation_screen.d.ts","sourceRoot":"","sources":["../../src/screens/conversation_screen.tsx"],"names":[],"mappings":"AAGA,OAAO,EAGL,iBAAiB,EAIlB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,KAAiC,MAAM,OAAO,CAAA;AAUrD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG1C,KAAK,sBAAsB,GAAG;IAC5B,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,sBAAsB,CAAC,CAAA;AAE/E,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,uBAAuB,qBAkDpE;AAED,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAwC/E,eAAO,MAAM,aAAa,OAAQ,eAAe,EAAE,wCAkClD,CAAA"}