@sendbird/uikit-react-native 1.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (570) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +410 -0
  3. package/lib/commonjs/InternalErrorBoundary.js +84 -0
  4. package/lib/commonjs/InternalErrorBoundary.js.map +1 -0
  5. package/lib/commonjs/InternalLocalCacheStorage.js +59 -0
  6. package/lib/commonjs/InternalLocalCacheStorage.js.map +1 -0
  7. package/lib/commonjs/SendbirdUIKitContainer.js +166 -0
  8. package/lib/commonjs/SendbirdUIKitContainer.js.map +1 -0
  9. package/lib/commonjs/components/ChannelCover.js +59 -0
  10. package/lib/commonjs/components/ChannelCover.js.map +1 -0
  11. package/lib/commonjs/components/ChatFlatList.js +118 -0
  12. package/lib/commonjs/components/ChatFlatList.js.map +1 -0
  13. package/lib/commonjs/components/MessageRenderer/AdminMessage/index.js +52 -0
  14. package/lib/commonjs/components/MessageRenderer/AdminMessage/index.js.map +1 -0
  15. package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js +76 -0
  16. package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +1 -0
  17. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js +61 -0
  18. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -0
  19. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js +31 -0
  20. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js.map +1 -0
  21. package/lib/commonjs/components/MessageRenderer/MessageContainer.js +33 -0
  22. package/lib/commonjs/components/MessageRenderer/MessageContainer.js.map +1 -0
  23. package/lib/commonjs/components/MessageRenderer/MessageDateSeparator.js +58 -0
  24. package/lib/commonjs/components/MessageRenderer/MessageDateSeparator.js.map +1 -0
  25. package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js +42 -0
  26. package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js.map +1 -0
  27. package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js +48 -0
  28. package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js.map +1 -0
  29. package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js +134 -0
  30. package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js.map +1 -0
  31. package/lib/commonjs/components/MessageRenderer/MessageTime.js +41 -0
  32. package/lib/commonjs/components/MessageRenderer/MessageTime.js.map +1 -0
  33. package/lib/commonjs/components/MessageRenderer/UnknownMessage/index.js +53 -0
  34. package/lib/commonjs/components/MessageRenderer/UnknownMessage/index.js.map +1 -0
  35. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js +54 -0
  36. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -0
  37. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +131 -0
  38. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -0
  39. package/lib/commonjs/components/MessageRenderer/UserMessage/index.js +31 -0
  40. package/lib/commonjs/components/MessageRenderer/UserMessage/index.js.map +1 -0
  41. package/lib/commonjs/components/MessageRenderer/index.js +189 -0
  42. package/lib/commonjs/components/MessageRenderer/index.js.map +1 -0
  43. package/lib/commonjs/components/NewMessagesButton.js +73 -0
  44. package/lib/commonjs/components/NewMessagesButton.js.map +1 -0
  45. package/lib/commonjs/components/ProviderLayout.js +37 -0
  46. package/lib/commonjs/components/ProviderLayout.js.map +1 -0
  47. package/lib/commonjs/components/ScrollToBottomButton.js +66 -0
  48. package/lib/commonjs/components/ScrollToBottomButton.js.map +1 -0
  49. package/lib/commonjs/components/StatusComposition.js +27 -0
  50. package/lib/commonjs/components/StatusComposition.js.map +1 -0
  51. package/lib/commonjs/components/TypedPlaceholder.js +80 -0
  52. package/lib/commonjs/components/TypedPlaceholder.js.map +1 -0
  53. package/lib/commonjs/components/UserActionBar.js +96 -0
  54. package/lib/commonjs/components/UserActionBar.js.map +1 -0
  55. package/lib/commonjs/components/UserSelectableBar.js +78 -0
  56. package/lib/commonjs/components/UserSelectableBar.js.map +1 -0
  57. package/lib/commonjs/constants.js +9 -0
  58. package/lib/commonjs/constants.js.map +1 -0
  59. package/lib/commonjs/contexts/Localization.js +29 -0
  60. package/lib/commonjs/contexts/Localization.js.map +1 -0
  61. package/lib/commonjs/contexts/PlatformService.js +33 -0
  62. package/lib/commonjs/contexts/PlatformService.js.map +1 -0
  63. package/lib/commonjs/contexts/SendbirdChat.js +87 -0
  64. package/lib/commonjs/contexts/SendbirdChat.js.map +1 -0
  65. package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js +88 -0
  66. package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js.map +1 -0
  67. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/EditInput.js +118 -0
  68. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/EditInput.js.map +1 -0
  69. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js +148 -0
  70. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -0
  71. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js +115 -0
  72. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -0
  73. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +343 -0
  74. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -0
  75. package/lib/commonjs/domain/groupChannel/component/GroupChannelStatusEmpty.js +34 -0
  76. package/lib/commonjs/domain/groupChannel/component/GroupChannelStatusEmpty.js.map +1 -0
  77. package/lib/commonjs/domain/groupChannel/component/GroupChannelStatusLoading.js +34 -0
  78. package/lib/commonjs/domain/groupChannel/component/GroupChannelStatusLoading.js.map +1 -0
  79. package/lib/commonjs/domain/groupChannel/index.js +70 -0
  80. package/lib/commonjs/domain/groupChannel/index.js.map +1 -0
  81. package/lib/commonjs/domain/groupChannel/module/createGroupChannelModule.js +45 -0
  82. package/lib/commonjs/domain/groupChannel/module/createGroupChannelModule.js.map +1 -0
  83. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +79 -0
  84. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -0
  85. package/lib/commonjs/domain/groupChannel/types.js +6 -0
  86. package/lib/commonjs/domain/groupChannel/types.js.map +1 -0
  87. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListHeader.js +38 -0
  88. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListHeader.js.map +1 -0
  89. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js +96 -0
  90. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js.map +1 -0
  91. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListStatusEmpty.js +34 -0
  92. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListStatusEmpty.js.map +1 -0
  93. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListStatusLoading.js +34 -0
  94. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListStatusLoading.js.map +1 -0
  95. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListTypeSelector.js +141 -0
  96. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -0
  97. package/lib/commonjs/domain/groupChannelList/index.js +70 -0
  98. package/lib/commonjs/domain/groupChannelList/index.js.map +1 -0
  99. package/lib/commonjs/domain/groupChannelList/module/createGroupChannelListModule.js +45 -0
  100. package/lib/commonjs/domain/groupChannelList/module/createGroupChannelListModule.js.map +1 -0
  101. package/lib/commonjs/domain/groupChannelList/module/moduleContext.js +61 -0
  102. package/lib/commonjs/domain/groupChannelList/module/moduleContext.js.map +1 -0
  103. package/lib/commonjs/domain/groupChannelList/types.js +6 -0
  104. package/lib/commonjs/domain/groupChannelList/types.js.map +1 -0
  105. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsHeader.js +49 -0
  106. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsHeader.js.map +1 -0
  107. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +77 -0
  108. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -0
  109. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +94 -0
  110. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -0
  111. package/lib/commonjs/domain/groupChannelSettings/index.js +54 -0
  112. package/lib/commonjs/domain/groupChannelSettings/index.js.map +1 -0
  113. package/lib/commonjs/domain/groupChannelSettings/module/createGroupChannelSettingsModule.js +37 -0
  114. package/lib/commonjs/domain/groupChannelSettings/module/createGroupChannelSettingsModule.js.map +1 -0
  115. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js +150 -0
  116. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -0
  117. package/lib/commonjs/domain/groupChannelSettings/types.js +6 -0
  118. package/lib/commonjs/domain/groupChannelSettings/types.js.map +1 -0
  119. package/lib/commonjs/domain/groupChannelUserList/types.js +6 -0
  120. package/lib/commonjs/domain/groupChannelUserList/types.js.map +1 -0
  121. package/lib/commonjs/domain/userList/component/UserListHeader.js +56 -0
  122. package/lib/commonjs/domain/userList/component/UserListHeader.js.map +1 -0
  123. package/lib/commonjs/domain/userList/component/UserListList.js +57 -0
  124. package/lib/commonjs/domain/userList/component/UserListList.js.map +1 -0
  125. package/lib/commonjs/domain/userList/component/UserListStatusEmpty.js +34 -0
  126. package/lib/commonjs/domain/userList/component/UserListStatusEmpty.js.map +1 -0
  127. package/lib/commonjs/domain/userList/component/UserListStatusError.js +38 -0
  128. package/lib/commonjs/domain/userList/component/UserListStatusError.js.map +1 -0
  129. package/lib/commonjs/domain/userList/component/UserListStatusLoading.js +34 -0
  130. package/lib/commonjs/domain/userList/component/UserListStatusLoading.js.map +1 -0
  131. package/lib/commonjs/domain/userList/index.js +70 -0
  132. package/lib/commonjs/domain/userList/index.js.map +1 -0
  133. package/lib/commonjs/domain/userList/module/createUserListModule.js +45 -0
  134. package/lib/commonjs/domain/userList/module/createUserListModule.js.map +1 -0
  135. package/lib/commonjs/domain/userList/module/moduleContext.js +54 -0
  136. package/lib/commonjs/domain/userList/module/moduleContext.js.map +1 -0
  137. package/lib/commonjs/domain/userList/types.js +6 -0
  138. package/lib/commonjs/domain/userList/types.js.map +1 -0
  139. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js +145 -0
  140. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js.map +1 -0
  141. package/lib/commonjs/fragments/createGroupChannelFragment.js +154 -0
  142. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -0
  143. package/lib/commonjs/fragments/createGroupChannelInviteFragment.js +139 -0
  144. package/lib/commonjs/fragments/createGroupChannelInviteFragment.js.map +1 -0
  145. package/lib/commonjs/fragments/createGroupChannelListFragment.js +141 -0
  146. package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -0
  147. package/lib/commonjs/fragments/createGroupChannelMembersFragment.js +134 -0
  148. package/lib/commonjs/fragments/createGroupChannelMembersFragment.js.map +1 -0
  149. package/lib/commonjs/fragments/createGroupChannelSettingsFragment.js +67 -0
  150. package/lib/commonjs/fragments/createGroupChannelSettingsFragment.js.map +1 -0
  151. package/lib/commonjs/hooks/useConnection.js +102 -0
  152. package/lib/commonjs/hooks/useConnection.js.map +1 -0
  153. package/lib/commonjs/hooks/useContext.js +39 -0
  154. package/lib/commonjs/hooks/useContext.js.map +1 -0
  155. package/lib/commonjs/hooks/usePushTokenRegistration.js +83 -0
  156. package/lib/commonjs/hooks/usePushTokenRegistration.js.map +1 -0
  157. package/lib/commonjs/index.js +449 -0
  158. package/lib/commonjs/index.js.map +1 -0
  159. package/lib/commonjs/localization/StringSet.en.js +19 -0
  160. package/lib/commonjs/localization/StringSet.en.js.map +1 -0
  161. package/lib/commonjs/localization/StringSet.type.js +178 -0
  162. package/lib/commonjs/localization/StringSet.type.js.map +1 -0
  163. package/lib/commonjs/platform/createClipboardService.expo.js +23 -0
  164. package/lib/commonjs/platform/createClipboardService.expo.js.map +1 -0
  165. package/lib/commonjs/platform/createClipboardService.native.js +23 -0
  166. package/lib/commonjs/platform/createClipboardService.native.js.map +1 -0
  167. package/lib/commonjs/platform/createFileService.expo.js +176 -0
  168. package/lib/commonjs/platform/createFileService.expo.js.map +1 -0
  169. package/lib/commonjs/platform/createFileService.native.js +253 -0
  170. package/lib/commonjs/platform/createFileService.native.js.map +1 -0
  171. package/lib/commonjs/platform/createNotificationService.expo.js +50 -0
  172. package/lib/commonjs/platform/createNotificationService.expo.js.map +1 -0
  173. package/lib/commonjs/platform/createNotificationService.native.js +65 -0
  174. package/lib/commonjs/platform/createNotificationService.native.js.map +1 -0
  175. package/lib/commonjs/platform/dynamicModule.js +114 -0
  176. package/lib/commonjs/platform/dynamicModule.js.map +1 -0
  177. package/lib/commonjs/platform/types.js +2 -0
  178. package/lib/commonjs/platform/types.js.map +1 -0
  179. package/lib/commonjs/types.js +6 -0
  180. package/lib/commonjs/types.js.map +1 -0
  181. package/lib/commonjs/utils/expoPermissionGranted.js +32 -0
  182. package/lib/commonjs/utils/expoPermissionGranted.js.map +1 -0
  183. package/lib/commonjs/utils/fileTypeGuard.js +26 -0
  184. package/lib/commonjs/utils/fileTypeGuard.js.map +1 -0
  185. package/lib/commonjs/utils/nativePermissionGranted.js +23 -0
  186. package/lib/commonjs/utils/nativePermissionGranted.js.map +1 -0
  187. package/lib/commonjs/version.js +10 -0
  188. package/lib/commonjs/version.js.map +1 -0
  189. package/lib/module/InternalErrorBoundary.js +72 -0
  190. package/lib/module/InternalErrorBoundary.js.map +1 -0
  191. package/lib/module/InternalLocalCacheStorage.js +50 -0
  192. package/lib/module/InternalLocalCacheStorage.js.map +1 -0
  193. package/lib/module/SendbirdUIKitContainer.js +136 -0
  194. package/lib/module/SendbirdUIKitContainer.js.map +1 -0
  195. package/lib/module/components/ChannelCover.js +46 -0
  196. package/lib/module/components/ChannelCover.js.map +1 -0
  197. package/lib/module/components/ChatFlatList.js +102 -0
  198. package/lib/module/components/ChatFlatList.js.map +1 -0
  199. package/lib/module/components/MessageRenderer/AdminMessage/index.js +40 -0
  200. package/lib/module/components/MessageRenderer/AdminMessage/index.js.map +1 -0
  201. package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js +62 -0
  202. package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +1 -0
  203. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js +47 -0
  204. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -0
  205. package/lib/module/components/MessageRenderer/FileMessage/index.js +17 -0
  206. package/lib/module/components/MessageRenderer/FileMessage/index.js.map +1 -0
  207. package/lib/module/components/MessageRenderer/MessageContainer.js +21 -0
  208. package/lib/module/components/MessageRenderer/MessageContainer.js.map +1 -0
  209. package/lib/module/components/MessageRenderer/MessageDateSeparator.js +44 -0
  210. package/lib/module/components/MessageRenderer/MessageDateSeparator.js.map +1 -0
  211. package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js +30 -0
  212. package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js.map +1 -0
  213. package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js +35 -0
  214. package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js.map +1 -0
  215. package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js +116 -0
  216. package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js.map +1 -0
  217. package/lib/module/components/MessageRenderer/MessageTime.js +28 -0
  218. package/lib/module/components/MessageRenderer/MessageTime.js.map +1 -0
  219. package/lib/module/components/MessageRenderer/UnknownMessage/index.js +40 -0
  220. package/lib/module/components/MessageRenderer/UnknownMessage/index.js.map +1 -0
  221. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js +41 -0
  222. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -0
  223. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +115 -0
  224. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -0
  225. package/lib/module/components/MessageRenderer/UserMessage/index.js +18 -0
  226. package/lib/module/components/MessageRenderer/UserMessage/index.js.map +1 -0
  227. package/lib/module/components/MessageRenderer/index.js +163 -0
  228. package/lib/module/components/MessageRenderer/index.js.map +1 -0
  229. package/lib/module/components/NewMessagesButton.js +58 -0
  230. package/lib/module/components/NewMessagesButton.js.map +1 -0
  231. package/lib/module/components/ProviderLayout.js +25 -0
  232. package/lib/module/components/ProviderLayout.js.map +1 -0
  233. package/lib/module/components/ScrollToBottomButton.js +52 -0
  234. package/lib/module/components/ScrollToBottomButton.js.map +1 -0
  235. package/lib/module/components/StatusComposition.js +17 -0
  236. package/lib/module/components/StatusComposition.js.map +1 -0
  237. package/lib/module/components/TypedPlaceholder.js +68 -0
  238. package/lib/module/components/TypedPlaceholder.js.map +1 -0
  239. package/lib/module/components/UserActionBar.js +81 -0
  240. package/lib/module/components/UserActionBar.js.map +1 -0
  241. package/lib/module/components/UserSelectableBar.js +63 -0
  242. package/lib/module/components/UserSelectableBar.js.map +1 -0
  243. package/lib/module/constants.js +2 -0
  244. package/lib/module/constants.js.map +1 -0
  245. package/lib/module/contexts/Localization.js +14 -0
  246. package/lib/module/contexts/Localization.js.map +1 -0
  247. package/lib/module/contexts/PlatformService.js +18 -0
  248. package/lib/module/contexts/PlatformService.js.map +1 -0
  249. package/lib/module/contexts/SendbirdChat.js +66 -0
  250. package/lib/module/contexts/SendbirdChat.js.map +1 -0
  251. package/lib/module/domain/groupChannel/component/GroupChannelHeader.js +69 -0
  252. package/lib/module/domain/groupChannel/component/GroupChannelHeader.js.map +1 -0
  253. package/lib/module/domain/groupChannel/component/GroupChannelInput/EditInput.js +102 -0
  254. package/lib/module/domain/groupChannel/component/GroupChannelInput/EditInput.js.map +1 -0
  255. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js +134 -0
  256. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -0
  257. package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js +92 -0
  258. package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -0
  259. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +317 -0
  260. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -0
  261. package/lib/module/domain/groupChannel/component/GroupChannelStatusEmpty.js +21 -0
  262. package/lib/module/domain/groupChannel/component/GroupChannelStatusEmpty.js.map +1 -0
  263. package/lib/module/domain/groupChannel/component/GroupChannelStatusLoading.js +21 -0
  264. package/lib/module/domain/groupChannel/component/GroupChannelStatusLoading.js.map +1 -0
  265. package/lib/module/domain/groupChannel/index.js +8 -0
  266. package/lib/module/domain/groupChannel/index.js.map +1 -0
  267. package/lib/module/domain/groupChannel/module/createGroupChannelModule.js +30 -0
  268. package/lib/module/domain/groupChannel/module/createGroupChannelModule.js.map +1 -0
  269. package/lib/module/domain/groupChannel/module/moduleContext.js +57 -0
  270. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -0
  271. package/lib/module/domain/groupChannel/types.js +2 -0
  272. package/lib/module/domain/groupChannel/types.js.map +1 -0
  273. package/lib/module/domain/groupChannelList/component/GroupChannelListHeader.js +24 -0
  274. package/lib/module/domain/groupChannelList/component/GroupChannelListHeader.js.map +1 -0
  275. package/lib/module/domain/groupChannelList/component/GroupChannelListList.js +79 -0
  276. package/lib/module/domain/groupChannelList/component/GroupChannelListList.js.map +1 -0
  277. package/lib/module/domain/groupChannelList/component/GroupChannelListStatusEmpty.js +21 -0
  278. package/lib/module/domain/groupChannelList/component/GroupChannelListStatusEmpty.js.map +1 -0
  279. package/lib/module/domain/groupChannelList/component/GroupChannelListStatusLoading.js +21 -0
  280. package/lib/module/domain/groupChannelList/component/GroupChannelListStatusLoading.js.map +1 -0
  281. package/lib/module/domain/groupChannelList/component/GroupChannelListTypeSelector.js +124 -0
  282. package/lib/module/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -0
  283. package/lib/module/domain/groupChannelList/index.js +8 -0
  284. package/lib/module/domain/groupChannelList/index.js.map +1 -0
  285. package/lib/module/domain/groupChannelList/module/createGroupChannelListModule.js +30 -0
  286. package/lib/module/domain/groupChannelList/module/createGroupChannelListModule.js.map +1 -0
  287. package/lib/module/domain/groupChannelList/module/moduleContext.js +40 -0
  288. package/lib/module/domain/groupChannelList/module/moduleContext.js.map +1 -0
  289. package/lib/module/domain/groupChannelList/types.js +2 -0
  290. package/lib/module/domain/groupChannelList/types.js.map +1 -0
  291. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsHeader.js +35 -0
  292. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsHeader.js.map +1 -0
  293. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +56 -0
  294. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -0
  295. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +78 -0
  296. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -0
  297. package/lib/module/domain/groupChannelSettings/index.js +6 -0
  298. package/lib/module/domain/groupChannelSettings/index.js.map +1 -0
  299. package/lib/module/domain/groupChannelSettings/module/createGroupChannelSettingsModule.js +24 -0
  300. package/lib/module/domain/groupChannelSettings/module/createGroupChannelSettingsModule.js.map +1 -0
  301. package/lib/module/domain/groupChannelSettings/module/moduleContext.js +127 -0
  302. package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -0
  303. package/lib/module/domain/groupChannelSettings/types.js +2 -0
  304. package/lib/module/domain/groupChannelSettings/types.js.map +1 -0
  305. package/lib/module/domain/groupChannelUserList/types.js +2 -0
  306. package/lib/module/domain/groupChannelUserList/types.js.map +1 -0
  307. package/lib/module/domain/userList/component/UserListHeader.js +42 -0
  308. package/lib/module/domain/userList/component/UserListHeader.js.map +1 -0
  309. package/lib/module/domain/userList/component/UserListList.js +42 -0
  310. package/lib/module/domain/userList/component/UserListList.js.map +1 -0
  311. package/lib/module/domain/userList/component/UserListStatusEmpty.js +21 -0
  312. package/lib/module/domain/userList/component/UserListStatusEmpty.js.map +1 -0
  313. package/lib/module/domain/userList/component/UserListStatusError.js +25 -0
  314. package/lib/module/domain/userList/component/UserListStatusError.js.map +1 -0
  315. package/lib/module/domain/userList/component/UserListStatusLoading.js +21 -0
  316. package/lib/module/domain/userList/component/UserListStatusLoading.js.map +1 -0
  317. package/lib/module/domain/userList/index.js +8 -0
  318. package/lib/module/domain/userList/index.js.map +1 -0
  319. package/lib/module/domain/userList/module/createUserListModule.js +30 -0
  320. package/lib/module/domain/userList/module/createUserListModule.js.map +1 -0
  321. package/lib/module/domain/userList/module/moduleContext.js +34 -0
  322. package/lib/module/domain/userList/module/moduleContext.js.map +1 -0
  323. package/lib/module/domain/userList/types.js +2 -0
  324. package/lib/module/domain/userList/types.js.map +1 -0
  325. package/lib/module/fragments/createGroupChannelCreateFragment.js +124 -0
  326. package/lib/module/fragments/createGroupChannelCreateFragment.js.map +1 -0
  327. package/lib/module/fragments/createGroupChannelFragment.js +132 -0
  328. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -0
  329. package/lib/module/fragments/createGroupChannelInviteFragment.js +118 -0
  330. package/lib/module/fragments/createGroupChannelInviteFragment.js.map +1 -0
  331. package/lib/module/fragments/createGroupChannelListFragment.js +115 -0
  332. package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -0
  333. package/lib/module/fragments/createGroupChannelMembersFragment.js +114 -0
  334. package/lib/module/fragments/createGroupChannelMembersFragment.js.map +1 -0
  335. package/lib/module/fragments/createGroupChannelSettingsFragment.js +52 -0
  336. package/lib/module/fragments/createGroupChannelSettingsFragment.js.map +1 -0
  337. package/lib/module/hooks/useConnection.js +79 -0
  338. package/lib/module/hooks/useConnection.js.map +1 -0
  339. package/lib/module/hooks/useContext.js +20 -0
  340. package/lib/module/hooks/useContext.js.map +1 -0
  341. package/lib/module/hooks/usePushTokenRegistration.js +69 -0
  342. package/lib/module/hooks/usePushTokenRegistration.js.map +1 -0
  343. package/lib/module/index.js +57 -0
  344. package/lib/module/index.js.map +1 -0
  345. package/lib/module/localization/StringSet.en.js +7 -0
  346. package/lib/module/localization/StringSet.en.js.map +1 -0
  347. package/lib/module/localization/StringSet.type.js +173 -0
  348. package/lib/module/localization/StringSet.type.js.map +1 -0
  349. package/lib/module/platform/createClipboardService.expo.js +15 -0
  350. package/lib/module/platform/createClipboardService.expo.js.map +1 -0
  351. package/lib/module/platform/createClipboardService.native.js +15 -0
  352. package/lib/module/platform/createClipboardService.native.js.map +1 -0
  353. package/lib/module/platform/createFileService.expo.js +164 -0
  354. package/lib/module/platform/createFileService.expo.js.map +1 -0
  355. package/lib/module/platform/createFileService.native.js +237 -0
  356. package/lib/module/platform/createFileService.native.js.map +1 -0
  357. package/lib/module/platform/createNotificationService.expo.js +42 -0
  358. package/lib/module/platform/createNotificationService.expo.js.map +1 -0
  359. package/lib/module/platform/createNotificationService.native.js +57 -0
  360. package/lib/module/platform/createNotificationService.native.js.map +1 -0
  361. package/lib/module/platform/dynamicModule.js +103 -0
  362. package/lib/module/platform/dynamicModule.js.map +1 -0
  363. package/lib/module/platform/types.js +2 -0
  364. package/lib/module/platform/types.js.map +1 -0
  365. package/lib/module/types.js +2 -0
  366. package/lib/module/types.js.map +1 -0
  367. package/lib/module/utils/expoPermissionGranted.js +24 -0
  368. package/lib/module/utils/expoPermissionGranted.js.map +1 -0
  369. package/lib/module/utils/fileTypeGuard.js +18 -0
  370. package/lib/module/utils/fileTypeGuard.js.map +1 -0
  371. package/lib/module/utils/nativePermissionGranted.js +15 -0
  372. package/lib/module/utils/nativePermissionGranted.js.map +1 -0
  373. package/lib/module/version.js +3 -0
  374. package/lib/module/version.js.map +1 -0
  375. package/lib/typescript/__template__/component/__domain__Header.d.ts +4 -0
  376. package/lib/typescript/__template__/component/__domain__StatusEmpty.d.ts +3 -0
  377. package/lib/typescript/__template__/component/__domain__StatusLoading.d.ts +3 -0
  378. package/lib/typescript/__template__/component/__domain__View.d.ts +4 -0
  379. package/lib/typescript/__template__/create__domain__Fragment.d.ts +2 -0
  380. package/lib/typescript/__template__/index.d.ts +6 -0
  381. package/lib/typescript/__template__/module/create__domain__Module.d.ts +3 -0
  382. package/lib/typescript/__template__/module/moduleContext.d.ts +4 -0
  383. package/lib/typescript/__template__/types.d.ts +31 -0
  384. package/lib/typescript/src/InternalErrorBoundary.d.ts +18 -0
  385. package/lib/typescript/src/InternalLocalCacheStorage.d.ts +12 -0
  386. package/lib/typescript/src/SendbirdUIKitContainer.d.ts +42 -0
  387. package/lib/typescript/src/components/ChannelCover.d.ts +10 -0
  388. package/lib/typescript/src/components/ChatFlatList.d.ts +14 -0
  389. package/lib/typescript/src/components/MessageRenderer/AdminMessage/index.d.ts +6 -0
  390. package/lib/typescript/src/components/MessageRenderer/FileMessage/BaseFileMessage.d.ts +6 -0
  391. package/lib/typescript/src/components/MessageRenderer/FileMessage/ImageFileMessage.d.ts +4 -0
  392. package/lib/typescript/src/components/MessageRenderer/FileMessage/index.d.ts +6 -0
  393. package/lib/typescript/src/components/MessageRenderer/MessageContainer.d.ts +3 -0
  394. package/lib/typescript/src/components/MessageRenderer/MessageDateSeparator.d.ts +8 -0
  395. package/lib/typescript/src/components/MessageRenderer/MessageIncomingAvatar.d.ts +8 -0
  396. package/lib/typescript/src/components/MessageRenderer/MessageIncomingSenderName.d.ts +8 -0
  397. package/lib/typescript/src/components/MessageRenderer/MessageOutgoingStatus.d.ts +8 -0
  398. package/lib/typescript/src/components/MessageRenderer/MessageTime.d.ts +10 -0
  399. package/lib/typescript/src/components/MessageRenderer/UnknownMessage/index.d.ts +5 -0
  400. package/lib/typescript/src/components/MessageRenderer/UserMessage/BaseUserMessage.d.ts +4 -0
  401. package/lib/typescript/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.d.ts +8 -0
  402. package/lib/typescript/src/components/MessageRenderer/UserMessage/index.d.ts +6 -0
  403. package/lib/typescript/src/components/MessageRenderer/index.d.ts +23 -0
  404. package/lib/typescript/src/components/NewMessagesButton.d.ts +9 -0
  405. package/lib/typescript/src/components/ProviderLayout.d.ts +3 -0
  406. package/lib/typescript/src/components/ScrollToBottomButton.d.ts +7 -0
  407. package/lib/typescript/src/components/StatusComposition.d.ts +10 -0
  408. package/lib/typescript/src/components/TypedPlaceholder.d.ts +7 -0
  409. package/lib/typescript/src/components/UserActionBar.d.ts +11 -0
  410. package/lib/typescript/src/components/UserSelectableBar.d.ts +9 -0
  411. package/lib/typescript/src/constants.d.ts +1 -0
  412. package/lib/typescript/src/contexts/Localization.d.ts +12 -0
  413. package/lib/typescript/src/contexts/PlatformService.d.ts +10 -0
  414. package/lib/typescript/src/contexts/SendbirdChat.d.ts +24 -0
  415. package/lib/typescript/src/domain/groupChannel/component/GroupChannelHeader.d.ts +4 -0
  416. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/EditInput.d.ts +11 -0
  417. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/SendInput.d.ts +9 -0
  418. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/index.d.ts +9 -0
  419. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +36 -0
  420. package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusEmpty.d.ts +3 -0
  421. package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusLoading.d.ts +3 -0
  422. package/lib/typescript/src/domain/groupChannel/index.d.ts +7 -0
  423. package/lib/typescript/src/domain/groupChannel/module/createGroupChannelModule.d.ts +3 -0
  424. package/lib/typescript/src/domain/groupChannel/module/moduleContext.d.ts +3 -0
  425. package/lib/typescript/src/domain/groupChannel/types.d.ts +102 -0
  426. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListHeader.d.ts +4 -0
  427. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListList.d.ts +4 -0
  428. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusEmpty.d.ts +3 -0
  429. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusLoading.d.ts +3 -0
  430. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListTypeSelector.d.ts +4 -0
  431. package/lib/typescript/src/domain/groupChannelList/index.d.ts +7 -0
  432. package/lib/typescript/src/domain/groupChannelList/module/createGroupChannelListModule.d.ts +3 -0
  433. package/lib/typescript/src/domain/groupChannelList/module/moduleContext.d.ts +4 -0
  434. package/lib/typescript/src/domain/groupChannelList/types.d.ts +81 -0
  435. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsHeader.d.ts +4 -0
  436. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.d.ts +4 -0
  437. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.d.ts +4 -0
  438. package/lib/typescript/src/domain/groupChannelSettings/index.d.ts +5 -0
  439. package/lib/typescript/src/domain/groupChannelSettings/module/createGroupChannelSettingsModule.d.ts +3 -0
  440. package/lib/typescript/src/domain/groupChannelSettings/module/moduleContext.d.ts +4 -0
  441. package/lib/typescript/src/domain/groupChannelSettings/types.d.ts +45 -0
  442. package/lib/typescript/src/domain/groupChannelUserList/types.d.ts +42 -0
  443. package/lib/typescript/src/domain/userList/component/UserListHeader.d.ts +10 -0
  444. package/lib/typescript/src/domain/userList/component/UserListList.d.ts +11 -0
  445. package/lib/typescript/src/domain/userList/component/UserListStatusEmpty.d.ts +3 -0
  446. package/lib/typescript/src/domain/userList/component/UserListStatusError.d.ts +3 -0
  447. package/lib/typescript/src/domain/userList/component/UserListStatusLoading.d.ts +3 -0
  448. package/lib/typescript/src/domain/userList/index.d.ts +7 -0
  449. package/lib/typescript/src/domain/userList/module/createUserListModule.d.ts +3 -0
  450. package/lib/typescript/src/domain/userList/module/moduleContext.d.ts +4 -0
  451. package/lib/typescript/src/domain/userList/types.d.ts +58 -0
  452. package/lib/typescript/src/fragments/createGroupChannelCreateFragment.d.ts +4 -0
  453. package/lib/typescript/src/fragments/createGroupChannelFragment.d.ts +3 -0
  454. package/lib/typescript/src/fragments/createGroupChannelInviteFragment.d.ts +4 -0
  455. package/lib/typescript/src/fragments/createGroupChannelListFragment.d.ts +3 -0
  456. package/lib/typescript/src/fragments/createGroupChannelMembersFragment.d.ts +5 -0
  457. package/lib/typescript/src/fragments/createGroupChannelSettingsFragment.d.ts +3 -0
  458. package/lib/typescript/src/hooks/useConnection.d.ts +11 -0
  459. package/lib/typescript/src/hooks/useContext.d.ts +22 -0
  460. package/lib/typescript/src/hooks/usePushTokenRegistration.d.ts +5 -0
  461. package/lib/typescript/src/index.d.ts +50 -0
  462. package/lib/typescript/src/localization/StringSet.en.d.ts +2 -0
  463. package/lib/typescript/src/localization/StringSet.type.d.ts +157 -0
  464. package/lib/typescript/src/platform/createClipboardService.expo.d.ts +4 -0
  465. package/lib/typescript/src/platform/createClipboardService.native.d.ts +4 -0
  466. package/lib/typescript/src/platform/createFileService.expo.d.ts +12 -0
  467. package/lib/typescript/src/platform/createFileService.native.d.ts +14 -0
  468. package/lib/typescript/src/platform/createNotificationService.expo.d.ts +4 -0
  469. package/lib/typescript/src/platform/createNotificationService.native.d.ts +8 -0
  470. package/lib/typescript/src/platform/dynamicModule.d.ts +23 -0
  471. package/lib/typescript/src/platform/types.d.ts +47 -0
  472. package/lib/typescript/src/types.d.ts +20 -0
  473. package/lib/typescript/src/utils/expoPermissionGranted.d.ts +13 -0
  474. package/lib/typescript/src/utils/fileTypeGuard.d.ts +4 -0
  475. package/lib/typescript/src/utils/nativePermissionGranted.d.ts +3 -0
  476. package/lib/typescript/src/version.d.ts +2 -0
  477. package/package.json +154 -0
  478. package/src/InternalErrorBoundary.tsx +52 -0
  479. package/src/InternalLocalCacheStorage.ts +45 -0
  480. package/src/SendbirdUIKitContainer.tsx +183 -0
  481. package/src/components/ChannelCover.tsx +44 -0
  482. package/src/components/ChatFlatList.tsx +96 -0
  483. package/src/components/MessageRenderer/AdminMessage/index.tsx +40 -0
  484. package/src/components/MessageRenderer/FileMessage/BaseFileMessage.tsx +48 -0
  485. package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +39 -0
  486. package/src/components/MessageRenderer/FileMessage/index.tsx +17 -0
  487. package/src/components/MessageRenderer/MessageContainer.tsx +17 -0
  488. package/src/components/MessageRenderer/MessageDateSeparator.tsx +43 -0
  489. package/src/components/MessageRenderer/MessageIncomingAvatar.tsx +24 -0
  490. package/src/components/MessageRenderer/MessageIncomingSenderName.tsx +33 -0
  491. package/src/components/MessageRenderer/MessageOutgoingStatus.tsx +88 -0
  492. package/src/components/MessageRenderer/MessageTime.tsx +24 -0
  493. package/src/components/MessageRenderer/UnknownMessage/index.tsx +34 -0
  494. package/src/components/MessageRenderer/UserMessage/BaseUserMessage.tsx +34 -0
  495. package/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.tsx +110 -0
  496. package/src/components/MessageRenderer/UserMessage/index.tsx +17 -0
  497. package/src/components/MessageRenderer/index.tsx +163 -0
  498. package/src/components/NewMessagesButton.tsx +52 -0
  499. package/src/components/ProviderLayout.tsx +17 -0
  500. package/src/components/ScrollToBottomButton.tsx +48 -0
  501. package/src/components/StatusComposition.tsx +16 -0
  502. package/src/components/TypedPlaceholder.tsx +48 -0
  503. package/src/components/UserActionBar.tsx +73 -0
  504. package/src/components/UserSelectableBar.tsx +58 -0
  505. package/src/constants.ts +1 -0
  506. package/src/contexts/Localization.tsx +17 -0
  507. package/src/contexts/PlatformService.tsx +23 -0
  508. package/src/contexts/SendbirdChat.tsx +110 -0
  509. package/src/domain/groupChannel/component/GroupChannelHeader.tsx +52 -0
  510. package/src/domain/groupChannel/component/GroupChannelInput/EditInput.tsx +92 -0
  511. package/src/domain/groupChannel/component/GroupChannelInput/SendInput.tsx +141 -0
  512. package/src/domain/groupChannel/component/GroupChannelInput/index.tsx +72 -0
  513. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +308 -0
  514. package/src/domain/groupChannel/component/GroupChannelStatusEmpty.tsx +18 -0
  515. package/src/domain/groupChannel/component/GroupChannelStatusLoading.tsx +18 -0
  516. package/src/domain/groupChannel/index.ts +7 -0
  517. package/src/domain/groupChannel/module/createGroupChannelModule.tsx +21 -0
  518. package/src/domain/groupChannel/module/moduleContext.tsx +76 -0
  519. package/src/domain/groupChannel/types.ts +125 -0
  520. package/src/domain/groupChannelList/component/GroupChannelListHeader.tsx +20 -0
  521. package/src/domain/groupChannelList/component/GroupChannelListList.tsx +75 -0
  522. package/src/domain/groupChannelList/component/GroupChannelListStatusEmpty.tsx +18 -0
  523. package/src/domain/groupChannelList/component/GroupChannelListStatusLoading.tsx +18 -0
  524. package/src/domain/groupChannelList/component/GroupChannelListTypeSelector.tsx +114 -0
  525. package/src/domain/groupChannelList/index.ts +7 -0
  526. package/src/domain/groupChannelList/module/createGroupChannelListModule.tsx +21 -0
  527. package/src/domain/groupChannelList/module/moduleContext.tsx +40 -0
  528. package/src/domain/groupChannelList/types.ts +92 -0
  529. package/src/domain/groupChannelSettings/component/GroupChannelSettingsHeader.tsx +29 -0
  530. package/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.tsx +47 -0
  531. package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +77 -0
  532. package/src/domain/groupChannelSettings/index.ts +5 -0
  533. package/src/domain/groupChannelSettings/module/createGroupChannelSettingsModule.tsx +17 -0
  534. package/src/domain/groupChannelSettings/module/moduleContext.tsx +146 -0
  535. package/src/domain/groupChannelSettings/types.ts +50 -0
  536. package/src/domain/groupChannelUserList/types.ts +50 -0
  537. package/src/domain/userList/component/UserListHeader.tsx +39 -0
  538. package/src/domain/userList/component/UserListList.tsx +36 -0
  539. package/src/domain/userList/component/UserListStatusEmpty.tsx +18 -0
  540. package/src/domain/userList/component/UserListStatusError.tsx +19 -0
  541. package/src/domain/userList/component/UserListStatusLoading.tsx +18 -0
  542. package/src/domain/userList/index.ts +7 -0
  543. package/src/domain/userList/module/createUserListModule.tsx +21 -0
  544. package/src/domain/userList/module/moduleContext.tsx +36 -0
  545. package/src/domain/userList/types.ts +65 -0
  546. package/src/fragments/createGroupChannelCreateFragment.tsx +136 -0
  547. package/src/fragments/createGroupChannelFragment.tsx +153 -0
  548. package/src/fragments/createGroupChannelInviteFragment.tsx +127 -0
  549. package/src/fragments/createGroupChannelListFragment.tsx +113 -0
  550. package/src/fragments/createGroupChannelMembersFragment.tsx +112 -0
  551. package/src/fragments/createGroupChannelSettingsFragment.tsx +56 -0
  552. package/src/hooks/useConnection.ts +82 -0
  553. package/src/hooks/useContext.ts +25 -0
  554. package/src/hooks/usePushTokenRegistration.ts +64 -0
  555. package/src/index.ts +104 -0
  556. package/src/localization/StringSet.en.ts +7 -0
  557. package/src/localization/StringSet.type.ts +334 -0
  558. package/src/platform/createClipboardService.expo.ts +16 -0
  559. package/src/platform/createClipboardService.native.ts +16 -0
  560. package/src/platform/createFileService.expo.ts +142 -0
  561. package/src/platform/createFileService.native.ts +191 -0
  562. package/src/platform/createNotificationService.expo.ts +36 -0
  563. package/src/platform/createNotificationService.native.ts +60 -0
  564. package/src/platform/dynamicModule.ts +110 -0
  565. package/src/platform/types.ts +51 -0
  566. package/src/types.ts +18 -0
  567. package/src/utils/expoPermissionGranted.ts +39 -0
  568. package/src/utils/fileTypeGuard.ts +10 -0
  569. package/src/utils/nativePermissionGranted.ts +14 -0
  570. package/src/version.ts +2 -0
