@planningcenter/chat-react-native 3.2.0-rc.9 → 3.3.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/group_conversation_list.d.ts +19 -0
  32. package/build/components/group_conversation_list.d.ts.map +1 -0
  33. package/build/components/group_conversation_list.js +48 -0
  34. package/build/components/group_conversation_list.js.map +1 -0
  35. package/build/components/index.d.ts +1 -0
  36. package/build/components/index.d.ts.map +1 -1
  37. package/build/components/index.js +1 -0
  38. package/build/components/index.js.map +1 -1
  39. package/build/components/primitive/banner_primitive.d.ts +3 -0
  40. package/build/components/primitive/banner_primitive.d.ts.map +1 -1
  41. package/build/components/primitive/banner_primitive.js +4 -4
  42. package/build/components/primitive/banner_primitive.js.map +1 -1
  43. package/build/contexts/api_provider.d.ts +1 -1
  44. package/build/contexts/api_provider.d.ts.map +1 -1
  45. package/build/contexts/api_provider.js +3 -3
  46. package/build/contexts/api_provider.js.map +1 -1
  47. package/build/contexts/chat_context.d.ts +4 -4
  48. package/build/contexts/chat_context.d.ts.map +1 -1
  49. package/build/contexts/chat_context.js +3 -3
  50. package/build/contexts/chat_context.js.map +1 -1
  51. package/build/contexts/conversations_context.js +1 -1
  52. package/build/contexts/conversations_context.js.map +1 -1
  53. package/build/hooks/attachments/supported_extensions.d.ts +2 -0
  54. package/build/hooks/attachments/supported_extensions.d.ts.map +1 -0
  55. package/build/hooks/attachments/supported_extensions.js +48 -0
  56. package/build/hooks/attachments/supported_extensions.js.map +1 -0
  57. package/build/hooks/groups/use_group_members_for_new_conversation.d.ts +235 -0
  58. package/build/hooks/groups/use_group_members_for_new_conversation.d.ts.map +1 -0
  59. package/build/hooks/groups/use_group_members_for_new_conversation.js +55 -0
  60. package/build/hooks/groups/use_group_members_for_new_conversation.js.map +1 -0
  61. package/build/hooks/groups/use_groups_conversation_create.d.ts +9 -0
  62. package/build/hooks/groups/use_groups_conversation_create.d.ts.map +1 -0
  63. package/build/hooks/groups/use_groups_conversation_create.js +36 -0
  64. package/build/hooks/groups/use_groups_conversation_create.js.map +1 -0
  65. package/build/hooks/index.d.ts +4 -0
  66. package/build/hooks/index.d.ts.map +1 -1
  67. package/build/hooks/index.js +4 -0
  68. package/build/hooks/index.js.map +1 -1
  69. package/build/hooks/use_api.d.ts +43 -43
  70. package/build/hooks/use_api.d.ts.map +1 -1
  71. package/build/hooks/use_api.js +5 -0
  72. package/build/hooks/use_api.js.map +1 -1
  73. package/build/hooks/use_api_client.d.ts.map +1 -1
  74. package/build/hooks/use_api_client.js +5 -3
  75. package/build/hooks/use_api_client.js.map +1 -1
  76. package/build/hooks/use_attachment_uploader.d.ts +26 -0
  77. package/build/hooks/use_attachment_uploader.d.ts.map +1 -0
  78. package/build/hooks/use_attachment_uploader.js +111 -0
  79. package/build/hooks/use_attachment_uploader.js.map +1 -0
  80. package/build/hooks/use_chat_permissions.d.ts +14 -14
  81. package/build/hooks/use_conversation.d.ts.map +1 -1
  82. package/build/hooks/use_conversation.js +1 -0
  83. package/build/hooks/use_conversation.js.map +1 -1
  84. package/build/hooks/use_conversations_actions.d.ts.map +1 -1
  85. package/build/hooks/use_conversations_actions.js +10 -0
  86. package/build/hooks/use_conversations_actions.js.map +1 -1
  87. package/build/hooks/use_conversations_jolt_events.d.ts.map +1 -1
  88. package/build/hooks/use_conversations_jolt_events.js +4 -1
  89. package/build/hooks/use_conversations_jolt_events.js.map +1 -1
  90. package/build/hooks/use_current_person.d.ts +15 -0
  91. package/build/hooks/use_current_person.d.ts.map +1 -1
  92. package/build/hooks/use_current_person.js +26 -9
  93. package/build/hooks/use_current_person.js.map +1 -1
  94. package/build/hooks/use_groups.d.ts +26 -26
  95. package/build/hooks/use_groups_groups.d.ts +26 -26
  96. package/build/hooks/use_jolt.d.ts.map +1 -1
  97. package/build/hooks/use_jolt.js +15 -22
  98. package/build/hooks/use_jolt.js.map +1 -1
  99. package/build/hooks/use_message_create.js +2 -2
  100. package/build/hooks/use_message_create.js.map +1 -1
  101. package/build/hooks/use_suspense_api.d.ts.map +1 -1
  102. package/build/hooks/use_suspense_api.js +5 -0
  103. package/build/hooks/use_suspense_api.js.map +1 -1
  104. package/build/hooks/use_teams.d.ts +26 -26
  105. package/build/hooks/use_upload_client.d.ts +28 -0
  106. package/build/hooks/use_upload_client.d.ts.map +1 -0
  107. package/build/hooks/use_upload_client.js +32 -0
  108. package/build/hooks/use_upload_client.js.map +1 -0
  109. package/build/index.d.ts +3 -2
  110. package/build/index.d.ts.map +1 -1
  111. package/build/index.js +3 -2
  112. package/build/index.js.map +1 -1
  113. package/build/navigation/index.d.ts +52 -34
  114. package/build/navigation/index.d.ts.map +1 -1
  115. package/build/navigation/index.js +16 -2
  116. package/build/navigation/index.js.map +1 -1
  117. package/build/screens/conversation_details_screen.js +2 -2
  118. package/build/screens/conversation_details_screen.js.map +1 -1
  119. package/build/screens/conversation_filter_recipients/components/checkbox_row.d.ts +10 -0
  120. package/build/screens/conversation_filter_recipients/components/checkbox_row.d.ts.map +1 -0
  121. package/build/screens/conversation_filter_recipients/components/checkbox_row.js +74 -0
  122. package/build/screens/conversation_filter_recipients/components/checkbox_row.js.map +1 -0
  123. package/build/screens/conversation_filter_recipients/components/header_row.d.ts +10 -0
  124. package/build/screens/conversation_filter_recipients/components/header_row.d.ts.map +1 -0
  125. package/build/screens/conversation_filter_recipients/components/header_row.js +69 -0
  126. package/build/screens/conversation_filter_recipients/components/header_row.js.map +1 -0
  127. package/build/screens/conversation_filter_recipients/components/navigation_header.d.ts +5 -0
  128. package/build/screens/conversation_filter_recipients/components/navigation_header.d.ts.map +1 -0
  129. package/build/screens/conversation_filter_recipients/components/navigation_header.js +46 -0
  130. package/build/screens/conversation_filter_recipients/components/navigation_header.js.map +1 -0
  131. package/build/screens/conversation_filter_recipients/context/conversation_filter_recipients_context.d.ts +17 -0
  132. package/build/screens/conversation_filter_recipients/context/conversation_filter_recipients_context.d.ts.map +1 -0
  133. package/build/screens/conversation_filter_recipients/context/conversation_filter_recipients_context.js +37 -0
  134. package/build/screens/conversation_filter_recipients/context/conversation_filter_recipients_context.js.map +1 -0
  135. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.d.ts +1 -3
  136. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.d.ts.map +1 -1
  137. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.js +67 -32
  138. package/build/screens/conversation_filter_recipients/conversation_filter_recipients_screen.js.map +1 -1
  139. package/build/screens/conversation_filter_recipients/hooks/use_flattened_array_of_service_types_with_teams.d.ts +10 -0
  140. package/build/screens/conversation_filter_recipients/hooks/use_flattened_array_of_service_types_with_teams.d.ts.map +1 -0
  141. package/build/screens/conversation_filter_recipients/hooks/use_flattened_array_of_service_types_with_teams.js +32 -0
  142. package/build/screens/conversation_filter_recipients/hooks/use_flattened_array_of_service_types_with_teams.js.map +1 -0
  143. package/build/screens/conversation_filter_recipients/hooks/use_service_types_with_teams.d.ts +8 -0
  144. package/build/screens/conversation_filter_recipients/hooks/use_service_types_with_teams.d.ts.map +1 -0
  145. package/build/screens/conversation_filter_recipients/hooks/use_service_types_with_teams.js +65 -0
  146. package/build/screens/conversation_filter_recipients/hooks/use_service_types_with_teams.js.map +1 -0
  147. package/build/screens/conversation_filter_recipients/types.d.ts +38 -0
  148. package/build/screens/conversation_filter_recipients/types.d.ts.map +1 -0
  149. package/build/screens/conversation_filter_recipients/types.js +6 -0
  150. package/build/screens/conversation_filter_recipients/types.js.map +1 -0
  151. package/build/screens/conversation_filters/components/conversation_filters.js +5 -2
  152. package/build/screens/conversation_filters/components/conversation_filters.js.map +1 -1
  153. package/build/screens/conversation_filters/components/rows.d.ts.map +1 -1
  154. package/build/screens/conversation_filters/components/rows.js +6 -1
  155. package/build/screens/conversation_filters/components/rows.js.map +1 -1
  156. package/build/screens/conversation_filters/group_filters.d.ts.map +1 -1
  157. package/build/screens/conversation_filters/group_filters.js +12 -4
  158. package/build/screens/conversation_filters/group_filters.js.map +1 -1
  159. package/build/screens/conversation_filters/hooks/filters.d.ts +40 -40
  160. package/build/screens/conversation_filters/hooks/filters.js +1 -1
  161. package/build/screens/conversation_filters/hooks/filters.js.map +1 -1
  162. package/build/screens/conversation_filters/team_filters.d.ts.map +1 -1
  163. package/build/screens/conversation_filters/team_filters.js +12 -4
  164. package/build/screens/conversation_filters/team_filters.js.map +1 -1
  165. package/build/screens/conversation_filters_screen.js +1 -0
  166. package/build/screens/conversation_filters_screen.js.map +1 -1
  167. package/build/screens/conversation_new/components/groups_form.d.ts +4 -2
  168. package/build/screens/conversation_new/components/groups_form.d.ts.map +1 -1
  169. package/build/screens/conversation_new/components/groups_form.js +40 -55
  170. package/build/screens/conversation_new/components/groups_form.js.map +1 -1
  171. package/build/screens/conversation_new/components/team_form.d.ts +1 -1
  172. package/build/screens/conversation_new/components/team_form.js.map +1 -1
  173. package/build/screens/conversation_new/conversation_new_screen.d.ts +5 -2
  174. package/build/screens/conversation_new/conversation_new_screen.d.ts.map +1 -1
  175. package/build/screens/conversation_new/conversation_new_screen.js +2 -2
  176. package/build/screens/conversation_new/conversation_new_screen.js.map +1 -1
  177. package/build/screens/conversation_screen.d.ts +7 -0
  178. package/build/screens/conversation_screen.d.ts.map +1 -1
  179. package/build/screens/conversation_screen.js +103 -4
  180. package/build/screens/conversation_screen.js.map +1 -1
  181. package/build/screens/conversation_select_recipients/components/groups_without_chat_disclaimer_row.d.ts +2 -0
  182. package/build/screens/conversation_select_recipients/components/groups_without_chat_disclaimer_row.d.ts.map +1 -0
  183. package/build/screens/conversation_select_recipients/components/groups_without_chat_disclaimer_row.js +17 -0
  184. package/build/screens/conversation_select_recipients/components/groups_without_chat_disclaimer_row.js.map +1 -0
  185. package/build/screens/conversation_select_recipients/components/recipient_link_row.d.ts +12 -0
  186. package/build/screens/conversation_select_recipients/components/recipient_link_row.d.ts.map +1 -0
  187. package/build/screens/conversation_select_recipients/components/recipient_link_row.js +61 -0
  188. package/build/screens/conversation_select_recipients/components/recipient_link_row.js.map +1 -0
  189. package/build/screens/conversation_select_recipients/components/view_more_link_row.d.ts +7 -0
  190. package/build/screens/conversation_select_recipients/components/view_more_link_row.d.ts.map +1 -0
  191. package/build/screens/conversation_select_recipients/components/view_more_link_row.js +21 -0
  192. package/build/screens/conversation_select_recipients/components/view_more_link_row.js.map +1 -0
  193. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.d.ts +4 -0
  194. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.d.ts.map +1 -0
  195. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.js +48 -0
  196. package/build/screens/conversation_select_recipients/conversation_select_group_recipients_screen.js.map +1 -0
  197. package/build/screens/conversation_select_recipients/conversation_select_recipients_screen.d.ts +2 -6
  198. package/build/screens/conversation_select_recipients/conversation_select_recipients_screen.d.ts.map +1 -1
  199. package/build/screens/conversation_select_recipients/conversation_select_recipients_screen.js +37 -49
  200. package/build/screens/conversation_select_recipients/conversation_select_recipients_screen.js.map +1 -1
  201. package/build/screens/conversation_select_recipients/types/screen_props.d.ts +9 -0
  202. package/build/screens/conversation_select_recipients/types/screen_props.d.ts.map +1 -0
  203. package/build/screens/conversation_select_recipients/types/screen_props.js +2 -0
  204. package/build/screens/conversation_select_recipients/types/screen_props.js.map +1 -0
  205. package/build/screens/conversations/components/list_header_component.d.ts.map +1 -1
  206. package/build/screens/conversations/components/list_header_component.js +18 -4
  207. package/build/screens/conversations/components/list_header_component.js.map +1 -1
  208. package/build/screens/conversations/conversations_screen.d.ts +2 -1
  209. package/build/screens/conversations/conversations_screen.d.ts.map +1 -1
  210. package/build/screens/conversations/conversations_screen.js +32 -1
  211. package/build/screens/conversations/conversations_screen.js.map +1 -1
  212. package/build/screens/send_giphy_screen.js +29 -1
  213. package/build/screens/send_giphy_screen.js.map +1 -1
  214. package/build/types/resources/groups/groups_group_resource.d.ts +1 -1
  215. package/build/types/resources/groups/groups_group_resource.js.map +1 -1
  216. package/build/types/resources/groups/groups_member_resource_with_person.d.ts +14 -0
  217. package/build/types/resources/groups/groups_member_resource_with_person.d.ts.map +1 -0
  218. package/build/types/resources/groups/groups_member_resource_with_person.js +2 -0
  219. package/build/types/resources/groups/groups_member_resource_with_person.js.map +1 -0
  220. package/build/types/resources/member.d.ts +0 -10
  221. package/build/types/resources/member.d.ts.map +1 -1
  222. package/build/types/resources/member.js.map +1 -1
  223. package/build/types/resources/message.d.ts +2 -0
  224. package/build/types/resources/message.d.ts.map +1 -1
  225. package/build/types/resources/message.js.map +1 -1
  226. package/build/types/resources/oauth_token.d.ts +4 -4
  227. package/build/types/resources/oauth_token.d.ts.map +1 -1
  228. package/build/types/resources/oauth_token.js.map +1 -1
  229. package/build/utils/client/client.d.ts +4 -8
  230. package/build/utils/client/client.d.ts.map +1 -1
  231. package/build/utils/client/client.js +10 -9
  232. package/build/utils/client/client.js.map +1 -1
  233. package/build/utils/date.d.ts +5 -0
  234. package/build/utils/date.d.ts.map +1 -1
  235. package/build/utils/date.js +8 -1
  236. package/build/utils/date.js.map +1 -1
  237. package/build/utils/destructure_chat_group_graph_id.d.ts +10 -0
  238. package/build/utils/destructure_chat_group_graph_id.d.ts.map +1 -0
  239. package/build/utils/destructure_chat_group_graph_id.js +8 -0
  240. package/build/utils/destructure_chat_group_graph_id.js.map +1 -0
  241. package/build/utils/index.d.ts +1 -0
  242. package/build/utils/index.d.ts.map +1 -1
  243. package/build/utils/index.js +1 -0
  244. package/build/utils/index.js.map +1 -1
  245. package/build/utils/native_adapters/configuration.d.ts +4 -1
  246. package/build/utils/native_adapters/configuration.d.ts.map +1 -1
  247. package/build/utils/native_adapters/configuration.js +13 -1
  248. package/build/utils/native_adapters/configuration.js.map +1 -1
  249. package/build/utils/native_adapters/image_picker.d.ts +25 -0
  250. package/build/utils/native_adapters/image_picker.d.ts.map +1 -0
  251. package/build/utils/native_adapters/image_picker.js +9 -0
  252. package/build/utils/native_adapters/image_picker.js.map +1 -0
  253. package/build/utils/native_adapters/index.d.ts +1 -0
  254. package/build/utils/native_adapters/index.d.ts.map +1 -1
  255. package/build/utils/native_adapters/index.js +1 -0
  256. package/build/utils/native_adapters/index.js.map +1 -1
  257. package/build/utils/session.d.ts +6 -2
  258. package/build/utils/session.d.ts.map +1 -1
  259. package/build/utils/session.js +6 -1
  260. package/build/utils/session.js.map +1 -1
  261. package/build/utils/upload_uri.d.ts +23 -0
  262. package/build/utils/upload_uri.d.ts.map +1 -0
  263. package/build/utils/upload_uri.js +60 -0
  264. package/build/utils/upload_uri.js.map +1 -0
  265. package/build/utils/uri.d.ts +10 -2
  266. package/build/utils/uri.d.ts.map +1 -1
  267. package/build/utils/uri.js +24 -6
  268. package/build/utils/uri.js.map +1 -1
  269. package/build/vendor/tapestry/alias_tokens_color_map.d.ts +2 -0
  270. package/build/vendor/tapestry/alias_tokens_color_map.d.ts.map +1 -1
  271. package/build/vendor/tapestry/alias_tokens_color_map.js +2 -0
  272. package/build/vendor/tapestry/alias_tokens_color_map.js.map +1 -1
  273. package/package.json +4 -3
  274. package/src/__tests__/hooks/useTheme.tsx +1 -1
  275. package/src/__tests__/{client.ts → utils/client.ts} +7 -115
  276. package/src/__tests__/{session.ts → utils/session.ts} +4 -4
  277. package/src/__tests__/utils/uri.ts +107 -0
  278. package/src/components/conversation/message_form/message_form_attachment_image.tsx +121 -0
  279. package/src/components/conversation/message_form.tsx +197 -31
  280. package/src/components/conversations/conversation_actions.tsx +2 -2
  281. package/src/components/conversations/conversation_preview.tsx +8 -2
  282. package/src/components/display/action_button.tsx +4 -3
  283. package/src/components/display/banner.tsx +7 -1
  284. package/src/components/display/banner_collapsible.tsx +6 -1
  285. package/src/components/display/child_notice.tsx +9 -3
  286. package/src/components/group_conversation_list.tsx +82 -0
  287. package/src/components/index.tsx +1 -0
  288. package/src/components/primitive/banner_primitive.tsx +12 -5
  289. package/src/contexts/api_provider.tsx +3 -3
  290. package/src/contexts/chat_context.tsx +7 -7
  291. package/src/contexts/conversations_context.tsx +1 -1
  292. package/src/hooks/attachments/supported_extensions.ts +47 -0
  293. package/src/hooks/groups/use_group_members_for_new_conversation.ts +74 -0
  294. package/src/hooks/groups/use_groups_conversation_create.ts +50 -0
  295. package/src/hooks/index.ts +4 -0
  296. package/src/hooks/use_api.ts +13 -7
  297. package/src/hooks/use_api_client.ts +7 -3
  298. package/src/hooks/use_attachment_uploader.ts +179 -0
  299. package/src/hooks/use_conversation.ts +1 -0
  300. package/src/hooks/use_conversations_actions.ts +11 -0
  301. package/src/hooks/use_conversations_jolt_events.ts +5 -1
  302. package/src/hooks/use_current_person.ts +37 -9
  303. package/src/hooks/use_jolt.ts +18 -23
  304. package/src/hooks/use_message_create.ts +2 -2
  305. package/src/hooks/use_suspense_api.ts +6 -0
  306. package/src/hooks/use_upload_client.ts +67 -0
  307. package/src/index.tsx +3 -1
  308. package/src/navigation/index.tsx +23 -2
  309. package/src/screens/conversation_details_screen.tsx +2 -2
  310. package/src/screens/conversation_filter_recipients/components/checkbox_row.tsx +101 -0
  311. package/src/screens/conversation_filter_recipients/components/header_row.tsx +99 -0
  312. package/src/screens/conversation_filter_recipients/components/navigation_header.tsx +68 -0
  313. package/src/screens/conversation_filter_recipients/context/conversation_filter_recipients_context.tsx +53 -0
  314. package/src/screens/conversation_filter_recipients/conversation_filter_recipients_screen.tsx +90 -49
  315. package/src/screens/conversation_filter_recipients/hooks/use_flattened_array_of_service_types_with_teams.tsx +50 -0
  316. package/src/screens/conversation_filter_recipients/hooks/use_service_types_with_teams.ts +90 -0
  317. package/src/screens/conversation_filter_recipients/types.tsx +47 -0
  318. package/src/screens/conversation_filters/components/conversation_filters.tsx +5 -2
  319. package/src/screens/conversation_filters/components/rows.tsx +6 -1
  320. package/src/screens/conversation_filters/group_filters.tsx +23 -14
  321. package/src/screens/conversation_filters/hooks/filters.ts +1 -1
  322. package/src/screens/conversation_filters/team_filters.tsx +23 -14
  323. package/src/screens/conversation_filters_screen.tsx +1 -0
  324. package/src/screens/conversation_new/components/groups_form.tsx +66 -72
  325. package/src/screens/conversation_new/components/team_form.tsx +1 -1
  326. package/src/screens/conversation_new/conversation_new_screen.tsx +11 -4
  327. package/src/screens/conversation_screen.tsx +123 -4
  328. package/src/screens/conversation_select_recipients/components/groups_without_chat_disclaimer_row.tsx +21 -0
  329. package/src/screens/conversation_select_recipients/components/recipient_link_row.tsx +91 -0
  330. package/src/screens/conversation_select_recipients/components/view_more_link_row.tsx +30 -0
  331. package/src/screens/conversation_select_recipients/conversation_select_group_recipients_screen.tsx +79 -0
  332. package/src/screens/conversation_select_recipients/conversation_select_recipients_screen.tsx +57 -65
  333. package/src/screens/conversation_select_recipients/types/screen_props.tsx +11 -0
  334. package/src/screens/conversations/components/list_header_component.tsx +20 -4
  335. package/src/screens/conversations/conversations_screen.tsx +37 -2
  336. package/src/screens/send_giphy_screen.tsx +30 -1
  337. package/src/types/resources/groups/groups_group_resource.ts +1 -1
  338. package/src/types/resources/groups/groups_member_resource_with_person.ts +13 -0
  339. package/src/types/resources/member.ts +0 -11
  340. package/src/types/resources/message.ts +2 -0
  341. package/src/types/resources/oauth_token.ts +4 -4
  342. package/src/utils/client/client.ts +13 -13
  343. package/src/utils/date.ts +11 -1
  344. package/src/utils/destructure_chat_group_graph_id.ts +25 -0
  345. package/src/utils/index.ts +1 -0
  346. package/src/utils/native_adapters/configuration.ts +15 -1
  347. package/src/utils/native_adapters/image_picker.ts +31 -0
  348. package/src/utils/native_adapters/index.ts +1 -0
  349. package/src/utils/session.ts +10 -4
  350. package/src/utils/upload_uri.ts +69 -0
  351. package/src/utils/uri.ts +30 -6
  352. package/src/vendor/tapestry/alias_tokens_color_map.ts +3 -0
  353. package/build/screens/conversation_new/components/member_error_card.d.ts +0 -5
  354. package/build/screens/conversation_new/components/member_error_card.d.ts.map +0 -1
  355. package/build/screens/conversation_new/components/member_error_card.js +0 -17
  356. package/build/screens/conversation_new/components/member_error_card.js.map +0 -1
  357. package/build/screens/conversation_new/utils/fake_member_data.d.ts +0 -3
  358. package/build/screens/conversation_new/utils/fake_member_data.d.ts.map +0 -1
  359. package/build/screens/conversation_new/utils/fake_member_data.js +0 -129
  360. package/build/screens/conversation_new/utils/fake_member_data.js.map +0 -1
  361. package/src/screens/conversation_new/components/member_error_card.tsx +0 -20
  362. package/src/screens/conversation_new/utils/fake_member_data.ts +0 -130
