@sendbird/uikit-react-native 2.5.0 → 3.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 (326) 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/FlatListInternal.js +33 -0
  13. package/lib/commonjs/components/ChatFlatList/FlatListInternal.js.map +1 -0
  14. package/lib/commonjs/components/{ChatFlatList.js → ChatFlatList/index.js} +5 -7
  15. package/lib/commonjs/components/ChatFlatList/index.js.map +1 -0
  16. package/lib/commonjs/components/{MessageRenderer/MessageDateSeparator.js → GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js} +3 -3
  17. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js.map +1 -0
  18. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js +47 -0
  19. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js.map +1 -0
  20. package/lib/commonjs/components/{MessageRenderer/MessageOutgoingStatus.js → GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.js} +11 -14
  21. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.js.map +1 -0
  22. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +204 -0
  23. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -0
  24. package/lib/commonjs/components/MessageSearchResultItem.js +3 -2
  25. package/lib/commonjs/components/MessageSearchResultItem.js.map +1 -1
  26. package/lib/commonjs/components/OpenChannelMessageRenderer/index.js +15 -9
  27. package/lib/commonjs/components/OpenChannelMessageRenderer/index.js.map +1 -1
  28. package/lib/commonjs/constants.js +1 -7
  29. package/lib/commonjs/constants.js.map +1 -1
  30. package/lib/commonjs/containers/GroupChannelPreviewContainer.js +13 -13
  31. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
  32. package/lib/commonjs/containers/SendbirdUIKitContainer.js +29 -19
  33. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  34. package/lib/commonjs/contexts/SendbirdChatCtx.js +17 -14
  35. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  36. package/lib/commonjs/contexts/UserProfileCtx.js +6 -4
  37. package/lib/commonjs/contexts/UserProfileCtx.js.map +1 -1
  38. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput.js +4 -13
  39. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput.js.map +1 -1
  40. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  41. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js +10 -6
  42. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
  43. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListTypeSelector.js +3 -3
  44. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -1
  45. package/lib/commonjs/domain/groupChannelList/types.js.map +1 -1
  46. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +11 -10
  47. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  48. package/lib/commonjs/domain/openChannel/component/OpenChannelInput.js +4 -8
  49. package/lib/commonjs/domain/openChannel/component/OpenChannelInput.js.map +1 -1
  50. package/lib/commonjs/domain/openChannel/types.js.map +1 -1
  51. package/lib/commonjs/domain/openChannelList/component/OpenChannelListList.js +3 -1
  52. package/lib/commonjs/domain/openChannelList/component/OpenChannelListList.js.map +1 -1
  53. package/lib/commonjs/domain/openChannelList/types.js.map +1 -1
  54. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js +1 -1
  55. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js.map +1 -1
  56. package/lib/commonjs/fragments/createGroupChannelFragment.js +22 -100
  57. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  58. package/lib/commonjs/fragments/createGroupChannelInviteFragment.js +1 -1
  59. package/lib/commonjs/fragments/createGroupChannelInviteFragment.js.map +1 -1
  60. package/lib/commonjs/fragments/createGroupChannelListFragment.js +8 -13
  61. package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
  62. package/lib/commonjs/fragments/createMessageSearchFragment.js +2 -2
  63. package/lib/commonjs/fragments/createMessageSearchFragment.js.map +1 -1
  64. package/lib/commonjs/fragments/createOpenChannelFragment.js +1 -7
  65. package/lib/commonjs/fragments/createOpenChannelFragment.js.map +1 -1
  66. package/lib/commonjs/fragments/createOpenChannelListFragment.js +2 -1
  67. package/lib/commonjs/fragments/createOpenChannelListFragment.js.map +1 -1
  68. package/lib/commonjs/hooks/useConnection.js +11 -7
  69. package/lib/commonjs/hooks/useConnection.js.map +1 -1
  70. package/lib/commonjs/hooks/useMentionTextInput.js +3 -2
  71. package/lib/commonjs/hooks/useMentionTextInput.js.map +1 -1
  72. package/lib/commonjs/index.js +20 -4
  73. package/lib/commonjs/index.js.map +1 -1
  74. package/lib/commonjs/libs/MentionManager.js +8 -9
  75. package/lib/commonjs/libs/MentionManager.js.map +1 -1
  76. package/lib/commonjs/libs/SBUUtils.js +7 -3
  77. package/lib/commonjs/libs/SBUUtils.js.map +1 -1
  78. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  79. package/lib/commonjs/localization/createBaseStringSet.js +20 -62
  80. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  81. package/lib/commonjs/version.js +1 -1
  82. package/lib/commonjs/version.js.map +1 -1
  83. package/lib/module/components/ChannelInput/AttachmentsButton.js +29 -0
  84. package/lib/module/components/ChannelInput/AttachmentsButton.js.map +1 -0
  85. package/lib/module/components/ChannelInput/EditInput.js +10 -18
  86. package/lib/module/components/ChannelInput/EditInput.js.map +1 -1
  87. package/lib/module/components/ChannelInput/SendInput.js +221 -164
  88. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  89. package/lib/module/components/ChannelInput/index.js +5 -3
  90. package/lib/module/components/ChannelInput/index.js.map +1 -1
  91. package/lib/module/components/ChannelMessageList/index.js +28 -28
  92. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  93. package/lib/module/components/ChatFlatList/FlatListInternal.js +26 -0
  94. package/lib/module/components/ChatFlatList/FlatListInternal.js.map +1 -0
  95. package/lib/module/components/{ChatFlatList.js → ChatFlatList/index.js} +4 -7
  96. package/lib/module/components/ChatFlatList/index.js.map +1 -0
  97. package/lib/module/components/{MessageRenderer/MessageDateSeparator.js → GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js} +3 -3
  98. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js.map +1 -0
  99. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js +38 -0
  100. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.js.map +1 -0
  101. package/lib/module/components/{MessageRenderer/MessageOutgoingStatus.js → GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.js} +12 -15
  102. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.js.map +1 -0
  103. package/lib/module/components/GroupChannelMessageRenderer/index.js +196 -0
  104. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -0
  105. package/lib/module/components/MessageSearchResultItem.js +2 -1
  106. package/lib/module/components/MessageSearchResultItem.js.map +1 -1
  107. package/lib/module/components/OpenChannelMessageRenderer/index.js +16 -10
  108. package/lib/module/components/OpenChannelMessageRenderer/index.js.map +1 -1
  109. package/lib/module/constants.js +0 -5
  110. package/lib/module/constants.js.map +1 -1
  111. package/lib/module/containers/GroupChannelPreviewContainer.js +13 -13
  112. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
  113. package/lib/module/containers/SendbirdUIKitContainer.js +29 -19
  114. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  115. package/lib/module/contexts/SendbirdChatCtx.js +17 -14
  116. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  117. package/lib/module/contexts/UserProfileCtx.js +6 -4
  118. package/lib/module/contexts/UserProfileCtx.js.map +1 -1
  119. package/lib/module/domain/groupChannel/component/GroupChannelInput.js +4 -13
  120. package/lib/module/domain/groupChannel/component/GroupChannelInput.js.map +1 -1
  121. package/lib/module/domain/groupChannel/types.js.map +1 -1
  122. package/lib/module/domain/groupChannelList/component/GroupChannelListList.js +9 -4
  123. package/lib/module/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
  124. package/lib/module/domain/groupChannelList/component/GroupChannelListTypeSelector.js +3 -3
  125. package/lib/module/domain/groupChannelList/component/GroupChannelListTypeSelector.js.map +1 -1
  126. package/lib/module/domain/groupChannelList/types.js.map +1 -1
  127. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +11 -10
  128. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  129. package/lib/module/domain/openChannel/component/OpenChannelInput.js +4 -8
  130. package/lib/module/domain/openChannel/component/OpenChannelInput.js.map +1 -1
  131. package/lib/module/domain/openChannel/types.js.map +1 -1
  132. package/lib/module/domain/openChannelList/component/OpenChannelListList.js +3 -1
  133. package/lib/module/domain/openChannelList/component/OpenChannelListList.js.map +1 -1
  134. package/lib/module/domain/openChannelList/types.js.map +1 -1
  135. package/lib/module/fragments/createGroupChannelCreateFragment.js +1 -1
  136. package/lib/module/fragments/createGroupChannelCreateFragment.js.map +1 -1
  137. package/lib/module/fragments/createGroupChannelFragment.js +24 -102
  138. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  139. package/lib/module/fragments/createGroupChannelInviteFragment.js +1 -1
  140. package/lib/module/fragments/createGroupChannelInviteFragment.js.map +1 -1
  141. package/lib/module/fragments/createGroupChannelListFragment.js +8 -13
  142. package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
  143. package/lib/module/fragments/createMessageSearchFragment.js +1 -1
  144. package/lib/module/fragments/createMessageSearchFragment.js.map +1 -1
  145. package/lib/module/fragments/createOpenChannelFragment.js +2 -8
  146. package/lib/module/fragments/createOpenChannelFragment.js.map +1 -1
  147. package/lib/module/fragments/createOpenChannelListFragment.js +2 -1
  148. package/lib/module/fragments/createOpenChannelListFragment.js.map +1 -1
  149. package/lib/module/hooks/useConnection.js +11 -7
  150. package/lib/module/hooks/useConnection.js.map +1 -1
  151. package/lib/module/hooks/useMentionTextInput.js +3 -2
  152. package/lib/module/hooks/useMentionTextInput.js.map +1 -1
  153. package/lib/module/index.js +5 -2
  154. package/lib/module/index.js.map +1 -1
  155. package/lib/module/libs/MentionManager.js +8 -9
  156. package/lib/module/libs/MentionManager.js.map +1 -1
  157. package/lib/module/libs/SBUUtils.js +7 -3
  158. package/lib/module/libs/SBUUtils.js.map +1 -1
  159. package/lib/module/localization/StringSet.type.js.map +1 -1
  160. package/lib/module/localization/createBaseStringSet.js +20 -62
  161. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  162. package/lib/module/version.js +1 -1
  163. package/lib/module/version.js.map +1 -1
  164. package/lib/typescript/src/components/ChannelInput/AttachmentsButton.d.ts +6 -0
  165. package/lib/typescript/src/components/ChannelInput/index.d.ts +2 -14
  166. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +2 -4
  167. package/lib/typescript/src/components/ChatFlatList/FlatListInternal.d.ts +20 -0
  168. package/lib/typescript/src/components/{ChatFlatList.d.ts → ChatFlatList/index.d.ts} +1 -5
  169. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.d.ts +6 -0
  170. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.d.ts +5 -0
  171. package/lib/typescript/src/components/{MessageRenderer/MessageOutgoingStatus.d.ts → GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.d.ts} +3 -1
  172. package/lib/typescript/src/components/{MessageRenderer → GroupChannelMessageRenderer}/index.d.ts +2 -13
  173. package/lib/typescript/src/components/MessageSearchResultItem.d.ts +2 -1
  174. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +1 -1
  175. package/lib/typescript/src/constants.d.ts +0 -5
  176. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +16 -11
  177. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +33 -19
  178. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput.d.ts +1 -1
  179. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +1 -4
  180. package/lib/typescript/src/domain/groupChannel/types.d.ts +2 -9
  181. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListList.d.ts +1 -1
  182. package/lib/typescript/src/domain/groupChannelList/types.d.ts +8 -23
  183. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
  184. package/lib/typescript/src/domain/openChannel/component/OpenChannelInput.d.ts +1 -1
  185. package/lib/typescript/src/domain/openChannel/component/OpenChannelMessageList.d.ts +1 -1
  186. package/lib/typescript/src/domain/openChannel/types.d.ts +2 -2
  187. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListList.d.ts +1 -1
  188. package/lib/typescript/src/domain/openChannelList/types.d.ts +3 -12
  189. package/lib/typescript/src/index.d.ts +4 -1
  190. package/lib/typescript/src/libs/MentionManager.d.ts +4 -5
  191. package/lib/typescript/src/libs/SBUUtils.d.ts +1 -1
  192. package/lib/typescript/src/localization/StringSet.type.d.ts +2 -43
  193. package/lib/typescript/src/version.d.ts +1 -1
  194. package/package.json +14 -10
  195. package/src/components/ChannelInput/AttachmentsButton.tsx +32 -0
  196. package/src/components/ChannelInput/EditInput.tsx +17 -18
  197. package/src/components/ChannelInput/SendInput.tsx +237 -181
  198. package/src/components/ChannelInput/index.tsx +8 -21
  199. package/src/components/ChannelMessageList/index.tsx +33 -41
  200. package/src/components/ChatFlatList/FlatListInternal.tsx +40 -0
  201. package/src/components/{ChatFlatList.tsx → ChatFlatList/index.tsx} +7 -12
  202. package/src/components/{MessageRenderer/MessageDateSeparator.tsx → GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.tsx} +7 -5
  203. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.tsx +29 -0
  204. package/src/components/{MessageRenderer/MessageOutgoingStatus.tsx → GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.tsx} +15 -15
  205. package/src/components/GroupChannelMessageRenderer/index.tsx +203 -0
  206. package/src/components/MessageSearchResultItem.tsx +3 -1
  207. package/src/components/OpenChannelMessageRenderer/index.tsx +10 -5
  208. package/src/constants.ts +0 -5
  209. package/src/containers/GroupChannelPreviewContainer.tsx +14 -13
  210. package/src/containers/SendbirdUIKitContainer.tsx +98 -90
  211. package/src/contexts/SendbirdChatCtx.tsx +49 -36
  212. package/src/contexts/UserProfileCtx.tsx +10 -5
  213. package/src/domain/groupChannel/component/GroupChannelInput.tsx +1 -10
  214. package/src/domain/groupChannel/types.ts +1 -14
  215. package/src/domain/groupChannelList/component/GroupChannelListList.tsx +8 -4
  216. package/src/domain/groupChannelList/component/GroupChannelListTypeSelector.tsx +3 -3
  217. package/src/domain/groupChannelList/types.ts +8 -30
  218. package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +22 -10
  219. package/src/domain/openChannel/component/OpenChannelInput.tsx +1 -5
  220. package/src/domain/openChannel/types.ts +1 -1
  221. package/src/domain/openChannelList/component/OpenChannelListList.tsx +2 -1
  222. package/src/domain/openChannelList/types.ts +6 -13
  223. package/src/fragments/createGroupChannelCreateFragment.tsx +1 -1
  224. package/src/fragments/createGroupChannelFragment.tsx +21 -97
  225. package/src/fragments/createGroupChannelInviteFragment.tsx +1 -1
  226. package/src/fragments/createGroupChannelListFragment.tsx +9 -15
  227. package/src/fragments/createMessageSearchFragment.tsx +1 -1
  228. package/src/fragments/createOpenChannelFragment.tsx +2 -3
  229. package/src/fragments/createOpenChannelListFragment.tsx +2 -1
  230. package/src/hooks/useConnection.ts +9 -7
  231. package/src/hooks/useMentionTextInput.ts +7 -2
  232. package/src/index.ts +4 -2
  233. package/src/libs/MentionManager.tsx +8 -7
  234. package/src/libs/SBUUtils.ts +7 -3
  235. package/src/localization/StringSet.type.ts +2 -46
  236. package/src/localization/createBaseStringSet.ts +19 -71
  237. package/src/version.ts +1 -1
  238. package/lib/commonjs/components/ChatFlatList.js.map +0 -1
  239. package/lib/commonjs/components/MessageRenderer/AdminMessage/index.js +0 -46
  240. package/lib/commonjs/components/MessageRenderer/AdminMessage/index.js.map +0 -1
  241. package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js +0 -73
  242. package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +0 -1
  243. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js +0 -93
  244. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +0 -1
  245. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +0 -132
  246. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +0 -1
  247. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js +0 -24
  248. package/lib/commonjs/components/MessageRenderer/FileMessage/index.js.map +0 -1
  249. package/lib/commonjs/components/MessageRenderer/MessageContainer.js +0 -27
  250. package/lib/commonjs/components/MessageRenderer/MessageContainer.js.map +0 -1
  251. package/lib/commonjs/components/MessageRenderer/MessageDateSeparator.js.map +0 -1
  252. package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js +0 -41
  253. package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js.map +0 -1
  254. package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js +0 -41
  255. package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js.map +0 -1
  256. package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js.map +0 -1
  257. package/lib/commonjs/components/MessageRenderer/MessageTime.js.map +0 -1
  258. package/lib/commonjs/components/MessageRenderer/UnknownMessage/index.js +0 -46
  259. package/lib/commonjs/components/MessageRenderer/UnknownMessage/index.js.map +0 -1
  260. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js +0 -113
  261. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +0 -1
  262. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +0 -200
  263. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +0 -1
  264. package/lib/commonjs/components/MessageRenderer/UserMessage/index.js +0 -22
  265. package/lib/commonjs/components/MessageRenderer/UserMessage/index.js.map +0 -1
  266. package/lib/commonjs/components/MessageRenderer/index.js +0 -186
  267. package/lib/commonjs/components/MessageRenderer/index.js.map +0 -1
  268. package/lib/module/components/ChatFlatList.js.map +0 -1
  269. package/lib/module/components/MessageRenderer/AdminMessage/index.js +0 -38
  270. package/lib/module/components/MessageRenderer/AdminMessage/index.js.map +0 -1
  271. package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js +0 -65
  272. package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +0 -1
  273. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js +0 -84
  274. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +0 -1
  275. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +0 -123
  276. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +0 -1
  277. package/lib/module/components/MessageRenderer/FileMessage/index.js +0 -16
  278. package/lib/module/components/MessageRenderer/FileMessage/index.js.map +0 -1
  279. package/lib/module/components/MessageRenderer/MessageContainer.js +0 -19
  280. package/lib/module/components/MessageRenderer/MessageContainer.js.map +0 -1
  281. package/lib/module/components/MessageRenderer/MessageDateSeparator.js.map +0 -1
  282. package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js +0 -33
  283. package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js.map +0 -1
  284. package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js +0 -33
  285. package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js.map +0 -1
  286. package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js.map +0 -1
  287. package/lib/module/components/MessageRenderer/MessageTime.js +0 -26
  288. package/lib/module/components/MessageRenderer/MessageTime.js.map +0 -1
  289. package/lib/module/components/MessageRenderer/UnknownMessage/index.js +0 -38
  290. package/lib/module/components/MessageRenderer/UnknownMessage/index.js.map +0 -1
  291. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js +0 -105
  292. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +0 -1
  293. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +0 -190
  294. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +0 -1
  295. package/lib/module/components/MessageRenderer/UserMessage/index.js +0 -14
  296. package/lib/module/components/MessageRenderer/UserMessage/index.js.map +0 -1
  297. package/lib/module/components/MessageRenderer/index.js +0 -178
  298. package/lib/module/components/MessageRenderer/index.js.map +0 -1
  299. package/lib/typescript/src/components/MessageRenderer/AdminMessage/index.d.ts +0 -5
  300. package/lib/typescript/src/components/MessageRenderer/FileMessage/BaseFileMessage.d.ts +0 -6
  301. package/lib/typescript/src/components/MessageRenderer/FileMessage/ImageFileMessage.d.ts +0 -3
  302. package/lib/typescript/src/components/MessageRenderer/FileMessage/VideoFileMessage.d.ts +0 -3
  303. package/lib/typescript/src/components/MessageRenderer/FileMessage/index.d.ts +0 -15
  304. package/lib/typescript/src/components/MessageRenderer/MessageContainer.d.ts +0 -3
  305. package/lib/typescript/src/components/MessageRenderer/MessageDateSeparator.d.ts +0 -7
  306. package/lib/typescript/src/components/MessageRenderer/MessageIncomingAvatar.d.ts +0 -7
  307. package/lib/typescript/src/components/MessageRenderer/MessageIncomingSenderName.d.ts +0 -7
  308. package/lib/typescript/src/components/MessageRenderer/MessageTime.d.ts +0 -9
  309. package/lib/typescript/src/components/MessageRenderer/UnknownMessage/index.d.ts +0 -4
  310. package/lib/typescript/src/components/MessageRenderer/UserMessage/BaseUserMessage.d.ts +0 -3
  311. package/lib/typescript/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.d.ts +0 -7
  312. package/lib/typescript/src/components/MessageRenderer/UserMessage/index.d.ts +0 -9
  313. package/src/components/MessageRenderer/AdminMessage/index.tsx +0 -40
  314. package/src/components/MessageRenderer/FileMessage/BaseFileMessage.tsx +0 -51
  315. package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +0 -98
  316. package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +0 -113
  317. package/src/components/MessageRenderer/FileMessage/index.tsx +0 -20
  318. package/src/components/MessageRenderer/MessageContainer.tsx +0 -17
  319. package/src/components/MessageRenderer/MessageIncomingAvatar.tsx +0 -34
  320. package/src/components/MessageRenderer/MessageIncomingSenderName.tsx +0 -36
  321. package/src/components/MessageRenderer/MessageTime.tsx +0 -28
  322. package/src/components/MessageRenderer/UnknownMessage/index.tsx +0 -34
  323. package/src/components/MessageRenderer/UserMessage/BaseUserMessage.tsx +0 -102
  324. package/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.tsx +0 -188
  325. package/src/components/MessageRenderer/UserMessage/index.tsx +0 -24
  326. package/src/components/MessageRenderer/index.tsx +0 -198
