@sendbird/uikit-react-native 2.5.0 → 3.0.0-rc.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 (313) hide show
  1. package/README.md +6 -1
  2. package/lib/commonjs/components/{MessageRenderer/MessageTime.js → ChannelInput/AttachmentsButton.js} +20 -17
  3. package/lib/commonjs/components/ChannelInput/AttachmentsButton.js.map +1 -0
  4. package/lib/commonjs/components/ChannelInput/EditInput.js +10 -18
  5. package/lib/commonjs/components/ChannelInput/EditInput.js.map +1 -1
  6. package/lib/commonjs/components/ChannelInput/SendInput.js +220 -163
  7. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  8. package/lib/commonjs/components/ChannelInput/index.js +5 -3
  9. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  10. package/lib/commonjs/components/ChannelMessageList/index.js +27 -27
  11. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  12. package/lib/commonjs/components/ChatFlatList.js +18 -6
  13. package/lib/commonjs/components/ChatFlatList.js.map +1 -1
  14. package/lib/commonjs/components/{MessageRenderer/MessageDateSeparator.js → GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js} +3 -3
  15. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js.map +1 -0
  16. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js +47 -0
  17. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js.map +1 -0
  18. package/lib/commonjs/components/{MessageRenderer/MessageOutgoingStatus.js → GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.js} +11 -14
  19. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.js.map +1 -0
  20. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +204 -0
  21. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -0
  22. package/lib/commonjs/components/MessageSearchResultItem.js +3 -2
  23. package/lib/commonjs/components/MessageSearchResultItem.js.map +1 -1
  24. package/lib/commonjs/components/OpenChannelMessageRenderer/index.js +15 -9
  25. package/lib/commonjs/components/OpenChannelMessageRenderer/index.js.map +1 -1
  26. package/lib/commonjs/constants.js +1 -7
  27. package/lib/commonjs/constants.js.map +1 -1
  28. package/lib/commonjs/containers/GroupChannelPreviewContainer.js +13 -13
  29. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
  30. package/lib/commonjs/containers/SendbirdUIKitContainer.js +29 -19
  31. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  32. package/lib/commonjs/contexts/SendbirdChatCtx.js +17 -14
  33. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  34. package/lib/commonjs/contexts/UserProfileCtx.js +6 -4
  35. package/lib/commonjs/contexts/UserProfileCtx.js.map +1 -1
  36. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput.js +4 -13
  37. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput.js.map +1 -1
  38. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  39. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js +10 -6
  40. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
  41. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListTypeSelector.js +3 -3
  42. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -1
  43. package/lib/commonjs/domain/groupChannelList/types.js.map +1 -1
  44. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +11 -10
  45. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  46. package/lib/commonjs/domain/openChannel/component/OpenChannelInput.js +4 -8
  47. package/lib/commonjs/domain/openChannel/component/OpenChannelInput.js.map +1 -1
  48. package/lib/commonjs/domain/openChannel/types.js.map +1 -1
  49. package/lib/commonjs/domain/openChannelList/component/OpenChannelListList.js +3 -1
  50. package/lib/commonjs/domain/openChannelList/component/OpenChannelListList.js.map +1 -1
  51. package/lib/commonjs/domain/openChannelList/types.js.map +1 -1
  52. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js +1 -1
  53. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js.map +1 -1
  54. package/lib/commonjs/fragments/createGroupChannelFragment.js +22 -100
  55. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  56. package/lib/commonjs/fragments/createGroupChannelInviteFragment.js +1 -1
  57. package/lib/commonjs/fragments/createGroupChannelInviteFragment.js.map +1 -1
  58. package/lib/commonjs/fragments/createGroupChannelListFragment.js +8 -13
  59. package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
  60. package/lib/commonjs/fragments/createMessageSearchFragment.js +2 -2
  61. package/lib/commonjs/fragments/createMessageSearchFragment.js.map +1 -1
  62. package/lib/commonjs/fragments/createOpenChannelFragment.js +1 -7
  63. package/lib/commonjs/fragments/createOpenChannelFragment.js.map +1 -1
  64. package/lib/commonjs/fragments/createOpenChannelListFragment.js +2 -1
  65. package/lib/commonjs/fragments/createOpenChannelListFragment.js.map +1 -1
  66. package/lib/commonjs/hooks/useConnection.js +11 -7
  67. package/lib/commonjs/hooks/useConnection.js.map +1 -1
  68. package/lib/commonjs/hooks/useMentionTextInput.js +3 -2
  69. package/lib/commonjs/hooks/useMentionTextInput.js.map +1 -1
  70. package/lib/commonjs/index.js +20 -4
  71. package/lib/commonjs/index.js.map +1 -1
  72. package/lib/commonjs/libs/MentionManager.js +8 -9
  73. package/lib/commonjs/libs/MentionManager.js.map +1 -1
  74. package/lib/commonjs/libs/SBUUtils.js +7 -3
  75. package/lib/commonjs/libs/SBUUtils.js.map +1 -1
  76. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  77. package/lib/commonjs/localization/createBaseStringSet.js +20 -62
  78. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  79. package/lib/module/components/ChannelInput/AttachmentsButton.js +29 -0
  80. package/lib/module/components/ChannelInput/AttachmentsButton.js.map +1 -0
  81. package/lib/module/components/ChannelInput/EditInput.js +10 -18
  82. package/lib/module/components/ChannelInput/EditInput.js.map +1 -1
  83. package/lib/module/components/ChannelInput/SendInput.js +221 -164
  84. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  85. package/lib/module/components/ChannelInput/index.js +5 -3
  86. package/lib/module/components/ChannelInput/index.js.map +1 -1
  87. package/lib/module/components/ChannelMessageList/index.js +28 -28
  88. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  89. package/lib/module/components/ChatFlatList.js +17 -5
  90. package/lib/module/components/ChatFlatList.js.map +1 -1
  91. package/lib/module/components/{MessageRenderer/MessageDateSeparator.js → GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js} +3 -3
  92. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js.map +1 -0
  93. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js +38 -0
  94. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js.map +1 -0
  95. package/lib/module/components/{MessageRenderer/MessageOutgoingStatus.js → GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.js} +12 -15
  96. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.js.map +1 -0
  97. package/lib/module/components/GroupChannelMessageRenderer/index.js +196 -0
  98. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -0
  99. package/lib/module/components/MessageSearchResultItem.js +2 -1
  100. package/lib/module/components/MessageSearchResultItem.js.map +1 -1
  101. package/lib/module/components/OpenChannelMessageRenderer/index.js +16 -10
  102. package/lib/module/components/OpenChannelMessageRenderer/index.js.map +1 -1
  103. package/lib/module/constants.js +0 -5
  104. package/lib/module/constants.js.map +1 -1
  105. package/lib/module/containers/GroupChannelPreviewContainer.js +13 -13
  106. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
  107. package/lib/module/containers/SendbirdUIKitContainer.js +29 -19
  108. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  109. package/lib/module/contexts/SendbirdChatCtx.js +17 -14
  110. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  111. package/lib/module/contexts/UserProfileCtx.js +6 -4
  112. package/lib/module/contexts/UserProfileCtx.js.map +1 -1
  113. package/lib/module/domain/groupChannel/component/GroupChannelInput.js +4 -13
  114. package/lib/module/domain/groupChannel/component/GroupChannelInput.js.map +1 -1
  115. package/lib/module/domain/groupChannel/types.js.map +1 -1
  116. package/lib/module/domain/groupChannelList/component/GroupChannelListList.js +9 -4
  117. package/lib/module/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
  118. package/lib/module/domain/groupChannelList/component/GroupChannelListTypeSelector.js +3 -3
  119. package/lib/module/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -1
  120. package/lib/module/domain/groupChannelList/types.js.map +1 -1
  121. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +11 -10
  122. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  123. package/lib/module/domain/openChannel/component/OpenChannelInput.js +4 -8
  124. package/lib/module/domain/openChannel/component/OpenChannelInput.js.map +1 -1
  125. package/lib/module/domain/openChannel/types.js.map +1 -1
  126. package/lib/module/domain/openChannelList/component/OpenChannelListList.js +3 -1
  127. package/lib/module/domain/openChannelList/component/OpenChannelListList.js.map +1 -1
  128. package/lib/module/domain/openChannelList/types.js.map +1 -1
  129. package/lib/module/fragments/createGroupChannelCreateFragment.js +1 -1
  130. package/lib/module/fragments/createGroupChannelCreateFragment.js.map +1 -1
  131. package/lib/module/fragments/createGroupChannelFragment.js +24 -102
  132. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  133. package/lib/module/fragments/createGroupChannelInviteFragment.js +1 -1
  134. package/lib/module/fragments/createGroupChannelInviteFragment.js.map +1 -1
  135. package/lib/module/fragments/createGroupChannelListFragment.js +8 -13
  136. package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
  137. package/lib/module/fragments/createMessageSearchFragment.js +1 -1
  138. package/lib/module/fragments/createMessageSearchFragment.js.map +1 -1
  139. package/lib/module/fragments/createOpenChannelFragment.js +2 -8
  140. package/lib/module/fragments/createOpenChannelFragment.js.map +1 -1
  141. package/lib/module/fragments/createOpenChannelListFragment.js +2 -1
  142. package/lib/module/fragments/createOpenChannelListFragment.js.map +1 -1
  143. package/lib/module/hooks/useConnection.js +11 -7
  144. package/lib/module/hooks/useConnection.js.map +1 -1
  145. package/lib/module/hooks/useMentionTextInput.js +3 -2
  146. package/lib/module/hooks/useMentionTextInput.js.map +1 -1
  147. package/lib/module/index.js +5 -2
  148. package/lib/module/index.js.map +1 -1
  149. package/lib/module/libs/MentionManager.js +8 -9
  150. package/lib/module/libs/MentionManager.js.map +1 -1
  151. package/lib/module/libs/SBUUtils.js +7 -3
  152. package/lib/module/libs/SBUUtils.js.map +1 -1
  153. package/lib/module/localization/StringSet.type.js.map +1 -1
  154. package/lib/module/localization/createBaseStringSet.js +20 -62
  155. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  156. package/lib/typescript/src/components/ChannelInput/AttachmentsButton.d.ts +6 -0
  157. package/lib/typescript/src/components/ChannelInput/index.d.ts +2 -14
  158. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +2 -4
  159. package/lib/typescript/src/components/ChatFlatList.d.ts +1 -5
  160. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.d.ts +6 -0
  161. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.d.ts +5 -0
  162. package/lib/typescript/src/components/{MessageRenderer/MessageOutgoingStatus.d.ts → GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.d.ts} +3 -1
  163. package/lib/typescript/src/components/{MessageRenderer → GroupChannelMessageRenderer}/index.d.ts +2 -13
  164. package/lib/typescript/src/components/MessageSearchResultItem.d.ts +2 -1
  165. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +1 -1
  166. package/lib/typescript/src/constants.d.ts +0 -5
  167. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +15 -10
  168. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +33 -19
  169. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput.d.ts +1 -1
  170. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +1 -4
  171. package/lib/typescript/src/domain/groupChannel/types.d.ts +2 -9
  172. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListList.d.ts +1 -1
  173. package/lib/typescript/src/domain/groupChannelList/types.d.ts +8 -23
  174. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
  175. package/lib/typescript/src/domain/openChannel/component/OpenChannelInput.d.ts +1 -1
  176. package/lib/typescript/src/domain/openChannel/component/OpenChannelMessageList.d.ts +1 -1
  177. package/lib/typescript/src/domain/openChannel/types.d.ts +2 -2
  178. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListList.d.ts +1 -1
  179. package/lib/typescript/src/domain/openChannelList/types.d.ts +3 -12
  180. package/lib/typescript/src/index.d.ts +4 -1
  181. package/lib/typescript/src/libs/MentionManager.d.ts +4 -5
  182. package/lib/typescript/src/libs/SBUUtils.d.ts +1 -1
  183. package/lib/typescript/src/localization/StringSet.type.d.ts +2 -43
  184. package/package.json +13 -10
  185. package/src/components/ChannelInput/AttachmentsButton.tsx +32 -0
  186. package/src/components/ChannelInput/EditInput.tsx +17 -18
  187. package/src/components/ChannelInput/SendInput.tsx +237 -181
  188. package/src/components/ChannelInput/index.tsx +8 -21
  189. package/src/components/ChannelMessageList/index.tsx +33 -41
  190. package/src/components/ChatFlatList.tsx +39 -13
  191. package/src/components/{MessageRenderer/MessageDateSeparator.tsx → GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.tsx} +7 -5
  192. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.tsx +29 -0
  193. package/src/components/{MessageRenderer/MessageOutgoingStatus.tsx → GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.tsx} +15 -15
  194. package/src/components/GroupChannelMessageRenderer/index.tsx +203 -0
  195. package/src/components/MessageSearchResultItem.tsx +3 -1
  196. package/src/components/OpenChannelMessageRenderer/index.tsx +10 -5
  197. package/src/constants.ts +0 -5
  198. package/src/containers/GroupChannelPreviewContainer.tsx +14 -13
  199. package/src/containers/SendbirdUIKitContainer.tsx +98 -90
  200. package/src/contexts/SendbirdChatCtx.tsx +49 -36
  201. package/src/contexts/UserProfileCtx.tsx +10 -5
  202. package/src/domain/groupChannel/component/GroupChannelInput.tsx +1 -10
  203. package/src/domain/groupChannel/types.ts +1 -14
  204. package/src/domain/groupChannelList/component/GroupChannelListList.tsx +8 -4
  205. package/src/domain/groupChannelList/component/GroupChannelListTypeSelector.tsx +3 -3
  206. package/src/domain/groupChannelList/types.ts +8 -30
  207. package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +22 -10
  208. package/src/domain/openChannel/component/OpenChannelInput.tsx +1 -5
  209. package/src/domain/openChannel/types.ts +1 -1
  210. package/src/domain/openChannelList/component/OpenChannelListList.tsx +2 -1
  211. package/src/domain/openChannelList/types.ts +6 -13
  212. package/src/fragments/createGroupChannelCreateFragment.tsx +1 -1
  213. package/src/fragments/createGroupChannelFragment.tsx +21 -97
  214. package/src/fragments/createGroupChannelInviteFragment.tsx +1 -1
  215. package/src/fragments/createGroupChannelListFragment.tsx +9 -15
  216. package/src/fragments/createMessageSearchFragment.tsx +1 -1
  217. package/src/fragments/createOpenChannelFragment.tsx +2 -3
  218. package/src/fragments/createOpenChannelListFragment.tsx +2 -1
  219. package/src/hooks/useConnection.ts +9 -7
  220. package/src/hooks/useMentionTextInput.ts +7 -2
  221. package/src/index.ts +4 -2
  222. package/src/libs/MentionManager.tsx +8 -7
  223. package/src/libs/SBUUtils.ts +7 -3
  224. package/src/localization/StringSet.type.ts +2 -46
  225. package/src/localization/createBaseStringSet.ts +19 -71
  226. package/src/version.ts +1 -1
  227. package/lib/commonjs/components/MessageRenderer/AdminMessage/index.js +0 -46
  228. package/lib/commonjs/components/MessageRenderer/AdminMessage/index.js.map +0 -1
  229. package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js +0 -73
  230. package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +0 -1
  231. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js +0 -93
  232. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +0 -1
  233. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +0 -132
  234. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +0 -1
  235. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js +0 -24
  236. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js.map +0 -1
  237. package/lib/commonjs/components/MessageRenderer/MessageContainer.js +0 -27
  238. package/lib/commonjs/components/MessageRenderer/MessageContainer.js.map +0 -1
  239. package/lib/commonjs/components/MessageRenderer/MessageDateSeparator.js.map +0 -1
  240. package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js +0 -41
  241. package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js.map +0 -1
  242. package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js +0 -41
  243. package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js.map +0 -1
  244. package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js.map +0 -1
  245. package/lib/commonjs/components/MessageRenderer/MessageTime.js.map +0 -1
  246. package/lib/commonjs/components/MessageRenderer/UnknownMessage/index.js +0 -46
  247. package/lib/commonjs/components/MessageRenderer/UnknownMessage/index.js.map +0 -1
  248. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js +0 -113
  249. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +0 -1
  250. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +0 -200
  251. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +0 -1
  252. package/lib/commonjs/components/MessageRenderer/UserMessage/index.js +0 -22
  253. package/lib/commonjs/components/MessageRenderer/UserMessage/index.js.map +0 -1
  254. package/lib/commonjs/components/MessageRenderer/index.js +0 -186
  255. package/lib/commonjs/components/MessageRenderer/index.js.map +0 -1
  256. package/lib/module/components/MessageRenderer/AdminMessage/index.js +0 -38
  257. package/lib/module/components/MessageRenderer/AdminMessage/index.js.map +0 -1
  258. package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js +0 -65
  259. package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +0 -1
  260. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js +0 -84
  261. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +0 -1
  262. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +0 -123
  263. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +0 -1
  264. package/lib/module/components/MessageRenderer/FileMessage/index.js +0 -16
  265. package/lib/module/components/MessageRenderer/FileMessage/index.js.map +0 -1
  266. package/lib/module/components/MessageRenderer/MessageContainer.js +0 -19
  267. package/lib/module/components/MessageRenderer/MessageContainer.js.map +0 -1
  268. package/lib/module/components/MessageRenderer/MessageDateSeparator.js.map +0 -1
  269. package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js +0 -33
  270. package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js.map +0 -1
  271. package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js +0 -33
  272. package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js.map +0 -1
  273. package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js.map +0 -1
  274. package/lib/module/components/MessageRenderer/MessageTime.js +0 -26
  275. package/lib/module/components/MessageRenderer/MessageTime.js.map +0 -1
  276. package/lib/module/components/MessageRenderer/UnknownMessage/index.js +0 -38
  277. package/lib/module/components/MessageRenderer/UnknownMessage/index.js.map +0 -1
  278. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js +0 -105
  279. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +0 -1
  280. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +0 -190
  281. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +0 -1
  282. package/lib/module/components/MessageRenderer/UserMessage/index.js +0 -14
  283. package/lib/module/components/MessageRenderer/UserMessage/index.js.map +0 -1
  284. package/lib/module/components/MessageRenderer/index.js +0 -178
  285. package/lib/module/components/MessageRenderer/index.js.map +0 -1
  286. package/lib/typescript/src/components/MessageRenderer/AdminMessage/index.d.ts +0 -5
  287. package/lib/typescript/src/components/MessageRenderer/FileMessage/BaseFileMessage.d.ts +0 -6
  288. package/lib/typescript/src/components/MessageRenderer/FileMessage/ImageFileMessage.d.ts +0 -3
  289. package/lib/typescript/src/components/MessageRenderer/FileMessage/VideoFileMessage.d.ts +0 -3
  290. package/lib/typescript/src/components/MessageRenderer/FileMessage/index.d.ts +0 -15
  291. package/lib/typescript/src/components/MessageRenderer/MessageContainer.d.ts +0 -3
  292. package/lib/typescript/src/components/MessageRenderer/MessageDateSeparator.d.ts +0 -7
  293. package/lib/typescript/src/components/MessageRenderer/MessageIncomingAvatar.d.ts +0 -7
  294. package/lib/typescript/src/components/MessageRenderer/MessageIncomingSenderName.d.ts +0 -7
  295. package/lib/typescript/src/components/MessageRenderer/MessageTime.d.ts +0 -9
  296. package/lib/typescript/src/components/MessageRenderer/UnknownMessage/index.d.ts +0 -4
  297. package/lib/typescript/src/components/MessageRenderer/UserMessage/BaseUserMessage.d.ts +0 -3
  298. package/lib/typescript/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.d.ts +0 -7
  299. package/lib/typescript/src/components/MessageRenderer/UserMessage/index.d.ts +0 -9
  300. package/src/components/MessageRenderer/AdminMessage/index.tsx +0 -40
  301. package/src/components/MessageRenderer/FileMessage/BaseFileMessage.tsx +0 -51
  302. package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +0 -98
  303. package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +0 -113
  304. package/src/components/MessageRenderer/FileMessage/index.tsx +0 -20
  305. package/src/components/MessageRenderer/MessageContainer.tsx +0 -17
  306. package/src/components/MessageRenderer/MessageIncomingAvatar.tsx +0 -34
  307. package/src/components/MessageRenderer/MessageIncomingSenderName.tsx +0 -36
  308. package/src/components/MessageRenderer/MessageTime.tsx +0 -28
  309. package/src/components/MessageRenderer/UnknownMessage/index.tsx +0 -34
  310. package/src/components/MessageRenderer/UserMessage/BaseUserMessage.tsx +0 -102
  311. package/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.tsx +0 -188
  312. package/src/components/MessageRenderer/UserMessage/index.tsx +0 -24
  313. package/src/components/MessageRenderer/index.tsx +0 -198