@@ -0,0 +1,125 @@
1
+ import type React from 'react';
2
+ import type { FlatListProps } from 'react-native';
3
+
4
+ import type { UseGroupChannelMessagesOptions } from '@sendbird/uikit-chat-hooks';
5
+ import type {
6
+ SendbirdFileMessage,
7
+ SendbirdFileMessageParams,
8
+ SendbirdGroupChannel,
9
+ SendbirdMessage,
10
+ SendbirdUser,
11
+ SendbirdUserMessage,
12
+ SendbirdUserMessageParams,
13
+ } from '@sendbird/uikit-utils';
14
+
15
+ import type { FileType } from '../../platform/types';
16
+ import type { CommonComponent } from '../../types';
17
+
18
+ export interface GroupChannelProps {
19
+ Fragment: {
20
+ channel: SendbirdGroupChannel;
21
+ onChannelDeleted: () => void;
22
+ onPressHeaderLeft: GroupChannelProps['Header']['onPressHeaderLeft'];
23
+ onPressHeaderRight: GroupChannelProps['Header']['onPressHeaderRight'];
24
+
25
+ onBeforeSendFileMessage?: (
26
+ params: SendbirdFileMessageParams,
27
+ ) => SendbirdFileMessageParams | Promise<SendbirdFileMessageParams>;
28
+ onBeforeSendUserMessage?: (
29
+ params: SendbirdUserMessageParams,
30
+ ) => SendbirdUserMessageParams | Promise<SendbirdUserMessageParams>;
31
+ onPressImageMessage?: GroupChannelProps['MessageList']['onPressImageMessage'];
32
+
33
+ renderMessage?: GroupChannelProps['MessageList']['renderMessage'];
34
+ renderNewMessagesButton?: GroupChannelProps['MessageList']['renderNewMessagesButton'];
35
+ renderScrollToBottomButton?: GroupChannelProps['MessageList']['renderScrollToBottomButton'];
36
+
37
+ enableTypingIndicator?: GroupChannelProps['Provider']['enableTypingIndicator'];
38
+ enableMessageGrouping?: GroupChannelProps['MessageList']['enableMessageGrouping'];
39
+
40
+ keyboardAvoidOffset?: GroupChannelProps['Provider']['keyboardAvoidOffset'];
41
+ flatListProps?: GroupChannelProps['MessageList']['flatListProps'];
42
+ sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];
43
+ collectionCreator?: UseGroupChannelMessagesOptions['collectionCreator'];
44
+ queryCreator?: UseGroupChannelMessagesOptions['queryCreator'];
45
+ };
46
+ Header: {
47
+ onPressHeaderLeft: () => void;
48
+ onPressHeaderRight: () => void;
49
+ };
50
+ MessageList: {
51
+ enableMessageGrouping: boolean;
52
+ currentUserId?: string;
53
+ channel: SendbirdGroupChannel;
54
+ messages: SendbirdMessage[];
55
+ nextMessages: SendbirdMessage[];
56
+ newMessagesFromMembers: SendbirdMessage[];
57
+ onTopReached: () => void;
58
+ onBottomReached: () => void;
59
+
60
+ onResendFailedMessage: (failedMessage: SendbirdUserMessage | SendbirdFileMessage) => Promise<void>;
61
+ onDeleteMessage: (message: SendbirdUserMessage | SendbirdFileMessage) => Promise<void>;
62
+ onPressImageMessage?: (message: SendbirdFileMessage, uri: string) => void;
63
+
64
+ renderMessage: (props: {
65
+ message: SendbirdMessage;
66
+ prevMessage?: SendbirdMessage;
67
+ nextMessage?: SendbirdMessage;
68
+ onPress?: () => void;
69
+ onLongPress?: () => void;
70
+ channel: GroupChannelProps['MessageList']['channel'];
71
+ currentUserId?: GroupChannelProps['MessageList']['currentUserId'];
72
+ enableMessageGrouping: GroupChannelProps['MessageList']['enableMessageGrouping'];
73
+ }) => React.ReactElement | null;
74
+ renderNewMessagesButton: null | CommonComponent<{
75
+ visible: boolean;
76
+ onPress: () => void;
77
+ newMessages: SendbirdMessage[];
78
+ }>;
79
+ renderScrollToBottomButton: null | CommonComponent<{
80
+ visible: boolean;
81
+ onPress: () => void;
82
+ }>;
83
+ flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;
84
+ };
85
+ Input: {
86
+ channel: SendbirdGroupChannel;
87
+ onSendFileMessage: (file: FileType) => Promise<void>;
88
+ onSendUserMessage: (text: string) => Promise<void>;
89
+ onUpdateFileMessage: (editedFile: FileType, message: SendbirdFileMessage) => Promise<void>;
90
+ onUpdateUserMessage: (editedText: string, message: SendbirdUserMessage) => Promise<void>;
91
+ };
92
+ Provider: {
93
+ channel: SendbirdGroupChannel;
94
+ enableTypingIndicator: boolean;
95
+ keyboardAvoidOffset?: number;
96
+ };
97
+ }
98
+
99
+ /**
100
+ * Internal context for GroupChannel
101
+ * For example, the developer can create a custom header
102
+ * with getting data from the domain context
103
+ * */
104
+ export interface GroupChannelContextsType {
105
+ Fragment: React.Context<{
106
+ headerTitle: string;
107
+ channel: SendbirdGroupChannel;
108
+ editMessage?: SendbirdUserMessage | SendbirdFileMessage;
109
+ setEditMessage: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;
110
+ keyboardAvoidOffset?: number;
111
+ }>;
112
+ TypingIndicator: React.Context<{
113
+ typingUsers: SendbirdUser[];
114
+ }>;
115
+ }
116
+ export interface GroupChannelModule {
117
+ Provider: React.FC<GroupChannelProps['Provider']>;
118
+ Header: CommonComponent<GroupChannelProps['Header']>;
119
+ MessageList: CommonComponent<GroupChannelProps['MessageList']>;
120
+ Input: CommonComponent<GroupChannelProps['Input']>;
121
+ StatusEmpty: CommonComponent;
122
+ StatusLoading: CommonComponent;
123
+ }
124
+
125
+ export type GroupChannelFragment = React.FC<GroupChannelProps['Fragment']>;
@@ -0,0 +1,20 @@
1
+ import React, { useContext } from 'react';
2
+
3
+ import { Icon, useHeaderStyle } from '@sendbird/uikit-react-native-foundation';
4
+
5
+ import { GroupChannelListContexts } from '../module/moduleContext';
6
+ import type { GroupChannelListProps } from '../types';
7
+
8
+ const GroupChannelListHeader: React.FC<GroupChannelListProps['Header']> = ({ children }) => {
9
+ const fragment = useContext(GroupChannelListContexts.Fragment);
10
+ const typeSelector = useContext(GroupChannelListContexts.TypeSelector);
11
+ const { HeaderComponent } = useHeaderStyle();
12
+
13
+ return (
14
+ <HeaderComponent title={fragment.headerTitle} right={<Icon icon={'create'} />} onPressRight={typeSelector.show}>
15
+ {children}
16
+ </HeaderComponent>
17
+ );
18
+ };
19
+
20
+ export default GroupChannelListHeader;
@@ -0,0 +1,75 @@
1
+ import React, { useCallback } from 'react';
2
+ import { FlatList, ListRenderItem } from 'react-native';
3
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
4
+
5
+ import { useActionMenu, useToast } from '@sendbird/uikit-react-native-foundation';
6
+ import { PASS, SendbirdGroupChannel, useFreshCallback } from '@sendbird/uikit-utils';
7
+
8
+ import { useLocalization, useSendbirdChat } from '../../../hooks/useContext';
9
+ import type { GroupChannelListProps } from '../types';
10
+
11
+ const GroupChannelListList: React.FC<GroupChannelListProps['List']> = ({
12
+ renderGroupChannelPreview,
13
+ groupChannels,
14
+ onLoadNext,
15
+ flatListProps,
16
+ menuItemCreator = PASS,
17
+ }) => {
18
+ const toast = useToast();
19
+ const { openMenu } = useActionMenu();
20
+ const { STRINGS } = useLocalization();
21
+ const { sdk, currentUser } = useSendbirdChat();
22
+
23
+ const onLongPress = useFreshCallback((channel: SendbirdGroupChannel) => {
24
+ const action = channel.myPushTriggerOption === 'off' ? 'on' : 'off';
25
+ const menuItem = menuItemCreator({
26
+ title: STRINGS.GROUP_CHANNEL_LIST.DIALOG_CHANNEL_TITLE(currentUser?.userId ?? '', channel),
27
+ menuItems: [
28
+ {
29
+ title: STRINGS.GROUP_CHANNEL_LIST.DIALOG_CHANNEL_NOTIFICATION(channel),
30
+ onPress: async () => {
31
+ if (action === 'on') {
32
+ await channel.setMyPushTriggerOption('default');
33
+ } else {
34
+ await channel.setMyPushTriggerOption('off');
35
+ }
36
+ },
37
+ onError: () => {
38
+ toast.show(
39
+ action === 'on' ? STRINGS.TOAST.TURN_ON_NOTIFICATIONS_ERROR : STRINGS.TOAST.TURN_OFF_NOTIFICATIONS_ERROR,
40
+ 'error',
41
+ );
42
+ },
43
+ },
44
+ {
45
+ title: STRINGS.GROUP_CHANNEL_LIST.DIALOG_CHANNEL_LEAVE,
46
+ onPress: async () => {
47
+ channel.leave().then(() => sdk.clearCachedMessages([channel.url]).catch());
48
+ },
49
+ onError: () => toast.show(STRINGS.TOAST.LEAVE_CHANNEL_ERROR, 'error'),
50
+ },
51
+ ],
52
+ });
53
+
54
+ openMenu(menuItem);
55
+ });
56
+
57
+ const renderItem: ListRenderItem<SendbirdGroupChannel> = useCallback(
58
+ ({ item }) => renderGroupChannelPreview?.(item, () => onLongPress(item)),
59
+ [renderGroupChannelPreview, onLongPress],
60
+ );
61
+
62
+ const { left, right } = useSafeAreaInsets();
63
+ return (
64
+ <FlatList
65
+ bounces={false}
66
+ data={groupChannels}
67
+ renderItem={renderItem}
68
+ onEndReached={onLoadNext}
69
+ {...flatListProps}
70
+ contentContainerStyle={[flatListProps?.contentContainerStyle, { paddingLeft: left, paddingRight: right }]}
71
+ />
72
+ );
73
+ };
74
+
75
+ export default GroupChannelListList;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { StyleSheet, View } from 'react-native';
3
+
4
+ import TypedPlaceholder from '../../../components/TypedPlaceholder';
5
+
6
+ const GroupChannelListStatusEmpty = () => {
7
+ return (
8
+ <View style={styles.container}>
9
+ <TypedPlaceholder type={'no-channels'} />
10
+ </View>
11
+ );
12
+ };
13
+
14
+ const styles = StyleSheet.create({
15
+ container: { flex: 1, justifyContent: 'center', alignItems: 'center' },
16
+ });
17
+
18
+ export default GroupChannelListStatusEmpty;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { StyleSheet, View } from 'react-native';
3
+
4
+ import TypedPlaceholder from '../../../components/TypedPlaceholder';
5
+
6
+ const GroupChannelListStatusLoading = () => {
7
+ return (
8
+ <View style={styles.container}>
9
+ <TypedPlaceholder type={'loading'} />
10
+ </View>
11
+ );
12
+ };
13
+
14
+ const styles = StyleSheet.create({
15
+ container: { flex: 1, justifyContent: 'center', alignItems: 'center' },
16
+ });
17
+
18
+ export default GroupChannelListStatusLoading;
@@ -0,0 +1,114 @@
1
+ import React, { useContext, useEffect } from 'react';
2
+ import { TouchableOpacity, View } from 'react-native';
3
+
4
+ import {
5
+ Header as DefaultHeader,
6
+ Icon,
7
+ Modal,
8
+ Text,
9
+ createStyleSheet,
10
+ useHeaderStyle,
11
+ useUIKitTheme,
12
+ } from '@sendbird/uikit-react-native-foundation';
13
+
14
+ import { useLocalization } from '../../../hooks/useContext';
15
+ import { GroupChannelListContexts } from '../module/moduleContext';
16
+ import type { GroupChannelListProps, GroupChannelType } from '../types';
17
+
18
+ const TYPES: GroupChannelType[] = ['GROUP', 'SUPER_GROUP', 'BROADCAST'];
19
+ const TYPE_ICONS: Record<GroupChannelType, keyof typeof Icon.Assets> = {
20
+ 'GROUP': 'chat',
21
+ 'SUPER_GROUP': 'supergroup',
22
+ 'BROADCAST': 'broadcast',
23
+ };
24
+
25
+ const GroupChannelListTypeSelector: React.FC<GroupChannelListProps['TypeSelector']> = ({
26
+ Header = DefaultHeader,
27
+ skipTypeSelection,
28
+ onSelectType,
29
+ }) => {
30
+ const { statusBarTranslucent } = useHeaderStyle();
31
+ const { colors } = useUIKitTheme();
32
+ const typeSelector = useContext(GroupChannelListContexts.TypeSelector);
33
+ const { visible, hide } = typeSelector;
34
+ const createOnPressType = (type: GroupChannelType) => () => {
35
+ hide();
36
+ onSelectType(type);
37
+ };
38
+
39
+ useEffect(() => {
40
+ if (skipTypeSelection && visible) createOnPressType('GROUP')();
41
+ }, [skipTypeSelection, visible]);
42
+
43
+ if (skipTypeSelection) return null;
44
+
45
+ const renderButtons = () => (
46
+ <View style={styles.buttonArea}>
47
+ {TYPES.map((type) => {
48
+ return (
49
+ <TouchableOpacity key={type} activeOpacity={0.6} onPress={createOnPressType(type)} style={styles.typeButton}>
50
+ <DefaultTypeIcon type={type} />
51
+ <DefaultTypeText type={type} />
52
+ </TouchableOpacity>
53
+ );
54
+ })}
55
+ </View>
56
+ );
57
+
58
+ const renderHeader = () => {
59
+ if (Header) {
60
+ return (
61
+ <Header
62
+ title={typeSelector.headerTitle}
63
+ right={<Icon icon={'close'} color={colors.onBackground01} />}
64
+ onPressRight={typeSelector.hide}
65
+ >
66
+ {renderButtons()}
67
+ </Header>
68
+ );
69
+ }
70
+
71
+ return (
72
+ <DefaultHeader title={null} right={null} left={null}>
73
+ {renderButtons()}
74
+ </DefaultHeader>
75
+ );
76
+ };
77
+
78
+ return (
79
+ <Modal visible={visible} onClose={hide} statusBarTranslucent={statusBarTranslucent}>
80
+ {renderHeader()}
81
+ </Modal>
82
+ );
83
+ };
84
+
85
+ const DefaultTypeIcon: React.FC<{ type: GroupChannelType }> = ({ type }) => {
86
+ return <Icon size={24} icon={TYPE_ICONS[type]} containerStyle={styles.icon} />;
87
+ };
88
+
89
+ const DefaultTypeText: React.FC<{ type: GroupChannelType }> = ({ type }) => {
90
+ const { STRINGS } = useLocalization();
91
+ const { colors } = useUIKitTheme();
92
+ return (
93
+ <Text caption2 color={colors.onBackground01}>
94
+ {STRINGS.GROUP_CHANNEL_LIST[`TYPE_SELECTOR_${type}`]}
95
+ </Text>
96
+ );
97
+ };
98
+
99
+ const styles = createStyleSheet({
100
+ buttonArea: {
101
+ flexDirection: 'row',
102
+ },
103
+ typeButton: {
104
+ paddingVertical: 24,
105
+ flex: 1,
106
+ alignItems: 'center',
107
+ justifyContent: 'center',
108
+ },
109
+ icon: {
110
+ marginBottom: 8,
111
+ },
112
+ });
113
+
114
+ export default GroupChannelListTypeSelector;
@@ -0,0 +1,7 @@
1
+ export { default as GroupChannelListHeader } from './component/GroupChannelListHeader';
2
+ export { default as GroupChannelListList } from './component/GroupChannelListList';
3
+ export { default as GroupChannelListStatusEmpty } from './component/GroupChannelListStatusEmpty';
4
+ export { default as GroupChannelListStatusLoading } from './component/GroupChannelListStatusLoading';
5
+ export { default as GroupChannelListTypeSelector } from './component/GroupChannelListTypeSelector';
6
+ export { default as createGroupChannelListModule } from './module/createGroupChannelListModule';
7
+ export { GroupChannelListContextsProvider, GroupChannelListContexts } from './module/moduleContext';
@@ -0,0 +1,21 @@
1
+ import GroupChannelListHeader from '../component/GroupChannelListHeader';
2
+ import GroupChannelListList from '../component/GroupChannelListList';
3
+ import GroupChannelListStatusEmpty from '../component/GroupChannelListStatusEmpty';
4
+ import GroupChannelListStatusLoading from '../component/GroupChannelListStatusLoading';
5
+ import GroupChannelListTypeSelector from '../component/GroupChannelListTypeSelector';
6
+ import type { GroupChannelListModule } from '../types';
7
+ import { GroupChannelListContextsProvider } from './moduleContext';
8
+
9
+ const createGroupChannelListModule = ({
10
+ Header = GroupChannelListHeader,
11
+ List = GroupChannelListList,
12
+ TypeSelector = GroupChannelListTypeSelector,
13
+ StatusLoading = GroupChannelListStatusLoading,
14
+ StatusEmpty = GroupChannelListStatusEmpty,
15
+ Provider = GroupChannelListContextsProvider,
16
+ ...module
17
+ }: Partial<GroupChannelListModule> = {}): GroupChannelListModule => {
18
+ return { Header, List, TypeSelector, StatusLoading, StatusEmpty, Provider, ...module };
19
+ };
20
+
21
+ export default createGroupChannelListModule;
@@ -0,0 +1,40 @@
1
+ import React, { createContext, useCallback, useState } from 'react';
2
+
3
+ import { NOOP } from '@sendbird/uikit-utils';
4
+
5
+ import ProviderLayout from '../../../components/ProviderLayout';
6
+ import { useLocalization } from '../../../hooks/useContext';
7
+ import type { GroupChannelListContextsType } from '../types';
8
+
9
+ export const GroupChannelListContexts: GroupChannelListContextsType = {
10
+ Fragment: createContext({
11
+ headerTitle: '',
12
+ }),
13
+ TypeSelector: createContext({
14
+ headerTitle: '',
15
+ visible: Boolean(),
16
+ hide: NOOP,
17
+ show: NOOP,
18
+ }),
19
+ };
20
+
21
+ export const GroupChannelListContextsProvider: React.FC = ({ children }) => {
22
+ const { STRINGS } = useLocalization();
23
+
24
+ // Type selector
25
+ const [visible, setVisible] = useState(false);
26
+ const show = useCallback(() => setVisible(true), []);
27
+ const hide = useCallback(() => setVisible(false), []);
28
+
29
+ return (
30
+ <ProviderLayout>
31
+ <GroupChannelListContexts.TypeSelector.Provider
32
+ value={{ headerTitle: STRINGS.GROUP_CHANNEL_LIST.TYPE_SELECTOR_HEADER_TITLE, visible, show, hide }}
33
+ >
34
+ <GroupChannelListContexts.Fragment.Provider value={{ headerTitle: STRINGS.GROUP_CHANNEL_LIST.HEADER_TITLE }}>
35
+ {children}
36
+ </GroupChannelListContexts.Fragment.Provider>
37
+ </GroupChannelListContexts.TypeSelector.Provider>
38
+ </ProviderLayout>
39
+ );
40
+ };
@@ -0,0 +1,92 @@
1
+ import type React from 'react';
2
+ import type { FlatListProps } from 'react-native';
3
+
4
+ import type { UseGroupChannelListOptions } from '@sendbird/uikit-chat-hooks';
5
+ import type { ActionMenuItem, BaseHeaderProps } from '@sendbird/uikit-react-native-foundation';
6
+ import type { SendbirdGroupChannel } from '@sendbird/uikit-utils';
7
+
8
+ import type { CommonComponent } from '../../types';
9
+
10
+ export interface GroupChannelListProps {
11
+ /** Props for `GroupChannelListFragment` **/
12
+ Fragment: {
13
+ /** Navigate to GroupChannelFragment **/
14
+ onPressChannel: (channel: SendbirdGroupChannel) => void;
15
+ /** Navigate to GroupChannelCreateFragment **/
16
+ onPressCreateChannel: (channelType: GroupChannelType) => void;
17
+ /** Custom Header for TypeSelector, Only replace header component not a module **/
18
+ TypeSelectorHeader?: null | CommonComponent<
19
+ BaseHeaderProps<{ title: string; right: React.ReactElement; onPressRight: () => void }>
20
+ >;
21
+ /** Method to render GroupChannel preview **/
22
+ renderGroupChannelPreview?: (
23
+ channel: SendbirdGroupChannel,
24
+ onLongPressChannel: () => void,
25
+ ) => React.ReactElement | null;
26
+ // /** Skip type selection, When this is set to true 'channelType' only receive 'GROUP' type **/
27
+ // skipTypeSelection?: boolean;
28
+ /** Custom Query creator for channels query **/
29
+ queryCreator?: UseGroupChannelListOptions['queryCreator'];
30
+ /** Sort comparator for sort channels **/
31
+ sortComparator?: UseGroupChannelListOptions['sortComparator'];
32
+ /** FlatList props for GroupChannelList.List **/
33
+ flatListProps?: GroupChannelListProps['List']['flatListProps'];
34
+ /** Action menu item creator for onLongPress **/
35
+ menuItemCreator?: GroupChannelListProps['List']['menuItemCreator'];
36
+ };
37
+ /** Props for `GroupChannelListModule.Header` **/
38
+ Header: {};
39
+ /** Props for `GroupChannelListModule.List` **/
40
+ List: {
41
+ /** GroupChannels from SendbirdChat SDK **/
42
+ groupChannels: SendbirdGroupChannel[];
43
+ /** Method to render GroupChannel preview **/
44
+ renderGroupChannelPreview: (
45
+ channel: SendbirdGroupChannel,
46
+ onLongPressChannel: () => void,
47
+ ) => React.ReactElement | null;
48
+ /** Method to load more data, called with onEndReached of FlatList **/
49
+ onLoadNext: () => Promise<void>;
50
+ /** Prop from Fragment **/
51
+ flatListProps?: Omit<FlatListProps<SendbirdGroupChannel>, 'data' | 'renderItem'>;
52
+ /** Prop from Fragment **/
53
+ menuItemCreator?: (defaultMenuItem: ActionMenuItem) => ActionMenuItem;
54
+ };
55
+ /** Props for `GroupChannelListModule.TypeSelector` **/
56
+ TypeSelector: {
57
+ /** Prop from Fragment `Fragment.TypeSelectorHeader` **/
58
+ Header: GroupChannelListProps['Fragment']['TypeSelectorHeader'];
59
+ /** Prop from Fragment `Fragment.skipTypeSelection` **/
60
+ skipTypeSelection: boolean;
61
+ /** Method called when type is selected, call `Fragment.onPressCreateChannel` **/
62
+ onSelectType: (type: GroupChannelType) => void;
63
+ };
64
+ }
65
+
66
+ /**
67
+ * Internal context for GroupChannelList
68
+ * For example, the developer can create a custom header
69
+ * with getting data from the domain context
70
+ * */
71
+ export interface GroupChannelListContextsType {
72
+ Fragment: React.Context<{
73
+ headerTitle: string;
74
+ }>;
75
+ TypeSelector: React.Context<{
76
+ visible: boolean;
77
+ show: () => void;
78
+ hide: () => void;
79
+ headerTitle: string;
80
+ }>;
81
+ }
82
+ export interface GroupChannelListModule {
83
+ Provider: React.FC;
84
+ Header: CommonComponent<GroupChannelListProps['Header']>;
85
+ List: CommonComponent<GroupChannelListProps['List']>;
86
+ TypeSelector: CommonComponent<GroupChannelListProps['TypeSelector']>;
87
+ StatusEmpty: CommonComponent;
88
+ StatusLoading: CommonComponent;
89
+ }
90
+
91
+ export type GroupChannelListFragment = React.FC<GroupChannelListProps['Fragment']>;
92
+ export type GroupChannelType = 'GROUP' | 'SUPER_GROUP' | 'BROADCAST';
@@ -0,0 +1,29 @@
1
+ import React, { useContext } from 'react';
2
+
3
+ import { Icon, Text, useHeaderStyle, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
4
+
5
+ import { GroupChannelSettingsContexts } from '../module/moduleContext';
6
+ import type { GroupChannelSettingsProps } from '../types';
7
+
8
+ const GroupChannelSettingsHeader: React.FC<GroupChannelSettingsProps['Header']> = ({ onPressHeaderLeft }) => {
9
+ const { colors } = useUIKitTheme();
10
+ const { headerTitle, headerRight, onPressHeaderRight } = useContext(GroupChannelSettingsContexts.Fragment);
11
+
12
+ const { HeaderComponent } = useHeaderStyle();
13
+
14
+ return (
15
+ <HeaderComponent
16
+ title={headerTitle}
17
+ left={<Icon icon={'arrow-left'} />}
18
+ onPressLeft={onPressHeaderLeft}
19
+ right={
20
+ <Text button color={colors.primary}>
21
+ {headerRight}
22
+ </Text>
23
+ }
24
+ onPressRight={onPressHeaderRight}
25
+ />
26
+ );
27
+ };
28
+
29
+ export default GroupChannelSettingsHeader;
@@ -0,0 +1,47 @@
1
+ import React, { useContext } from 'react';
2
+ import { View } from 'react-native';
3
+
4
+ import { Divider, Text, createStyleSheet } from '@sendbird/uikit-react-native-foundation';
5
+ import { Logger, getGroupChannelTitle } from '@sendbird/uikit-utils';
6
+
7
+ import ChannelCover from '../../../components/ChannelCover';
8
+ import { useLocalization, useSendbirdChat } from '../../../hooks/useContext';
9
+ import { GroupChannelSettingsContexts } from '../module/moduleContext';
10
+ import type { GroupChannelSettingsProps } from '../types';
11
+
12
+ const GroupChannelSettingsInfo: React.FC<GroupChannelSettingsProps['Info']> = () => {
13
+ const { channel } = useContext(GroupChannelSettingsContexts.Fragment);
14
+ const { currentUser } = useSendbirdChat();
15
+ const { STRINGS } = useLocalization();
16
+
17
+ if (!currentUser) {
18
+ Logger.warn('Cannot render GroupChannelSettingsInfo, User is not connected');
19
+ return null;
20
+ }
21
+
22
+ return (
23
+ <View>
24
+ <View style={styles.userInfoContainer}>
25
+ <ChannelCover channel={channel} size={80} containerStyle={styles.avatarContainer} />
26
+ <Text h1 numberOfLines={1}>
27
+ {getGroupChannelTitle(
28
+ currentUser.userId,
29
+ channel,
30
+ STRINGS.LABELS.USER_NO_NAME,
31
+ STRINGS.LABELS.CHANNEL_NO_MEMBERS,
32
+ )}
33
+ </Text>
34
+ </View>
35
+ <Divider />
36
+ </View>
37
+ );
38
+ };
39
+
40
+ const styles = createStyleSheet({
41
+ container: { flex: 1 },
42
+ userInfoContainer: { paddingVertical: 24, alignItems: 'center' },
43
+ avatarContainer: { marginBottom: 12 },
44
+ userIdContainer: { paddingVertical: 16 },
45
+ userIdLabel: { marginBottom: 4 },
46
+ });
47
+ export default GroupChannelSettingsInfo;