@@ -6,12 +6,14 @@ import { ActionButton } from '../../components/display/action_button'
6
6
  import { ConversationsContextProvider } from '../../contexts/conversations_context'
7
7
  import { useCanCreateConversations } from '../../hooks'
8
8
  import { GraphId } from '../../types/resources/group_resource'
9
+ import { destructureChatGroupGraphId } from '../../utils'
9
10
  import { ListHeaderComponent } from './components/list_header_component'
11
+ import { AppName } from '../../types/resources/app_name'
10
12
 
11
13
  export type ConversationScreenProps = StaticScreenProps<{
12
14
  title?: string
13
15
  chat_group_graph_id?: GraphId
14
- group_source_app_name?: string
16
+ group_source_app_name?: AppName
15
17
  }>
16
18
 
17
19
  export function ConversationsScreen({ route }: ConversationScreenProps) {
@@ -19,6 +21,39 @@ export function ConversationsScreen({ route }: ConversationScreenProps) {
19
21
  const canCreateConversations = useCanCreateConversations()
20
22
  const styles = useStyles()
21
23
 
24
+ const { chat_group_graph_id } = route.params || {}
25
+ const { sourceAppName, sourceId } = destructureChatGroupGraphId(chat_group_graph_id)
26
+
27
+ const handleNewConversationNavigation = () => {
28
+ if (sourceAppName === 'Services') {
29
+ return navigation.navigate('New', {
30
+ screen: 'ConversationNew',
31
+ params: {
32
+ team_ids: sourceId ? [sourceId] : [],
33
+ source_app_name: sourceAppName,
34
+ ...route.params,
35
+ },
36
+ })
37
+ }
38
+ if (sourceAppName === 'Groups') {
39
+ return navigation.navigate('New', {
40
+ screen: 'ConversationNew',
41
+ params: {
42
+ group_id: sourceId,
43
+ source_app_name: sourceAppName,
44
+ ...route.params,
45
+ },
46
+ })
47
+ }
48
+
49
+ return navigation.navigate('New', {
50
+ screen: 'ConversationSelectRecipients',
51
+ params: {
52
+ ...route.params,
53
+ },
54
+ })
55
+ }
56
+
22
57
  return (
23
58
  <View style={styles.container}>
24
59
  <ConversationsContextProvider args={route.params}>
@@ -27,7 +62,7 @@ export function ConversationsScreen({ route }: ConversationScreenProps) {
27
62
  <ActionButton
28
63
  visible={canCreateConversations}
29
64
  title="New conversation"
30
- onPress={() => navigation.navigate('New')}
65
+ onPress={handleNewConversationNavigation}
31
66
  />
32
67
  </View>
33
68
  )
@@ -68,7 +68,7 @@ export function SendGiphyScreen({ route }: SendGiphyScreenProps) {
68
68
  <NativeImage
69
69
  alt="Powered by Giphy"
70
70
  style={styles.powered_by_giphy}
71
- source={require('../../assets/images/powered_by_giphy.png')}
71
+ source={{ uri: poweredByGiphyImage }}
72
72
  />
73
73
  <View style={styles.control_stack}>
74
74
  <View style={styles.button_group}>
@@ -153,3 +153,32 @@ const useStyles = () => {
153
153
  },
154
154
  })
155
155
  }
156
+
157
+ const poweredByGiphyImage = `data:image/png;base64,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`
@@ -1,7 +1,7 @@
1
1
  import { ResourceObject } from '../../api_primitives'
2
2
 
3
3
  export interface GroupsGroupResource extends ResourceObject {
4
- id: string
4
+ id: number
5
5
  type: 'Group'
6
6
  headerImage: {
7
7
  thumbnail: string
@@ -0,0 +1,13 @@
1
+ export interface GroupsGroupMemberResource {
2
+ type: 'Member'
3
+ id: number
4
+ role?: string
5
+ person: {
6
+ firstName: string
7
+ lastName: string
8
+ avatarUrl: string
9
+ child: boolean
10
+ id: number
11
+ type: 'Person'
12
+ }
13
+ }
@@ -8,17 +8,6 @@ export interface MemberResource {
8
8
  role?: string
9
9
  }
10
10
 
11
- export interface MemberResourceWithPerson extends MemberResource {
12
- person: {
13
- firstName: string
14
- lastName: string
15
- avatarUrl: string
16
- child: boolean
17
- id: string
18
- type: 'Person'
19
- }
20
- }
21
-
22
11
  export interface MemberBadge {
23
12
  title: string
24
13
  }
@@ -18,4 +18,6 @@ export interface MessageResource {
18
18
  // Custom Local Properties we set for rendering
19
19
  renderAuthor?: boolean
20
20
  renderTime?: boolean
21
+ myLatestInConversation?: boolean
22
+ lastInGroup?: boolean
21
23
  }
@@ -1,8 +1,8 @@
1
1
  export type OAuthToken = {
2
- token_type: any
3
- access_token: any
2
+ token_type: string
3
+ access_token: string
4
4
  created_at: number
5
- expires_in: any
5
+ expires_in: number
6
6
  scope: string
7
- refresh_token: any
7
+ refresh_token: string
8
8
  }
@@ -1,6 +1,4 @@
1
1
  import { ApiCollection, ApiError, ApiResource } from '../../types'
2
- import { Session } from '../session'
3
- import { Uri } from '../uri'
4
2
  import {
5
3
  concatRecords,
6
4
  ensureNoQueryParamsInDev,
@@ -22,28 +20,27 @@ type ClientArgs = {
22
20
  version: string
23
21
  defaultHeaders?: Record<string, string>
24
22
  onUnauthorizedResponse?: OnUnauthorizedResponse
25
- session: Session
26
- app: string
23
+ root?: string
27
24
  }
28
25
 
29
26
  export class Client {
30
27
  version: string = ''
31
28
  defaultHeaders: Record<string, string> = {}
32
- uri: Uri
33
29
  onUnauthorizedResponse?: OnUnauthorizedResponse
30
+ root?: string
34
31
 
35
- constructor({ version, defaultHeaders = {}, session, app, onUnauthorizedResponse }: ClientArgs) {
32
+ constructor({ version, defaultHeaders = {}, onUnauthorizedResponse, root }: ClientArgs) {
36
33
  this.version = version
37
- this.uri = new Uri({ session, app })
38
34
  this.defaultHeaders = defaultHeaders
39
35
  this.onUnauthorizedResponse = onUnauthorizedResponse
36
+ this.root = root
40
37
  }
41
38
 
42
39
  async get<T extends ApiCollection | ApiResource>(args: GetRequest): Promise<T> {
43
40
  const { walk, ...data } = args.data
44
41
  const isWalking = Boolean(walk)
45
42
  const headers = { ...this.headers, ...args.headers }
46
- const url = this.uri.appUrl(args.url)
43
+ const url = this.appUrl(args.url)
47
44
 
48
45
  await throwErrorIfQueryParams(url)
49
46
 
@@ -54,7 +51,7 @@ export class Client {
54
51
  data: d = { fields: {} },
55
52
  acc = { data: [], included: [], meta: {}, links: {} },
56
53
  ...options
57
- }: WalkRequest): Promise<ApiCollection | ApiResource> => {
54
+ }: WalkRequest): Promise<T> => {
58
55
  return makeRequest({
59
56
  action: 'GET',
60
57
  data: d,
@@ -84,7 +81,7 @@ export class Client {
84
81
 
85
82
  async patch<T extends ApiCollection | ApiResource>(args: PatchRequest): Promise<T> {
86
83
  const headers = { ...this.headers, ...args.headers }
87
- const url = this.uri.appUrl(args.url)
84
+ const url = this.appUrl(args.url)
88
85
 
89
86
  const requestArgs: MakeRequestArgs = { data: args.data, url, action: 'PATCH', headers }
90
87
 
@@ -95,7 +92,7 @@ export class Client {
95
92
 
96
93
  async post<T extends ApiCollection | ApiResource>(args: PostRequest): Promise<T> {
97
94
  const headers = { ...this.headers, ...args.headers }
98
- const url = this.uri.appUrl(args.url)
95
+ const url = this.appUrl(args.url)
99
96
 
100
97
  const requestArgs: MakeRequestArgs = { ...args, data: args.data, url, action: 'POST', headers }
101
98
 
@@ -106,7 +103,7 @@ export class Client {
106
103
 
107
104
  async delete(args: DeleteRequest) {
108
105
  const headers = { ...this.headers, ...args.headers }
109
- const url = this.uri.appUrl(args.url)
106
+ const url = this.appUrl(args.url)
110
107
 
111
108
  const requestArgs: MakeRequestArgs = { url, action: 'DELETE', headers }
112
109
 
@@ -133,12 +130,15 @@ export class Client {
133
130
  }
134
131
  }
135
132
 
133
+ appUrl(url: string) {
134
+ return `${this.root}${url}`
135
+ }
136
+
136
137
  get headers() {
137
138
  return {
138
139
  Accept: 'application/vnd.api+json',
139
140
  'Content-Type': 'application/json',
140
141
  'X-PCO-API-Version': this.version,
141
- ...this.uri.headers,
142
142
  ...this.defaultHeaders,
143
143
  }
144
144
  }
package/src/utils/date.ts CHANGED
@@ -1,4 +1,4 @@
1
- // @ts-ignore
1
+ // @ts-expect-error
2
2
  import { date as formatDate } from '@planningcenter/datetime-fmt'
3
3
  import moment from 'moment-timezone'
4
4
 
@@ -24,3 +24,13 @@ const formatShorterDate = (date: DateProps) => {
24
24
  // Drop the century from the year
25
25
  return formatDate(date, { style: 'short', year: true }).replace(/20(\d{2})/, '$1')
26
26
  }
27
+
28
+ export function getRelativeDateStatus(date: DateProps) {
29
+ const now = moment()
30
+
31
+ const isToday = now.isSame(date, 'day')
32
+ const isThisWeek = now.isSame(date, 'week')
33
+ const isThisYear = now.isSame(date, 'year')
34
+
35
+ return { isToday, isThisWeek, isThisYear }
36
+ }
@@ -0,0 +1,25 @@
1
+ import { AppName } from '../types/resources/app_name'
2
+ import { SourceType, GraphId } from '../types/resources/group_resource'
3
+
4
+ interface DestructuredChatGroupGraphIdType {
5
+ sourceAppName?: AppName
6
+ sourceType?: SourceType
7
+ sourceId?: number
8
+ }
9
+
10
+ export function destructureChatGroupGraphId(
11
+ chatGroupGraphId?: GraphId
12
+ ): DestructuredChatGroupGraphIdType {
13
+ if (!chatGroupGraphId)
14
+ return { sourceAppName: undefined, sourceType: undefined, sourceId: undefined }
15
+
16
+ const [sourceAppName, sourceType, sourceIdString] = chatGroupGraphId.split('-') as [
17
+ AppName,
18
+ SourceType,
19
+ string,
20
+ ]
21
+
22
+ const sourceIdNumber = Number(sourceIdString)
23
+
24
+ return { sourceAppName, sourceType, sourceId: sourceIdNumber }
25
+ }
@@ -7,3 +7,4 @@ export * from './uri'
7
7
  export * from './cache'
8
8
  export * from './native_adapters'
9
9
  export * from './pluralize'
10
+ export * from './destructure_chat_group_graph_id'
@@ -1,11 +1,13 @@
1
1
  import { AudioAdapter } from './audio'
2
2
  import { ClipboardAdapter } from './clipboard'
3
+ import { ImagePickerAdapter } from './image_picker'
3
4
  import { VideoAdapter } from './video'
4
5
 
5
6
  type ChatConfigurations = {
6
7
  clipboard: ClipboardAdapter
7
8
  audio: AudioAdapter
8
9
  video: VideoAdapter
10
+ imagePicker: ImagePickerAdapter
9
11
  }
10
12
 
11
13
  export class ChatAdapters {
@@ -13,6 +15,7 @@ export class ChatAdapters {
13
15
  Clipboard = configurations.clipboard
14
16
  Audio = configurations.audio
15
17
  Video = configurations.video
18
+ ImagePicker = configurations.imagePicker
16
19
  }
17
20
  }
18
21
 
@@ -45,4 +48,15 @@ let Video: VideoAdapter = new VideoAdapter({
45
48
  ),
46
49
  })
47
50
 
48
- export { Clipboard, Audio, Video }
51
+ let ImagePicker: ImagePickerAdapter = new ImagePickerAdapter({
52
+ openCameraAsync: async () => {
53
+ methodMissing()
54
+ return { canceled: true, assets: null }
55
+ },
56
+ openImageLibraryAsync: async () => {
57
+ methodMissing()
58
+ return { canceled: true, assets: null }
59
+ },
60
+ })
61
+
62
+ export { Clipboard, Audio, Video, ImagePicker }
@@ -0,0 +1,31 @@
1
+ export type ImagePickerAsset = {
2
+ uri: string
3
+ assetId?: string | null
4
+ width: number
5
+ height: number
6
+ mimeType?: string
7
+ fileName?: string | null
8
+ fileSize?: number
9
+ }
10
+
11
+ type ImagePickerSuccessResult = {
12
+ canceled: false
13
+ assets: ImagePickerAsset[]
14
+ }
15
+
16
+ type ImagePickerCanceledResult = {
17
+ canceled: true
18
+ assets: null
19
+ }
20
+
21
+ export type ImagePickerResult = ImagePickerSuccessResult | ImagePickerCanceledResult
22
+
23
+ export class ImagePickerAdapter {
24
+ openCameraAsync: () => Promise<ImagePickerResult>
25
+ openImageLibraryAsync: () => Promise<ImagePickerResult>
26
+
27
+ constructor(methods: ImagePickerAdapter) {
28
+ this.openCameraAsync = methods.openCameraAsync
29
+ this.openImageLibraryAsync = methods.openImageLibraryAsync
30
+ }
31
+ }
@@ -1,4 +1,5 @@
1
1
  export * from './clipboard'
2
2
  export * from './configuration'
3
3
  export * from './audio'
4
+ export * from './image_picker'
4
5
  export * from './video'
@@ -1,28 +1,34 @@
1
1
  import { OAuthToken } from '../types'
2
2
 
3
3
  export type ENV = 'production' | 'staging' | 'development'
4
-
4
+ export type OauthType = 'OAuth' | 'ChurchCenterOauth'
5
5
  export type PartialToken = Pick<OAuthToken, 'access_token'> & Partial<OAuthToken>
6
- export type SessionProps<T = PartialToken> = { env?: ENV; token?: T }
6
+ export type SessionProps<T extends PartialToken> = { env?: ENV; token?: T; type?: OauthType }
7
7
 
8
8
  /**
9
9
  * Session class to track the environment and token
10
10
  * Not intended to make network requests or handle authentication
11
11
  */
12
- export class Session<T = PartialToken> {
12
+ export class Session<T extends PartialToken = PartialToken> {
13
13
  env: ENV
14
14
  token: T | undefined
15
+ type: OauthType
15
16
 
16
17
  constructor(props?: SessionProps<T>) {
17
- const { env = 'production', token } = props || {}
18
+ const { env = 'production', token, type } = props || {}
18
19
  this.env = env
19
20
  this.token = token
21
+ this.type = type || 'OAuth'
20
22
  }
21
23
 
22
24
  get isAuthenticated() {
23
25
  return Boolean(this.token)
24
26
  }
25
27
 
28
+ get isChurchCenterToken() {
29
+ return this.type === 'ChurchCenterOauth'
30
+ }
31
+
26
32
  toString() {
27
33
  return JSON.stringify({ env: this.env, token: this.token })
28
34
  }
@@ -0,0 +1,69 @@
1
+ import DeviceInfo from 'react-native-device-info'
2
+ import { Session } from './session'
3
+ const brand = DeviceInfo.getBrand()
4
+ const model = DeviceInfo.getModel()
5
+ const systemName = DeviceInfo.getSystemName()
6
+ const systemVersion = DeviceInfo.getSystemVersion()
7
+ const readableVersion = DeviceInfo.getReadableVersion()
8
+ const appName = DeviceInfo.getApplicationName()
9
+
10
+ /**
11
+ * This is for accessing https://github.com/planningcenter/upload
12
+ */
13
+ export class UploadUri {
14
+ session: Session
15
+ app?: string
16
+
17
+ constructor({ session }: { session: Session }) {
18
+ this.session = session
19
+ }
20
+
21
+ get schema() {
22
+ if (this.env === 'development') {
23
+ return 'http'
24
+ } else {
25
+ return 'https'
26
+ }
27
+ }
28
+
29
+ get host() {
30
+ return `${this.subdomain}.${this.domain}.${this.tld}`
31
+ }
32
+
33
+ get subdomain() {
34
+ switch (this.env) {
35
+ case 'staging':
36
+ return 'upload-staging'
37
+ default:
38
+ return 'upload'
39
+ }
40
+ }
41
+
42
+ get domain(): 'pco' | 'planningcenteronline' {
43
+ return this.env === 'development' ? 'pco' : 'planningcenteronline'
44
+ }
45
+
46
+ get tld() {
47
+ switch (this.env) {
48
+ case 'development':
49
+ return 'test'
50
+ default:
51
+ return 'com'
52
+ }
53
+ }
54
+
55
+ get env() {
56
+ return this.session?.env || 'production'
57
+ }
58
+
59
+ get baseUrl() {
60
+ return `${this.schema}://${this.host}`
61
+ }
62
+
63
+ get headers() {
64
+ return {
65
+ 'User-Agent': `${appName}/${readableVersion} (${brand}, ${model}, ${systemName}, ${systemVersion})`,
66
+ Authorization: `Bearer ${this.session.token?.access_token}`,
67
+ }
68
+ }
69
+ }
package/src/utils/uri.ts CHANGED
@@ -7,13 +7,16 @@ const systemVersion = DeviceInfo.getSystemVersion()
7
7
  const readableVersion = DeviceInfo.getReadableVersion()
8
8
  const appName = DeviceInfo.getApplicationName()
9
9
 
10
+ type Graph = 'churchcenter' | 'planningcenter'
10
11
  export class Uri {
11
12
  session: Session
13
+ graph: Graph = 'planningcenter'
12
14
  app?: string
13
15
 
14
- constructor({ session, app }: { session: Session; app?: string }) {
16
+ constructor({ session, app, graph }: { session: Session; app?: string; graph?: Graph }) {
15
17
  this.session = session
16
18
  this.app = app
19
+ this.graph = graph || 'planningcenter'
17
20
  }
18
21
 
19
22
  get schema() {
@@ -25,18 +28,39 @@ export class Uri {
25
28
  }
26
29
 
27
30
  get host() {
31
+ return `${this.subdomain}.${this.domain}.${this.tld}`
32
+ }
33
+
34
+ get subdomain() {
28
35
  switch (this.env) {
29
- case 'production':
30
- return 'api.planningcenteronline.com'
31
36
  case 'staging':
32
- return 'api-staging.planningcenteronline.com'
37
+ return this.isChurchCenter ? 'api.staging' : 'api-staging'
38
+ default:
39
+ return 'api'
40
+ }
41
+ }
42
+
43
+ get domain(): 'pco' | 'planningcenteronline' | 'churchcenter' {
44
+ if (this.isChurchCenter) {
45
+ return 'churchcenter'
46
+ }
47
+
48
+ return this.env === 'development' ? 'pco' : 'planningcenteronline'
49
+ }
50
+
51
+ get tld() {
52
+ switch (this.env) {
33
53
  case 'development':
34
- return 'api.pco.test'
54
+ return 'test'
35
55
  default:
36
- return 'api.planningcenteronline.com'
56
+ return 'com'
37
57
  }
38
58
  }
39
59
 
60
+ get isChurchCenter() {
61
+ return this.session.isChurchCenterToken
62
+ }
63
+
40
64
  get env() {
41
65
  return this.session?.env || 'production'
42
66
  }
@@ -77,6 +77,7 @@ interface SemanticAliasesColors {
77
77
  surfaceColorCanvas: string
78
78
  surfaceColor100: string
79
79
  surfaceColor090: string
80
+ surfaceColor080: string
80
81
  needsDesignPass: string
81
82
  }
82
83
 
@@ -108,6 +109,7 @@ const semanticAliasesLight: SemanticAliasesColors = {
108
109
  surfaceColorCanvas: neutralsLight.fillColorNeutral090,
109
110
  surfaceColor100: neutralsLight.fillColorNeutral100Inverted,
110
111
  surfaceColor090: neutralsLight.fillColorNeutral090,
112
+ surfaceColor080: neutralsLight.fillColorNeutral080,
111
113
  needsDesignPass: 'hotpink',
112
114
  } as const
113
115
 
@@ -139,6 +141,7 @@ const semanticAliasesDark: SemanticAliasesColors = {
139
141
  surfaceColorCanvas: neutralsDark.fillColorNeutral090,
140
142
  surfaceColor100: neutralsDark.fillColorNeutral100Inverted,
141
143
  surfaceColor090: neutralsDark.fillColorNeutral090,
144
+ surfaceColor080: neutralsDark.fillColorNeutral080,
142
145
  needsDesignPass: 'pink',
143
146
  }
144
147
 
@@ -1,5 +0,0 @@
1
- import React from 'react';
2
- export declare const MemberErrorCard: ({ description }: {
3
- description: string;
4
- }) => React.JSX.Element;
5
- //# sourceMappingURL=member_error_card.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"member_error_card.d.ts","sourceRoot":"","sources":["../../../../src/screens/conversation_new/components/member_error_card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,eAAO,MAAM,eAAe,oBAAqB;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,sBAOvE,CAAA"}
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
- import { View, StyleSheet } from 'react-native';
3
- import { Banner } from '../../../components';
4
- export const MemberErrorCard = ({ description }) => {
5
- const styles = useStyles();
6
- return (<View style={styles.memberErrorBanner}>
7
- <Banner appearance="error" description={description}/>
8
- </View>);
9
- };
10
- const useStyles = () => {
11
- return StyleSheet.create({
12
- memberErrorBanner: {
13
- paddingTop: 16,
14
- },
15
- });
16
- };
17
- //# sourceMappingURL=member_error_card.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"member_error_card.js","sourceRoot":"","sources":["../../../../src/screens/conversation_new/components/member_error_card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,WAAW,EAA2B,EAAE,EAAE;IAC1E,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CACpC;MAAA,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,EACtD;IAAA,EAAE,IAAI,CAAC,CACR,CAAA;AACH,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,OAAO,UAAU,CAAC,MAAM,CAAC;QACvB,iBAAiB,EAAE;YACjB,UAAU,EAAE,EAAE;SACf;KACF,CAAC,CAAA;AACJ,CAAC,CAAA","sourcesContent":["import React from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport { Banner } from '../../../components'\n\nexport const MemberErrorCard = ({ description }: { description: string }) => {\n const styles = useStyles()\n return (\n <View style={styles.memberErrorBanner}>\n <Banner appearance=\"error\" description={description} />\n </View>\n )\n}\n\nconst useStyles = () => {\n return StyleSheet.create({\n memberErrorBanner: {\n paddingTop: 16,\n },\n })\n}\n"]}
@@ -1,3 +0,0 @@
1
- import { MemberResource } from '../../../types';
2
- export declare const FAKE_MEMBER_DATA: MemberResource[];
3
- //# sourceMappingURL=fake_member_data.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fake_member_data.d.ts","sourceRoot":"","sources":["../../../../src/screens/conversation_new/utils/fake_member_data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,eAAO,MAAM,gBAAgB,EAAE,cAAc,EA+H5C,CAAA"}