@@ -32,21 +32,20 @@ type Props = {
32
32
  onLongPress: () => void;
33
33
  };
34
34
  const GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props) => {
35
- const { currentUser, sdk, features, mentionManager } = useSendbirdChat();
35
+ const { currentUser, sdk, sbOptions, mentionManager } = useSendbirdChat();
36
36
  const { STRINGS } = useLocalization();
37
37
  const { colors } = useUIKitTheme();
38
38
 
39
39
  const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);
40
40
 
41
- if (features.channelListTypingIndicatorEnabled) {
42
- const handlerId = useUniqHandlerId('GroupChannelPreviewContainer_TypingIndicator');
43
- useChannelHandler(sdk, handlerId, {
44
- onTypingStatusUpdated(eventChannel) {
45
- if (isDifferentChannel(channel, eventChannel)) return;
46
- setTypingUsers(eventChannel.getTypingUsers());
47
- },
48
- });
49
- }
41
+ const handlerId = useUniqHandlerId('GroupChannelPreviewContainer_TypingIndicator');
42
+ useChannelHandler(sdk, handlerId, {
43
+ onTypingStatusUpdated(eventChannel) {
44
+ if (isDifferentChannel(channel, eventChannel)) return;
45
+ if (!sbOptions.uikit.groupChannel.channelList.enableTypingIndicator) return;
46
+ setTypingUsers(eventChannel.getTypingUsers());
47
+ },
48
+ });
50
49
 