@@ -18,7 +18,8 @@ import {
18
18
  useToast,
19
19
  useUIKitTheme,
20
20
  } from '@sendbird/uikit-react-native-foundation';
21
- import { isImage, shouldCompressImage } from '@sendbird/uikit-utils';
21
+ import type { BottomSheetItem } from '@sendbird/uikit-react-native-foundation';
22
+ import { SendbirdChannel, isImage, shouldCompressImage, useIIFE } from '@sendbird/uikit-utils';
22
23
 
23
24
  import { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';
24
25
  import SBUError from '../../libs/SBUError';
@@ -36,10 +37,9 @@ interface SendInputProps extends ChannelInputProps {
36
37
 
37
38
  const SendInput = forwardRef<RNTextInput, SendInputProps>(function SendInput(
38
39
  {
40
+ AttachmentsButton,
39
41
  onPressSendUserMessage,
40
42
  onPressSendFileMessage,
41
- onSendUserMessage,
42
- onSendFileMessage,
43
43
  text,
44
44
  onChangeText,
45
45
  onSelectionChange,
@@ -47,186 +47,41 @@ const SendInput = forwardRef<RNTextInput, SendInputProps>(function SendInput(
47
47
  inputDisabled,
48
48
  inputFrozen,
49
49
  inputMuted,
50
+ channel,
50
51
  },
51
52
  ref,
52
53
  ) {
53
- const { mentionManager, imageCompressionConfig, features } = useSendbirdChat();
54
+ const { mentionManager, sbOptions } = useSendbirdChat();
54
55
  const { STRINGS } = useLocalization();
55
- const { fileService, mediaService } = usePlatformService();
56
56
  const { colors } = useUIKitTheme();
57
57
  const { openSheet } = useBottomSheet();
58
- const { alert } = useAlert();
59
58
  const toast = useToast();
60
59
 
60
+ const onFailureToSend = () => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error');
61
+
61
62
  const sendUserMessage = () => {
62
63
  const mentionType = MentionType.USERS;
63
64
  const mentionedUserIds = mentionedUsers.map((it) => it.user.userId);
64
- const mentionedMessageTemplate = mentionManager.textToMentionedMessageTemplate(text, mentionedUsers);
65
-
66
- if (onPressSendUserMessage) {
67
- onPressSendUserMessage({
68
- message: text,
69
- mentionType,
70
- mentionedUserIds,
71
- mentionedMessageTemplate,
72
- }).catch(onFailureToSend);
73
- } else if (onSendUserMessage) {
74
- onSendUserMessage(text, {
75
- type: mentionType,
76
- userIds: mentionedUserIds,
77
- messageTemplate: mentionedMessageTemplate,
78
- }).catch(onFailureToSend);
79
- }
65
+ const mentionedMessageTemplate = mentionManager.textToMentionedMessageTemplate(
66
+ text,
67
+ mentionedUsers,
68
+ sbOptions.uikit.groupChannel.channel.enableMention,
69
+ );
80
70
 
81
- onChangeText('');
82
- };
71
+ onPressSendUserMessage({
72
+ message: text,
73
+ mentionType,
74
+ mentionedUserIds,
75
+ mentionedMessageTemplate,
76
+ }).catch(onFailureToSend);
83
77
 
84
- const sendFileMessage = (file: FileType) => {
85
- if (onPressSendFileMessage) {
86
- onPressSendFileMessage({ file }).catch(onFailureToSend);
87
- } else if (onSendFileMessage) {
88
- onSendFileMessage(file).catch(onFailureToSend);
89
- }
78
+ onChangeText('');
90
79
  };
91
80
 
92
- const onFailureToSend = () => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error');
93
-
94
- const onPressAttachment = () => {
95
- openSheet({
96
- sheetItems: [
97
- {
98
- title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_CAMERA,
99
- icon: 'camera',
100
- onPress: async () => {
101
- const mediaFile = await fileService.openCamera({
102
- mediaType: 'all',
103
- onOpenFailure: (error) => {
104
- if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {
105
- alert({
106
- title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
107
- message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(
108
- STRINGS.LABELS.PERMISSION_CAMERA,
109
- STRINGS.LABELS.PERMISSION_APP_NAME,
110
- ),
111
- buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],
112
- });
113
- } else {
114
- toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');
115
- }
116
- },
117
- });
118
-
119
- if (mediaFile) {
120
- // Image compression
121
- if (
122
- isImage(mediaFile.uri, mediaFile.type) &&
123
- shouldCompressImage(mediaFile.type, features.imageCompressionEnabled)
124
- ) {
125
- await SBUUtils.safeRun(async () => {
126
- const compressed = await mediaService.compressImage({
127
- uri: mediaFile.uri,
128
- maxWidth: imageCompressionConfig.width,
129
- maxHeight: imageCompressionConfig.height,
130
- compressionRate: imageCompressionConfig.compressionRate,
131
- });
132
-
133
- if (compressed) {
134
- mediaFile.uri = compressed.uri;
135
- mediaFile.size = compressed.size;
136
- }
137
- });
138
- }
139
-
140
- sendFileMessage(mediaFile);
141
- }
142
- },
143
- },
144
- {
145
- title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY,
146
- icon: 'photo',
147
- onPress: async () => {
148
- const mediaFiles = await fileService.openMediaLibrary({
149
- selectionLimit: 1,
150
- mediaType: 'all',
151
- onOpenFailure: (error) => {
152
- if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {
153
- alert({
154
- title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
155
- message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(
156
- STRINGS.LABELS.PERMISSION_DEVICE_STORAGE,
157
- STRINGS.LABELS.PERMISSION_APP_NAME,
158
- ),
159
- buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],
160
- });
161
- } else {
162
- toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');
163
- }
164
- },
165
- });
166
-
167
- if (mediaFiles && mediaFiles[0]) {
168
- const mediaFile = mediaFiles[0];
169
-
170
- // Image compression
171
- if (
172
- isImage(mediaFile.uri, mediaFile.type) &&
173
- shouldCompressImage(mediaFile.type, features.imageCompressionEnabled)
174
- ) {
175
- await SBUUtils.safeRun(async () => {
176
- const compressed = await mediaService.compressImage({
177
- uri: mediaFile.uri,
178
- maxWidth: imageCompressionConfig.width,
179
- maxHeight: imageCompressionConfig.height,
180
- compressionRate: imageCompressionConfig.compressionRate,
181
- });
182
-
183
- if (compressed) {
184
- mediaFile.uri = compressed.uri;
185
- mediaFile.size = compressed.size;
186
- }
187
- });
188
- }
189
-
190
- sendFileMessage(mediaFile);
191
- }
192
- },
193
- },
194
- {
195
- title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_FILES,
196
- icon: 'document',
197
- onPress: async () => {
198
- const documentFile = await fileService.openDocument({
199
- onOpenFailure: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error'),
200
- });
201
-
202
- if (documentFile) {
203
- // Image compression
204
- if (
205
- isImage(documentFile.uri, documentFile.type) &&
206
- shouldCompressImage(documentFile.type, features.imageCompressionEnabled)
207
- ) {
208
- await SBUUtils.safeRun(async () => {
209
- const compressed = await mediaService.compressImage({
210
- uri: documentFile.uri,
211
- maxWidth: imageCompressionConfig.width,
212
- maxHeight: imageCompressionConfig.height,
213
- compressionRate: imageCompressionConfig.compressionRate,
214
- });
215
-
216
- if (compressed) {
217
- documentFile.uri = compressed.uri;
218
- documentFile.size = compressed.size;
219
- }
220
- });
221
- }
222
-
223
- sendFileMessage(documentFile);
224
- }
225
- },
226
- },
227
- ],
228
- });
229
- };
81
+ const sheetItems = useChannelInputItems(channel, (file) => {
82
+ onPressSendFileMessage({ file }).catch(onFailureToSend);
83
+ });
84
+ const onPressAttachment = () => openSheet({ sheetItems });
230
85
 
231
86
  const getPlaceholder = () => {
232
87
  if (!inputDisabled) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_ACTIVE;
@@ -238,14 +93,7 @@ const SendInput = forwardRef<RNTextInput, SendInputProps>(function SendInput(
238
93
 
239
94
  return (
240
95
  <View style={styles.sendInputContainer}>
241
- <TouchableOpacity onPress={onPressAttachment} disabled={inputDisabled}>
242
- <Icon
243
- color={inputDisabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}
244
- icon={'add'}
245
- size={24}
246
- containerStyle={styles.iconAttach}
247
- />
248
- </TouchableOpacity>
96
+ {AttachmentsButton && <AttachmentsButton onPress={onPressAttachment} disabled={inputDisabled} />}
249
97
  <TextInput
250
98
  ref={ref}
251
99
  multiline
@@ -256,7 +104,11 @@ const SendInput = forwardRef<RNTextInput, SendInputProps>(function SendInput(
256
104
  style={styles.input}
257
105
  placeholder={getPlaceholder()}
258
106
  >
259
- {mentionManager.textToMentionedComponents(text, mentionedUsers)}
107
+ {mentionManager.textToMentionedComponents(
108
+ text,
109
+ mentionedUsers,
110
+ sbOptions.uikit.groupChannel.channel.enableMention,
111
+ )}
260
112
  </TextInput>
261
113
 
262
114
  {Boolean(text.trim()) && (
@@ -275,6 +127,214 @@ const SendInput = forwardRef<RNTextInput, SendInputProps>(function SendInput(
275
127
  );
276
128
  });
277
129
 
130
+ const useChannelInputItems = (channel: SendbirdChannel, sendFileMessage: (file: FileType) => void) => {
131
+ const { sbOptions, imageCompressionConfig } = useSendbirdChat();
132
+ const { STRINGS } = useLocalization();
133
+ const { fileService, mediaService } = usePlatformService();
134
+ const { alert } = useAlert();
135
+ const toast = useToast();
136
+
137
+ const sheetItems: BottomSheetItem['sheetItems'] = [];
138
+ const input = useIIFE(() => {
139
+ switch (true) {
140
+ case channel.isOpenChannel():
141
+ return sbOptions.uikit.openChannel.channel.input;
142
+ case channel.isGroupChannel():
143
+ return sbOptions.uikit.groupChannel.channel.input;
144
+ default:
145
+ return {
146
+ enableDocument: true,
147
+ camera: { enablePhoto: true, enableVideo: true },
148
+ gallery: { enablePhoto: true, enableVideo: true },
149
+ };
150
+ }
151
+ });
152
+
153
+ if (input.camera.enablePhoto) {
154
+ sheetItems.push({
155
+ title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_CAMERA_PHOTO,
156
+ icon: 'camera',
157
+ onPress: async () => {
158
+ const mediaFile = await fileService.openCamera({
159
+ mediaType: 'photo',
160
+ onOpenFailure: (error) => {
161
+ if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {
162
+ alert({
163
+ title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
164
+ message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(
165
+ STRINGS.LABELS.PERMISSION_CAMERA,
166
+ STRINGS.LABELS.PERMISSION_APP_NAME,
167
+ ),
168
+ buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],
169
+ });
170
+ } else {
171
+ toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');
172
+ }
173
+ },
174
+ });
175
+
176
+ if (mediaFile) {
177
+ // Image compression
178
+ if (
179
+ isImage(mediaFile.uri, mediaFile.type) &&
180
+ shouldCompressImage(mediaFile.type, sbOptions.chat.imageCompressionEnabled)
181
+ ) {
182
+ await SBUUtils.safeRun(async () => {
183
+ const compressed = await mediaService.compressImage({
184
+ uri: mediaFile.uri,
185
+ maxWidth: imageCompressionConfig.width,
186
+ maxHeight: imageCompressionConfig.height,
187
+ compressionRate: imageCompressionConfig.compressionRate,
188
+ });
189
+
190
+ if (compressed) {
191
+ mediaFile.uri = compressed.uri;
192
+ mediaFile.size = compressed.size;
193
+ }
194
+ });
195
+ }
196
+
197
+ sendFileMessage(mediaFile);
198
+ }
199
+ },
200
+ });
201
+ }
202
+
203
+ if (input.camera.enableVideo) {
204
+ sheetItems.push({
205
+ title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_CAMERA_VIDEO,
206
+ icon: 'camera',
207
+ onPress: async () => {
208
+ const mediaFile = await fileService.openCamera({
209
+ mediaType: 'video',
210
+ onOpenFailure: (error) => {
211
+ if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {
212
+ alert({
213
+ title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
214
+ message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(
215
+ STRINGS.LABELS.PERMISSION_CAMERA,
216
+ STRINGS.LABELS.PERMISSION_APP_NAME,
217
+ ),
218
+ buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],
219
+ });
220
+ } else {
221
+ toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');
222
+ }
223
+ },
224
+ });
225
+
226
+ if (mediaFile) {
227
+ sendFileMessage(mediaFile);
228
+ }
229
+ },
230
+ });
231
+ }
232
+
233
+ if (input.gallery.enablePhoto || input.gallery.enableVideo) {
234
+ const mediaType = (() => {
235
+ switch (true) {
236
+ case input.gallery.enablePhoto && input.gallery.enableVideo:
237
+ return 'all';
238
+ case input.gallery.enablePhoto && !input.gallery.enableVideo:
239
+ return 'photo';
240
+ case !input.gallery.enablePhoto && input.gallery.enableVideo:
241
+ return 'video';
242
+ default:
243
+ return 'all';
244
+ }
245
+ })();
246
+
247
+ sheetItems.push({
248
+ title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY,
249
+ icon: 'photo',
250
+ onPress: async () => {
251
+ const mediaFiles = await fileService.openMediaLibrary({
252
+ selectionLimit: 1,
253
+ mediaType,
254
+ onOpenFailure: (error) => {
255
+ if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {
256
+ alert({
257
+ title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
258
+ message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(
259
+ STRINGS.LABELS.PERMISSION_DEVICE_STORAGE,
260
+ STRINGS.LABELS.PERMISSION_APP_NAME,
261
+ ),
262
+ buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],
263
+ });
264
+ } else {
265
+ toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');
266
+ }
267
+ },
268
+ });
269
+
270
+ if (mediaFiles && mediaFiles[0]) {
271
+ const mediaFile = mediaFiles[0];
272
+
273
+ // Image compression
274
+ if (
275
+ isImage(mediaFile.uri, mediaFile.type) &&
276
+ shouldCompressImage(mediaFile.type, sbOptions.chat.imageCompressionEnabled)
277
+ ) {
278
+ await SBUUtils.safeRun(async () => {
279
+ const compressed = await mediaService.compressImage({
280
+ uri: mediaFile.uri,
281
+ maxWidth: imageCompressionConfig.width,
282
+ maxHeight: imageCompressionConfig.height,
283
+ compressionRate: imageCompressionConfig.compressionRate,
284
+ });
285
+
286
+ if (compressed) {
287
+ mediaFile.uri = compressed.uri;
288
+ mediaFile.size = compressed.size;
289
+ }
290
+ });
291
+ }
292
+
293
+ sendFileMessage(mediaFile);
294
+ }
295
+ },
296
+ });
297
+ }
298
+
299
+ if (input.enableDocument) {
300
+ sheetItems.push({
301
+ title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_FILES,
302
+ icon: 'document',
303
+ onPress: async () => {
304
+ const documentFile = await fileService.openDocument({
305
+ onOpenFailure: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error'),
306
+ });
307
+
308
+ if (documentFile) {
309
+ // Image compression
310
+ if (
311
+ isImage(documentFile.uri, documentFile.type) &&
312
+ shouldCompressImage(documentFile.type, sbOptions.chat.imageCompressionEnabled)
313
+ ) {
314
+ await SBUUtils.safeRun(async () => {
315
+ const compressed = await mediaService.compressImage({
316
+ uri: documentFile.uri,
317
+ maxWidth: imageCompressionConfig.width,
318
+ maxHeight: imageCompressionConfig.height,
319
+ compressionRate: imageCompressionConfig.compressionRate,
320
+ });
321
+
322
+ if (compressed) {
323
+ documentFile.uri = compressed.uri;
324
+ documentFile.size = compressed.size;
325
+ }
326
+ });
327
+ }
328
+
329
+ sendFileMessage(documentFile);
330
+ }
331
+ },
332
+ });
333
+ }
334
+
335
+ return sheetItems;
336
+ };
337
+
278
338
  const styles = createStyleSheet({
279
339
  sendInputContainer: {
280
340
  paddingVertical: 10,
@@ -289,10 +349,6 @@ const styles = createStyleSheet({
289
349
  maxHeight: 36 * Platform.select({ ios: 2.5, default: 2 }),
290
350
  borderRadius: 20,
291
351
  },
292
- iconAttach: {
293
- marginRight: 8,
294
- padding: 4,
295
- },
296
352
  iconSend: {
297
353
  marginLeft: 4,
298
354
  padding: 4,
@@ -19,17 +19,12 @@ import {
19
19
 
20
20
  import { useSendbirdChat } from '../../hooks/useContext';
21
21
  import useMentionTextInput from '../../hooks/useMentionTextInput';
22
- import type { FileType } from '../../platform/types';
23
22
  import type { MentionedUser, Range } from '../../types';
23
+ import type { AttachmentsButtonProps } from './AttachmentsButton';
24
+ import AttachmentsButton from './AttachmentsButton';
24
25
  import EditInput from './EditInput';
25
26
  import SendInput from './SendInput';
26
27
 
27
- type UserMessageMentionParams = Required<{
28
- messageTemplate: SendbirdUserMessageCreateParams['mentionedMessageTemplate'];
29
- userIds: SendbirdUserMessageCreateParams['mentionedUserIds'];
30
- type: SendbirdUserMessageCreateParams['mentionType'];
31
- }>;
32
-
33
28
  export type SuggestedMentionListProps = {
34
29
  text: string;
35
30
  selection: Range;
@@ -64,18 +59,8 @@ export type ChannelInputProps = {
64
59
  // mention
65
60
  SuggestedMentionList?: (props: SuggestedMentionListProps) => JSX.Element | null;
66
61
 
67
- /** @deprecated Please use `onPressSendUserMessage` **/
68
- onSendFileMessage?: (file: FileType) => Promise<void>;
69
- /** @deprecated Please use `onPressSendFileMessage` **/
70
- onSendUserMessage?: (text: string, mention?: UserMessageMentionParams) => Promise<void>;
71
- /** @deprecated Please use `onPressUpdateUserMessage` **/
72
- onUpdateFileMessage?: (editedFile: FileType, message: SendbirdFileMessage) => Promise<void>;
73
- /** @deprecated Please use `onPressUpdateFileMessage` **/
74
- onUpdateUserMessage?: (
75
- editedText: string,
76
- message: SendbirdUserMessage,
77
- mention?: UserMessageMentionParams,
78
- ) => Promise<void>;
62
+ // sub-components
63
+ AttachmentsButton?: (props: AttachmentsButtonProps) => JSX.Element | null;
79
64
  };
80
65
 
81
66
  const AUTO_FOCUS = Platform.select({ ios: false, android: true, default: false });
@@ -92,7 +77,7 @@ const ChannelInput = (props: ChannelInputProps) => {
92
77
 
93
78
  const { top, left, right, bottom } = useSafeAreaInsets();
94
79
  const { colors } = useUIKitTheme();
95
- const { features, mentionManager } = useSendbirdChat();
80
+ const { sbOptions, mentionManager } = useSendbirdChat();
96
81
 
97
82
  const { selection, onSelectionChange, textInputRef, text, onChangeText, mentionedUsers } = useMentionTextInput({
98
83
  messageToEdit,
@@ -103,7 +88,8 @@ const ChannelInput = (props: ChannelInputProps) => {
103
88
  return 'edit';
104
89
  });
105
90
 
106
- const mentionAvailable = features.userMentionEnabled && channel.isGroupChannel() && !channel.isBroadcast;
91
+ const mentionAvailable =
92
+ sbOptions.uikit.groupChannel.channel.enableMention && channel.isGroupChannel() && !channel.isBroadcast;
107
93
  const inputKeyToRemount = GET_INPUT_KEY(mentionAvailable ? mentionedUsers.length === 0 : false);
108
94
 
109
95
  const [inputHeight, setInputHeight] = useState(styles.inputDefault.height);
@@ -140,6 +126,7 @@ const ChannelInput = (props: ChannelInputProps) => {
140
126
  onChangeText={onChangeText}
141
127
  onSelectionChange={onSelectionChange}
142
128
  mentionedUsers={mentionedUsers}
129
+ AttachmentsButton={props.AttachmentsButton ?? AttachmentsButton}
143
130
  />
144
131
  )}
145
132
  {inputMode === 'edit' && messageToEdit && (