51
50
  const outgoingStatus = useMessageOutgoingStatus(sdk, channel, channel.lastMessage);
52
51
 
@@ -62,8 +61,8 @@ const GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props)
62
61
  });
63
62
 
64
63
  const titleCaptionIcon = useIIFE(() => {
65
- if (!channel.lastMessage) return undefined;
66
- if (!features.channelListMessageReceiptStatusEnabled) return undefined;
64
+ if (!channel.lastMessage || channel.isEphemeral) return undefined;
65
+ if (!sbOptions.uikit.groupChannel.channelList.enableMessageReceiptStatus) return undefined;
67
66
  if (!isMyMessage(channel.lastMessage, currentUser?.userId)) return undefined;
68
67
 
69
68
  if (outgoingStatus === 'PENDING') {
@@ -89,6 +88,8 @@ const GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props)
89
88
  return undefined;
90
89
  });
91
90
 
91
+ const unreadMessageCount = useIIFE(() => (channel.isEphemeral ? 0 : channel.unreadMessageCount));
92
+
92
93
  return (
93
94
  <Pressable delayLongPress={DEFAULT_LONG_PRESS_DELAY} onPress={onPress} onLongPress={onLongPress}>
94
95
  <GroupChannelPreview
@@ -99,7 +100,7 @@ const GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props)
99
100
  titleCaption={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel)}
100
101
  body={bodyText}
101
102
  bodyIcon={fileIcon}
102
- badgeCount={channel.unreadMessageCount}
103
+ badgeCount={unreadMessageCount}
103
104
  mentioned={channel.unreadMentionCount > 0}
104
105
  mentionTrigger={mentionManager.config.trigger}
105
106
  memberCount={channel.memberCount > 2 ? channel.memberCount : undefined}
@@ -14,7 +14,9 @@ import {
14
14
  ToastProvider,
15
15
  UIKitThemeProvider,
16
16
  } from '@sendbird/uikit-react-native-foundation';
17
+ import { SBUConfig, UIKitConfigProvider } from '@sendbird/uikit-tools';
17
18
  import type {
19
+ PartialDeep,
18
20
  SendbirdChatSDK,
19
21
  SendbirdGroupChannel,
20
22
  SendbirdGroupChannelCreateParams,
@@ -26,7 +28,7 @@ import { NOOP, useIsFirstMount } from '@sendbird/uikit-utils';
26
28
  import { LocalizationContext, LocalizationProvider } from '../contexts/LocalizationCtx';
27
29
  import { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';
28
30
  import { ReactionProvider } from '../contexts/ReactionCtx';
29
- import type { UIKitFeaturesInSendbirdChatContext } from '../contexts/SendbirdChatCtx';
31
+ import type { ChatRelatedFeaturesInUIKit } from '../contexts/SendbirdChatCtx';
30
32
  import { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';
31
33
  import { UserProfileProvider } from '../contexts/UserProfileCtx';
32
34
  import EmojiManager from '../libs/EmojiManager';
@@ -49,18 +51,14 @@ import VERSION from '../version';
49
51
  import InternalErrorBoundaryContainer from './InternalErrorBoundaryContainer';
50
52
 
51
53
  const NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');
52
-
54
+ type UnimplementedFeatures = 'enableVoiceMessage' | 'threadReplySelectType' | 'replyType';
53
55
  export const SendbirdUIKit = Object.freeze({
54
56
  VERSION,
55
57
  PLATFORM: Platform.OS.toLowerCase(),
56
58
  DEFAULT: {
57
59
  AUTO_PUSH_TOKEN_REGISTRATION: true,
58
- CHANNEL_LIST_TYPING_INDICATOR: false,
59
- CHANNEL_LIST_MESSAGE_RECEIPT_STATUS: false,
60
60
  USE_USER_ID_FOR_NICKNAME: false,
61
- USER_MENTION: false,
62
61
  IMAGE_COMPRESSION: true,
63
- MESSAGE_SEARCH: false,
64
62
  },
65
63
  });
66
64
 
@@ -72,10 +70,17 @@ export type SendbirdUIKitContainerProps = React.PropsWithChildren<{
72
70
  clipboard: ClipboardServiceInterface;
73
71
  media: MediaServiceInterface;
74
72
  };
75
- chatOptions?: {
76
- localCacheStorage?: LocalCacheStorage;
73
+ chatOptions: {
74
+ localCacheStorage: LocalCacheStorage;
77
75
  onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;
78
- } & Partial<UIKitFeaturesInSendbirdChatContext>;
76
+ } & Partial<ChatRelatedFeaturesInUIKit>;
77
+ uikitOptions?: PartialDeep<{
78
+ common: SBUConfig['common'];
79
+ groupChannel: Omit<SBUConfig['groupChannel']['channel'], UnimplementedFeatures>;
80
+ groupChannelList: SBUConfig['groupChannel']['channelList'];
81
+ groupChannelSettings: SBUConfig['groupChannel']['setting'];
82
+ openChannel: SBUConfig['openChannel']['channel'];
83
+ }>;
79
84
  localization?: {
80
85
  stringSet?: StringSet;
81
86
  };
@@ -109,6 +114,7 @@ const SendbirdUIKitContainer = ({
109
114
  children,
110
115
  appId,
111
116
  chatOptions,
117
+ uikitOptions,
112
118
  platformServices,
113
119
  localization,
114
120
  styles,
@@ -118,17 +124,18 @@ const SendbirdUIKitContainer = ({
118
124
  userMention,
119
125
  imageCompression,
120
126
  }: SendbirdUIKitContainerProps) => {
127
+ if (!chatOptions.localCacheStorage) {
128
+ throw new Error('SendbirdUIKitContainer: chatOptions.localCacheStorage is required');
129
+ }
130
+
121
131
  const defaultStringSet = localization?.stringSet ?? StringSetEn;
122
132
 
123
133
  const isFirstMount = useIsFirstMount();
124
134
  const unsubscribes = useRef<Array<() => void>>([]);
125
- const internalStorage = useMemo(
126
- () => (chatOptions?.localCacheStorage ? new InternalLocalCacheStorage(chatOptions.localCacheStorage) : undefined),
127
- [chatOptions?.localCacheStorage],
128
- );
129
135
 
136
+ const [internalStorage] = useState(() => new InternalLocalCacheStorage(chatOptions.localCacheStorage));
130
137
  const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(() => {
131
- const sendbird = initializeSendbird(appId, internalStorage, chatOptions?.onInitialized);
138
+ const sendbird = initializeSendbird(appId, internalStorage, chatOptions.onInitialized);
132
139
  unsubscribes.current = sendbird.unsubscribes;
133
140
  return sendbird.chatSDK;
134
141
  });
@@ -143,13 +150,8 @@ const SendbirdUIKitContainer = ({
143
150
  delimiter: MentionConfig.DEFAULT.DELIMITER,
144
151
  trigger: MentionConfig.DEFAULT.TRIGGER,
145
152
  });
146
- return new MentionManager(config, chatOptions?.enableUserMention ?? SendbirdUIKit.DEFAULT.USER_MENTION);
147
- }, [
148
- chatOptions?.enableUserMention,
149
- userMention?.mentionLimit,
150
- userMention?.suggestionLimit,
151
- userMention?.debounceMills,
152
- ]);
153
+ return new MentionManager(config);
154
+ }, [userMention?.mentionLimit, userMention?.suggestionLimit, userMention?.debounceMills]);
153
155
 
154
156
  const imageCompressionConfig = useMemo(() => {
155
157
  return new ImageCompressionConfig({
@@ -161,7 +163,7 @@ const SendbirdUIKitContainer = ({
161
163
 
162
164
  useLayoutEffect(() => {
163
165
  if (!isFirstMount) {
164
- const sendbird = initializeSendbird(appId, internalStorage, chatOptions?.onInitialized);
166
+ const sendbird = initializeSendbird(appId, internalStorage, chatOptions.onInitialized);
165
167
  setSdkInstance(sendbird.chatSDK);
166
168
  unsubscribes.current = sendbird.unsubscribes;
167
169
  }
@@ -187,75 +189,81 @@ const SendbirdUIKitContainer = ({
187
189
 
188
190
  return (
189
191
  <SafeAreaProvider>
190
- <SendbirdChatProvider
191
- sdkInstance={sdkInstance}
192
- emojiManager={emojiManager}
193
- mentionManager={mentionManager}
194
- imageCompressionConfig={imageCompressionConfig}
195
- enableAutoPushTokenRegistration={
196
- chatOptions?.enableAutoPushTokenRegistration ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION
197
- }
198
- enableChannelListTypingIndicator={
199
- chatOptions?.enableChannelListTypingIndicator ?? SendbirdUIKit.DEFAULT.CHANNEL_LIST_TYPING_INDICATOR
200
- }
201
- enableChannelListMessageReceiptStatus={
202
- chatOptions?.enableChannelListMessageReceiptStatus ??
203
- SendbirdUIKit.DEFAULT.CHANNEL_LIST_MESSAGE_RECEIPT_STATUS
204
- }
205
- enableUseUserIdForNickname={
206
- chatOptions?.enableUseUserIdForNickname ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME
207
- }
208
- enableUserMention={chatOptions?.enableUserMention ?? SendbirdUIKit.DEFAULT.USER_MENTION}
209
- enableImageCompression={chatOptions?.enableImageCompression ?? SendbirdUIKit.DEFAULT.IMAGE_COMPRESSION}
210
- enableMessageSearch={chatOptions?.enableMessageSearch ?? SendbirdUIKit.DEFAULT.MESSAGE_SEARCH}
192
+ <UIKitConfigProvider
193
+ storage={internalStorage}
194
+ localConfigs={{
195
+ common: uikitOptions?.common,
196
+ groupChannel: {
197
+ channel: uikitOptions?.groupChannel,
198
+ channelList: uikitOptions?.groupChannelList,
199
+ setting: uikitOptions?.groupChannelSettings,
200
+ },
201
+ openChannel: {
202
+ channel: uikitOptions?.openChannel,
203
+ },
204
+ }}
211
205
  >
212
- <LocalizationProvider stringSet={defaultStringSet}>
213
- <PlatformServiceProvider
214
- fileService={platformServices.file}
215
- notificationService={platformServices.notification}
216
- clipboardService={platformServices.clipboard}
217
- mediaService={platformServices.media}
218
- >
219
- <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>
220
- <HeaderStyleProvider
221
- HeaderComponent={styles?.HeaderComponent ?? Header}
222
- defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}
223
- statusBarTranslucent={styles?.statusBarTranslucent ?? true}
224
- >
225
- <ToastProvider dismissTimeout={toast?.dismissTimeout}>
226
- <UserProfileProvider
227
- onCreateChannel={userProfile?.onCreateChannel}
228
- onBeforeCreateChannel={userProfile?.onBeforeCreateChannel}
229
- statusBarTranslucent={styles?.statusBarTranslucent ?? true}
230
- >
231
- <ReactionProvider>
232
- <LocalizationContext.Consumer>
233
- {(value) => {
234
- const STRINGS = value?.STRINGS || defaultStringSet;
235
- return (
236
- <DialogProvider
237
- defaultLabels={{
238
- alert: { ok: STRINGS.DIALOG.ALERT_DEFAULT_OK },
239
- prompt: {
240
- ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,
241
- cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,
242
- placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,
243
- },
244
- }}
245
- >
246
- {renderChildren()}
247
- </DialogProvider>
248
- );
249
- }}
250
- </LocalizationContext.Consumer>
251
- </ReactionProvider>
252
- </UserProfileProvider>
253
- </ToastProvider>
254
- </HeaderStyleProvider>
255
- </UIKitThemeProvider>
256
- </PlatformServiceProvider>
257
- </LocalizationProvider>
258
- </SendbirdChatProvider>
206
+ <SendbirdChatProvider
207
+ sdkInstance={sdkInstance}
208
+ emojiManager={emojiManager}
209
+ mentionManager={mentionManager}
210
+ imageCompressionConfig={imageCompressionConfig}
211
+ enableAutoPushTokenRegistration={
212
+ chatOptions.enableAutoPushTokenRegistration ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION
213
+ }
214
+ enableUseUserIdForNickname={
215
+ chatOptions.enableUseUserIdForNickname ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME
216
+ }
217
+ enableImageCompression={chatOptions.enableImageCompression ?? SendbirdUIKit.DEFAULT.IMAGE_COMPRESSION}
218
+ >
219
+ <LocalizationProvider stringSet={defaultStringSet}>
220
+ <PlatformServiceProvider
221
+ fileService={platformServices.file}
222
+ notificationService={platformServices.notification}
223
+ clipboardService={platformServices.clipboard}
224
+ mediaService={platformServices.media}
225
+ >
226
+ <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>
227
+ <HeaderStyleProvider
228
+ HeaderComponent={styles?.HeaderComponent ?? Header}
229
+ defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}
230
+ statusBarTranslucent={styles?.statusBarTranslucent ?? true}
231
+ >
232
+ <ToastProvider dismissTimeout={toast?.dismissTimeout}>
233
+ <UserProfileProvider
234
+ onCreateChannel={userProfile?.onCreateChannel}
235
+ onBeforeCreateChannel={userProfile?.onBeforeCreateChannel}
236
+ statusBarTranslucent={styles?.statusBarTranslucent ?? true}
237
+ >
238
+ <ReactionProvider>
239
+ <LocalizationContext.Consumer>
240
+ {(value) => {
241
+ const STRINGS = value?.STRINGS || defaultStringSet;
242
+ return (
243
+ <DialogProvider
244
+ defaultLabels={{
245
+ alert: { ok: STRINGS.DIALOG.ALERT_DEFAULT_OK },
246
+ prompt: {
247
+ ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,
248
+ cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,
249
+ placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,
250
+ },
251
+ }}
252
+ >
253
+ {renderChildren()}
254
+ </DialogProvider>
255
+ );
256
+ }}
257
+ </LocalizationContext.Consumer>
258
+ </ReactionProvider>
259
+ </UserProfileProvider>
260
+ </ToastProvider>
261
+ </HeaderStyleProvider>
262
+ </UIKitThemeProvider>
263
+ </PlatformServiceProvider>
264
+ </LocalizationProvider>
265
+ </SendbirdChatProvider>
266
+ </UIKitConfigProvider>
259
267
  </SafeAreaProvider>
260
268
  );
261
269
  };
@@ -1,6 +1,7 @@
1
1
  import React, { useCallback, useState } from 'react';
2
2
 
3
3
  import { useAppFeatures } from '@sendbird/uikit-chat-hooks';
4
+ import { SBUConfig, useUIKitConfig } from '@sendbird/uikit-tools';
4
5
  import type {
5
6
  SendbirdChatSDK,
6
7
  SendbirdGroupChannel,
@@ -14,17 +15,13 @@ import type ImageCompressionConfig from '../libs/ImageCompressionConfig';
14
15
  import type MentionManager from '../libs/MentionManager';
15
16
  import type { FileType } from '../platform/types';
16
17
 
17
- export interface UIKitFeaturesInSendbirdChatContext {
18
+ export interface ChatRelatedFeaturesInUIKit {
18
19
  enableAutoPushTokenRegistration: boolean;
19
- enableChannelListTypingIndicator: boolean;
20
- enableChannelListMessageReceiptStatus: boolean;
21
20
  enableUseUserIdForNickname: boolean;
22
- enableUserMention: boolean;
23
21
  enableImageCompression: boolean;
24
- enableMessageSearch: boolean;
25
22
  }
26
23
 
27
- interface Props extends UIKitFeaturesInSendbirdChatContext, React.PropsWithChildren {
24
+ interface Props extends ChatRelatedFeaturesInUIKit, React.PropsWithChildren {
28
25
  sdkInstance: SendbirdChatSDK;
29
26
  emojiManager: EmojiManager;
30
27
  mentionManager: MentionManager;
@@ -43,23 +40,40 @@ export type SendbirdChatContextType = {
43
40
  updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;
44
41
  markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;
45
42
 
46
- features: {
47
- // RN UIKit features
48
- autoPushTokenRegistrationEnabled: boolean;
49
-
50
- // UIKit features
51
- channelListTypingIndicatorEnabled: boolean;
52
- channelListMessageReceiptStatusEnabled: boolean;
53
- useUserIdForNicknameEnabled: boolean;
54
- userMentionEnabled: boolean;
55
- imageCompressionEnabled: boolean;
56
- messageSearchEnabled: boolean;
57
-
58
- // Sendbird application features
59
- deliveryReceiptEnabled: boolean;
60
- broadcastChannelEnabled: boolean;
61
- superGroupChannelEnabled: boolean;
62
- reactionEnabled: boolean;
43
+ sbOptions: {
44
+ // UIKit options
45
+ uikit: SBUConfig;
46
+ uikitWithAppInfo: {
47
+ groupChannel: {
48
+ channel: {
49
+ enableReactions: boolean;
50
+ enableOgtag: boolean;
51
+ };
52
+ setting: {
53
+ enableMessageSearch: boolean;
54
+ };
55
+ };
56
+ openChannel: {
57
+ channel: {
58
+ enableOgtag: boolean;
59
+ };
60
+ };
61
+ };
62
+
63
+ // Chat related options in UIKit
64
+ chat: {
65
+ imageCompressionEnabled: boolean;
66
+ useUserIdForNicknameEnabled: boolean;
67
+ autoPushTokenRegistrationEnabled: boolean; // RN only
68
+ };
69
+
70
+ // Sendbird application options
71
+ appInfo: {
72
+ deliveryReceiptEnabled: boolean;
73
+ broadcastChannelEnabled: boolean;
74
+ superGroupChannelEnabled: boolean;
75
+ reactionEnabled: boolean;
76
+ };
63
77
  };
64
78
  };
65
79
 
@@ -71,16 +85,13 @@ export const SendbirdChatProvider = ({
71
85
  mentionManager,
72
86
  imageCompressionConfig,
73
87
  enableAutoPushTokenRegistration,
74
- enableChannelListMessageReceiptStatus,
75
- enableChannelListTypingIndicator,
76
88
  enableUseUserIdForNickname,
77
- enableUserMention,
78
89
  enableImageCompression,
79
- enableMessageSearch,
80
90
  }: Props) => {
81
91
  const [currentUser, _setCurrentUser] = useState<SendbirdUser>();
82
92
  const forceUpdate = useForceUpdate();
83
93
  const appFeatures = useAppFeatures(sdkInstance);
94
+ const { configs, configsWithAppAttr } = useUIKitConfig();
84
95
 
85
96
  const setCurrentUser: SendbirdChatContextType['setCurrentUser'] = useCallback((user) => {
86
97
  // NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser
@@ -144,15 +155,17 @@ export const SendbirdChatProvider = ({
144
155
  updateCurrentUserInfo,
145
156
  markAsDeliveredWithChannel,
146
157
 
147
- features: {
148
- ...appFeatures,
149
- autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,
150
- channelListTypingIndicatorEnabled: enableChannelListTypingIndicator,
151
- channelListMessageReceiptStatusEnabled: enableChannelListMessageReceiptStatus,
152
- useUserIdForNicknameEnabled: enableUseUserIdForNickname,
153
- userMentionEnabled: enableUserMention,
154
- imageCompressionEnabled: enableImageCompression,
155
- messageSearchEnabled: enableMessageSearch,
158
+ // TODO: Options should be moved to the common area at the higher level to be passed to the context of each product.
159
+ // For example, common -> chat context, common -> calls context
160
+ sbOptions: {
161
+ appInfo: appFeatures,
162
+ uikit: configs,
163
+ uikitWithAppInfo: configsWithAppAttr(sdkInstance),
164
+ chat: {
165
+ autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,
166
+ useUserIdForNicknameEnabled: enableUseUserIdForNickname,
167
+ imageCompressionEnabled: enableImageCompression,
168
+ },
156
169
  },
157
170
  };
158
171
 
@@ -62,11 +62,16 @@ export const UserProfileProvider = ({
62
62
  const [visible, setVisible] = useState(false);
63
63
  const [hideMessageButton, setHideMessageButton] = useState(false);
64
64
 
65
- const show: UserProfileContextType['show'] = useCallback((user, options) => {
66
- setUser(user);
67
- setVisible(true);
68
- setHideMessageButton(Boolean(options?.hideMessageButton));
69
- }, []);
65
+ const show: UserProfileContextType['show'] = useCallback(
66
+ (user, options) => {
67
+ if (chatContext.sbOptions.uikit.common.enableUsingDefaultUserProfile) {
68
+ setUser(user);
69
+ setVisible(true);
70
+ setHideMessageButton(Boolean(options?.hideMessageButton));
71
+ }
72
+ },
73
+ [chatContext.sbOptions.uikit.common.enableUsingDefaultUserProfile],
74
+ );
70
75
 
71
76
  const hide: UserProfileContextType['hide'] = useCallback(() => {
72
77
  setVisible(false);
@@ -25,16 +25,7 @@ const GroupChannelInput = (props: GroupChannelProps['Input']) => {
25
25
  inputFrozen={chatAvailableState.frozen}
26
26
  inputDisabled={chatAvailableState.disabled}
27
27
  keyboardAvoidOffset={keyboardAvoidOffset}
28
- shouldRenderInput={props.shouldRenderInput}
29
- onPressSendUserMessage={props.onPressSendUserMessage}
30
- onPressSendFileMessage={props.onPressSendFileMessage}
31
- onPressUpdateUserMessage={props.onPressUpdateUserMessage}
32
- onPressUpdateFileMessage={props.onPressUpdateFileMessage}
33
- SuggestedMentionList={props.SuggestedMentionList}
34
- onSendFileMessage={props.onSendFileMessage}
35
- onSendUserMessage={props.onSendUserMessage}
36
- onUpdateFileMessage={props.onUpdateFileMessage}
37
- onUpdateUserMessage={props.onUpdateUserMessage}
28
+ {...props}
38
29
  />
39
30
  );
40
31
  };
@@ -43,12 +43,8 @@ export interface GroupChannelProps {
43
43
  flatListProps?: GroupChannelProps['MessageList']['flatListProps'];
44
44
  sortComparator?: UseGroupChannelMessagesOptions['sortComparator'];
45
45
  collectionCreator?: UseGroupChannelMessagesOptions['collectionCreator'];
46
- queryCreator?: UseGroupChannelMessagesOptions['queryCreator'];
47
46
 
48
47
  searchItem?: GroupChannelProps['MessageList']['searchItem'];
49
-
50
- /** @deprecated Please use `onPressMediaMessage` instead **/
51
- onPressImageMessage?: GroupChannelProps['MessageList']['onPressImageMessage'];
52
48
  };
53
49
  Header: {
54
50
  shouldHideRight: () => boolean;
@@ -73,16 +69,10 @@ export interface GroupChannelProps {
73
69
  | 'renderNewMessagesButton'
74
70
  | 'renderScrollToBottomButton'
75
71
  | 'flatListProps'
76
- | 'onPressImageMessage'
77
72
  | 'hasNext'
78
73
  | 'searchItem'
79
74
  > & {
80
75
  onResetMessageList: (callback?: () => void) => void;
81
-
82
- /** @deprecated Please use `newMessages` instead */
83
- newMessagesFromMembers: SendbirdMessage[];
84
- /** @deprecated Please use `newMessages` instead */
85
- nextMessages: SendbirdMessage[];
86
76
  };
87
77
  Input: Pick<
88
78
  ChannelInputProps,
@@ -92,10 +82,7 @@ export interface GroupChannelProps {
92
82
  | 'onPressUpdateUserMessage'
93
83
  | 'onPressUpdateFileMessage'
94
84
  | 'SuggestedMentionList'
95
- | 'onSendFileMessage'
96
- | 'onSendUserMessage'
97
- | 'onUpdateFileMessage'
98
- | 'onUpdateUserMessage'
85
+ | 'AttachmentsButton'
99
86
  >;
100
87
 
101
88
  SuggestedMentionList: SuggestedMentionListProps;
@@ -1,4 +1,4 @@
1
- import React, { useCallback } from 'react';
1
+ import React from 'react';
2
2
  import { FlatList, ListRenderItem } from 'react-native';
3
3
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
4
4
 
@@ -10,6 +10,7 @@ import { useLocalization, useSendbirdChat } from '../../../hooks/useContext';
10
10
  import type { GroupChannelListProps } from '../types';
11
11
 
12
12
  const GroupChannelListList = ({
13
+ onPressChannel,
13
14
  renderGroupChannelPreview,
14
15
  groupChannels,
15
16
  onLoadNext,
@@ -55,9 +56,12 @@ const GroupChannelListList = ({
55
56
  openMenu(menuItem);
56
57
  });
57
58
 
58
- const renderItem: ListRenderItem<SendbirdGroupChannel> = useCallback(
59
- ({ item }) => renderGroupChannelPreview?.(item, () => onLongPress(item)),
60
- [renderGroupChannelPreview, onLongPress],
59
+ const renderItem: ListRenderItem<SendbirdGroupChannel> = useFreshCallback(({ item }) =>
60
+ renderGroupChannelPreview?.({
61
+ channel: item,
62
+ onPress: () => onPressChannel(item),
63
+ onLongPress: () => onLongPress(item),
64
+ }),
61
65
  );
62
66
 
63
67
  const { left, right } = useSafeAreaInsets();
@@ -25,7 +25,7 @@ const STATUS_BAR_TOP_INSET_AS: 'margin' | 'padding' = Platform.select({ android:
25
25
  const GroupChannelListTypeSelector = ({ skipTypeSelection, onSelectType }: GroupChannelListProps['TypeSelector']) => {
26
26
  const { statusBarTranslucent, HeaderComponent } = useHeaderStyle();
27
27
  const { colors } = useUIKitTheme();
28
- const { features } = useSendbirdChat();
28
+ const { sbOptions } = useSendbirdChat();
29
29
  const typeSelector = useContext(GroupChannelListContexts.TypeSelector);
30
30
  const { visible, hide } = typeSelector;
31
31
 
@@ -50,11 +50,11 @@ const GroupChannelListTypeSelector = ({ skipTypeSelection, onSelectType }: Group
50
50
  >
51
51
  <View style={styles.buttonArea}>
52
52
  {TYPES.map((type) => {
53
- if (type === 'SUPER_GROUP' && !features.superGroupChannelEnabled) {
53
+ if (type === 'SUPER_GROUP' && !sbOptions.appInfo.superGroupChannelEnabled) {
54
54
  return null;
55
55
  }
56
56
 
57
- if (type === 'BROADCAST' && !features.broadcastChannelEnabled) {
57
+ if (type === 'BROADCAST' && !sbOptions.appInfo.broadcastChannelEnabled) {
58
58
  return null;
59
59
  }
60
60
 
@@ -8,52 +8,30 @@ import type { SendbirdGroupChannel } from '@sendbird/uikit-utils';
8
8
  import type { CommonComponent } from '../../types';
9
9
 
10
10
  export interface GroupChannelListProps {
11
- /** Props for `GroupChannelListFragment` **/
12
11
  Fragment: {
13
- /** Navigate to GroupChannelFragment **/
14
- onPressChannel: (channel: SendbirdGroupChannel) => void;
15
- /** Navigate to GroupChannelCreateFragment **/
12
+ onPressChannel: GroupChannelListProps['List']['onPressChannel'];
16
13
  onPressCreateChannel: (channelType: GroupChannelType) => void;
17
- /** Method to render GroupChannel preview **/
18
- renderGroupChannelPreview?: (
19
- channel: SendbirdGroupChannel,
20
- onLongPressChannel: () => void,
21
- ) => React.ReactElement | null;
22
- /** Skip type selection, When this is set to true 'channelType' only receive 'GROUP' type **/
14
+ renderGroupChannelPreview?: GroupChannelListProps['List']['renderGroupChannelPreview'];
23
15
  skipTypeSelection?: boolean;
24
- /** Custom Query creator for channels query **/
25
- queryCreator?: UseGroupChannelListOptions['queryCreator'];
26
- /** Custom Collection creator for group channel collection **/
27
16
  collectionCreator?: UseGroupChannelListOptions['collectionCreator'];
28
- /** FlatList props for GroupChannelList.List **/
29
17
  flatListProps?: GroupChannelListProps['List']['flatListProps'];
30
- /** Action menu item creator for onLongPress **/
31
18
  menuItemCreator?: GroupChannelListProps['List']['menuItemCreator'];
32
19
  };
33
- /** Props for `GroupChannelListModule.Header` **/
34
20
  Header: {};
35
- /** Props for `GroupChannelListModule.List` **/
36
21
  List: {
37
- /** GroupChannels from SendbirdChat SDK **/
22
+ onPressChannel: (channel: SendbirdGroupChannel) => void;
38
23
  groupChannels: SendbirdGroupChannel[];
39
- /** Method to render GroupChannel preview **/
40
- renderGroupChannelPreview: (
41
- // FIXME/BREAKING: Changed to props object
42
- channel: SendbirdGroupChannel,
43
- onLongPressChannel: () => void,
44
- ) => React.ReactElement | null;
45
- /** Method to load more data, called with onEndReached of FlatList **/
24
+ renderGroupChannelPreview: (props: {
25
+ channel: SendbirdGroupChannel;
26
+ onPress: () => void;
27
+ onLongPress: () => void;
28
+ }) => React.ReactElement | null;
46
29
  onLoadNext: () => Promise<void>;
47
- /** Prop from Fragment **/
48
30
  flatListProps?: Omit<FlatListProps<SendbirdGroupChannel>, 'data' | 'renderItem'>;
49
- /** Prop from Fragment **/
50
31
  menuItemCreator?: (defaultMenuItem: ActionMenuItem) => ActionMenuItem;
51
32
  };
52
- /** Props for `GroupChannelListModule.TypeSelector` **/
53
33
  TypeSelector: {
54
- /** Prop from Fragment `Fragment.skipTypeSelection` **/
55
34
  skipTypeSelection: boolean;
56
- /** Method called when type is selected, call `Fragment.onPressCreateChannel` **/
57
35
  onSelectType: (type: GroupChannelType) => void;
58
36
  };
59
37
  }