@sendbird/uikit-react-native 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/lib/commonjs/components/ChatFlatList.js +2 -1
  2. package/lib/commonjs/components/ChatFlatList.js.map +1 -1
  3. package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js +11 -6
  4. package/lib/commonjs/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +1 -1
  5. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js +12 -2
  6. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
  7. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +25 -10
  8. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
  9. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js +86 -10
  10. package/lib/commonjs/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
  11. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +99 -14
  12. package/lib/commonjs/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
  13. package/lib/commonjs/components/MessageRenderer/UserMessage/index.js.map +1 -1
  14. package/lib/commonjs/components/MessageRenderer/index.js +22 -3
  15. package/lib/commonjs/components/MessageRenderer/index.js.map +1 -1
  16. package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js +150 -0
  17. package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -0
  18. package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js +135 -0
  19. package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js.map +1 -0
  20. package/lib/commonjs/components/ReactionAddons/ReactionRoundedButton.js +87 -0
  21. package/lib/commonjs/components/ReactionAddons/ReactionRoundedButton.js.map +1 -0
  22. package/lib/commonjs/components/ReactionAddons/index.js +19 -0
  23. package/lib/commonjs/components/ReactionAddons/index.js.map +1 -0
  24. package/lib/commonjs/components/ReactionBottomSheets/ReactionListBottomSheet.js +150 -0
  25. package/lib/commonjs/components/ReactionBottomSheets/ReactionListBottomSheet.js.map +1 -0
  26. package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +276 -0
  27. package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -0
  28. package/lib/commonjs/components/ReactionBottomSheets/index.js +19 -0
  29. package/lib/commonjs/components/ReactionBottomSheets/index.js.map +1 -0
  30. package/lib/commonjs/constants.js +3 -1
  31. package/lib/commonjs/constants.js.map +1 -1
  32. package/lib/commonjs/containers/GroupChannelPreviewContainer.js +4 -1
  33. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
  34. package/lib/commonjs/containers/SendbirdUIKitContainer.js +118 -78
  35. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  36. package/lib/commonjs/contexts/ReactionCtx.js +107 -0
  37. package/lib/commonjs/contexts/ReactionCtx.js.map +1 -0
  38. package/lib/commonjs/contexts/SendbirdChatCtx.js +18 -6
  39. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  40. package/lib/commonjs/contexts/UserProfileCtx.js +9 -0
  41. package/lib/commonjs/contexts/UserProfileCtx.js.map +1 -1
  42. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/EditInput.js +33 -37
  43. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/EditInput.js.map +1 -1
  44. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js +28 -11
  45. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  46. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js +120 -31
  47. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
  48. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +31 -12
  49. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  50. package/lib/commonjs/domain/groupChannel/component/GroupChannelSuggestedMentionList.js +210 -0
  51. package/lib/commonjs/domain/groupChannel/component/GroupChannelSuggestedMentionList.js.map +1 -0
  52. package/lib/commonjs/domain/groupChannel/index.js +8 -0
  53. package/lib/commonjs/domain/groupChannel/index.js.map +1 -1
  54. package/lib/commonjs/domain/groupChannel/module/createGroupChannelModule.js +4 -0
  55. package/lib/commonjs/domain/groupChannel/module/createGroupChannelModule.js.map +1 -1
  56. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +4 -4
  57. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  58. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  59. package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.js +3 -2
  60. package/lib/commonjs/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.js.map +1 -1
  61. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js +2 -1
  62. package/lib/commonjs/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
  63. package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js +2 -1
  64. package/lib/commonjs/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js.map +1 -1
  65. package/lib/commonjs/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.js +39 -0
  66. package/lib/commonjs/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.js.map +1 -0
  67. package/lib/commonjs/domain/groupChannelNotifications/component/GroupChannelNotificationsView.js +140 -0
  68. package/lib/commonjs/domain/groupChannelNotifications/component/GroupChannelNotificationsView.js.map +1 -0
  69. package/lib/commonjs/domain/groupChannelNotifications/index.js +46 -0
  70. package/lib/commonjs/domain/groupChannelNotifications/index.js.map +1 -0
  71. package/lib/commonjs/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.js +33 -0
  72. package/lib/commonjs/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.js.map +1 -0
  73. package/lib/commonjs/domain/groupChannelNotifications/module/moduleContext.js +45 -0
  74. package/lib/commonjs/domain/groupChannelNotifications/module/moduleContext.js.map +1 -0
  75. package/lib/commonjs/domain/groupChannelNotifications/types.js +6 -0
  76. package/lib/commonjs/domain/groupChannelNotifications/types.js.map +1 -0
  77. package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsList.js +2 -1
  78. package/lib/commonjs/domain/groupChannelOperators/component/GroupChannelOperatorsList.js.map +1 -1
  79. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +49 -6
  80. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  81. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js +9 -14
  82. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  83. package/lib/commonjs/domain/groupChannelSettings/types.js.map +1 -1
  84. package/lib/commonjs/domain/groupChannelUserList/types.js.map +1 -1
  85. package/lib/commonjs/domain/userList/component/UserListList.js +4 -1
  86. package/lib/commonjs/domain/userList/component/UserListList.js.map +1 -1
  87. package/lib/commonjs/domain/userList/module/createUserListModule.js.map +1 -1
  88. package/lib/commonjs/fragments/createGroupChannelCreateFragment.js.map +1 -1
  89. package/lib/commonjs/fragments/createGroupChannelFragment.js +11 -4
  90. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  91. package/lib/commonjs/fragments/createGroupChannelInviteFragment.js.map +1 -1
  92. package/lib/commonjs/fragments/createGroupChannelNotificationsFragment.js +34 -0
  93. package/lib/commonjs/fragments/createGroupChannelNotificationsFragment.js.map +1 -0
  94. package/lib/commonjs/fragments/createGroupChannelSettingsFragment.js +3 -1
  95. package/lib/commonjs/fragments/createGroupChannelSettingsFragment.js.map +1 -1
  96. package/lib/commonjs/hooks/useConnection.js +3 -0
  97. package/lib/commonjs/hooks/useConnection.js.map +1 -1
  98. package/lib/commonjs/hooks/useContext.js +11 -1
  99. package/lib/commonjs/hooks/useContext.js.map +1 -1
  100. package/lib/commonjs/hooks/useKeyboardStatus.js +93 -0
  101. package/lib/commonjs/hooks/useKeyboardStatus.js.map +1 -0
  102. package/lib/commonjs/hooks/useMentionSuggestion.js +110 -0
  103. package/lib/commonjs/hooks/useMentionSuggestion.js.map +1 -0
  104. package/lib/commonjs/hooks/useMentionTextInput.js +139 -0
  105. package/lib/commonjs/hooks/useMentionTextInput.js.map +1 -0
  106. package/lib/commonjs/index.js +95 -40
  107. package/lib/commonjs/index.js.map +1 -1
  108. package/lib/commonjs/libs/EmojiManager.js +100 -0
  109. package/lib/commonjs/libs/EmojiManager.js.map +1 -0
  110. package/lib/commonjs/libs/MentionConfig.js +47 -0
  111. package/lib/commonjs/libs/MentionConfig.js.map +1 -0
  112. package/lib/commonjs/libs/MentionManager.js +235 -0
  113. package/lib/commonjs/libs/MentionManager.js.map +1 -0
  114. package/lib/commonjs/localization/StringSet.type.js +17 -5
  115. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  116. package/lib/commonjs/types.js.map +1 -1
  117. package/lib/commonjs/utils/common.js +19 -0
  118. package/lib/commonjs/utils/common.js.map +1 -0
  119. package/lib/commonjs/version.js +1 -1
  120. package/lib/commonjs/version.js.map +1 -1
  121. package/lib/module/components/ChatFlatList.js +3 -2
  122. package/lib/module/components/ChatFlatList.js.map +1 -1
  123. package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js +11 -6
  124. package/lib/module/components/MessageRenderer/FileMessage/BaseFileMessage.js.map +1 -1
  125. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js +12 -2
  126. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
  127. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +25 -10
  128. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
  129. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js +86 -12
  130. package/lib/module/components/MessageRenderer/UserMessage/BaseUserMessage.js.map +1 -1
  131. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js +101 -17
  132. package/lib/module/components/MessageRenderer/UserMessage/OpenGraphUserMessage.js.map +1 -1
  133. package/lib/module/components/MessageRenderer/UserMessage/index.js.map +1 -1
  134. package/lib/module/components/MessageRenderer/index.js +21 -4
  135. package/lib/module/components/MessageRenderer/index.js.map +1 -1
  136. package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js +132 -0
  137. package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -0
  138. package/lib/module/components/ReactionAddons/MessageReactionAddon.js +118 -0
  139. package/lib/module/components/ReactionAddons/MessageReactionAddon.js.map +1 -0
  140. package/lib/module/components/ReactionAddons/ReactionRoundedButton.js +74 -0
  141. package/lib/module/components/ReactionAddons/ReactionRoundedButton.js.map +1 -0
  142. package/lib/module/components/ReactionAddons/index.js +7 -0
  143. package/lib/module/components/ReactionAddons/index.js.map +1 -0
  144. package/lib/module/components/ReactionBottomSheets/ReactionListBottomSheet.js +135 -0
  145. package/lib/module/components/ReactionBottomSheets/ReactionListBottomSheet.js.map +1 -0
  146. package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +259 -0
  147. package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -0
  148. package/lib/module/components/ReactionBottomSheets/index.js +7 -0
  149. package/lib/module/components/ReactionBottomSheets/index.js.map +1 -0
  150. package/lib/module/constants.js +1 -0
  151. package/lib/module/constants.js.map +1 -1
  152. package/lib/module/containers/GroupChannelPreviewContainer.js +4 -1
  153. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
  154. package/lib/module/containers/SendbirdUIKitContainer.js +116 -80
  155. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  156. package/lib/module/contexts/ReactionCtx.js +85 -0
  157. package/lib/module/contexts/ReactionCtx.js.map +1 -0
  158. package/lib/module/contexts/SendbirdChatCtx.js +18 -6
  159. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  160. package/lib/module/contexts/UserProfileCtx.js +7 -0
  161. package/lib/module/contexts/UserProfileCtx.js.map +1 -1
  162. package/lib/module/domain/groupChannel/component/GroupChannelInput/EditInput.js +34 -39
  163. package/lib/module/domain/groupChannel/component/GroupChannelInput/EditInput.js.map +1 -1
  164. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js +24 -13
  165. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  166. package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js +117 -33
  167. package/lib/module/domain/groupChannel/component/GroupChannelInput/index.js.map +1 -1
  168. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +32 -14
  169. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  170. package/lib/module/domain/groupChannel/component/GroupChannelSuggestedMentionList.js +188 -0
  171. package/lib/module/domain/groupChannel/component/GroupChannelSuggestedMentionList.js.map +1 -0
  172. package/lib/module/domain/groupChannel/index.js +1 -0
  173. package/lib/module/domain/groupChannel/index.js.map +1 -1
  174. package/lib/module/domain/groupChannel/module/createGroupChannelModule.js +3 -0
  175. package/lib/module/domain/groupChannel/module/createGroupChannelModule.js.map +1 -1
  176. package/lib/module/domain/groupChannel/module/moduleContext.js +4 -4
  177. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  178. package/lib/module/domain/groupChannel/types.js.map +1 -1
  179. package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.js +4 -3
  180. package/lib/module/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.js.map +1 -1
  181. package/lib/module/domain/groupChannelList/component/GroupChannelListList.js +3 -2
  182. package/lib/module/domain/groupChannelList/component/GroupChannelListList.js.map +1 -1
  183. package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js +3 -2
  184. package/lib/module/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.js.map +1 -1
  185. package/lib/module/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.js +25 -0
  186. package/lib/module/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.js.map +1 -0
  187. package/lib/module/domain/groupChannelNotifications/component/GroupChannelNotificationsView.js +122 -0
  188. package/lib/module/domain/groupChannelNotifications/component/GroupChannelNotificationsView.js.map +1 -0
  189. package/lib/module/domain/groupChannelNotifications/index.js +5 -0
  190. package/lib/module/domain/groupChannelNotifications/index.js.map +1 -0
  191. package/lib/module/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.js +21 -0
  192. package/lib/module/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.js.map +1 -0
  193. package/lib/module/domain/groupChannelNotifications/module/moduleContext.js +25 -0
  194. package/lib/module/domain/groupChannelNotifications/module/moduleContext.js.map +1 -0
  195. package/lib/module/domain/groupChannelNotifications/types.js +2 -0
  196. package/lib/module/domain/groupChannelNotifications/types.js.map +1 -0
  197. package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsList.js +3 -2
  198. package/lib/module/domain/groupChannelOperators/component/GroupChannelOperatorsList.js.map +1 -1
  199. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +46 -6
  200. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  201. package/lib/module/domain/groupChannelSettings/module/moduleContext.js +10 -15
  202. package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  203. package/lib/module/domain/groupChannelSettings/types.js.map +1 -1
  204. package/lib/module/domain/groupChannelUserList/types.js.map +1 -1
  205. package/lib/module/domain/userList/component/UserListList.js +3 -1
  206. package/lib/module/domain/userList/component/UserListList.js.map +1 -1
  207. package/lib/module/domain/userList/module/createUserListModule.js.map +1 -1
  208. package/lib/module/fragments/createGroupChannelCreateFragment.js.map +1 -1
  209. package/lib/module/fragments/createGroupChannelFragment.js +11 -4
  210. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  211. package/lib/module/fragments/createGroupChannelInviteFragment.js.map +1 -1
  212. package/lib/module/fragments/createGroupChannelNotificationsFragment.js +22 -0
  213. package/lib/module/fragments/createGroupChannelNotificationsFragment.js.map +1 -0
  214. package/lib/module/fragments/createGroupChannelSettingsFragment.js +3 -1
  215. package/lib/module/fragments/createGroupChannelSettingsFragment.js.map +1 -1
  216. package/lib/module/hooks/useConnection.js +3 -0
  217. package/lib/module/hooks/useConnection.js.map +1 -1
  218. package/lib/module/hooks/useContext.js +6 -0
  219. package/lib/module/hooks/useContext.js.map +1 -1
  220. package/lib/module/hooks/useKeyboardStatus.js +75 -0
  221. package/lib/module/hooks/useKeyboardStatus.js.map +1 -0
  222. package/lib/module/hooks/useMentionSuggestion.js +100 -0
  223. package/lib/module/hooks/useMentionSuggestion.js.map +1 -0
  224. package/lib/module/hooks/useMentionTextInput.js +128 -0
  225. package/lib/module/hooks/useMentionTextInput.js.map +1 -0
  226. package/lib/module/index.js +8 -3
  227. package/lib/module/index.js.map +1 -1
  228. package/lib/module/libs/EmojiManager.js +90 -0
  229. package/lib/module/libs/EmojiManager.js.map +1 -0
  230. package/lib/module/libs/MentionConfig.js +39 -0
  231. package/lib/module/libs/MentionConfig.js.map +1 -0
  232. package/lib/module/libs/MentionManager.js +223 -0
  233. package/lib/module/libs/MentionManager.js.map +1 -0
  234. package/lib/module/localization/StringSet.type.js +18 -6
  235. package/lib/module/localization/StringSet.type.js.map +1 -1
  236. package/lib/module/types.js.map +1 -1
  237. package/lib/module/utils/common.js +7 -0
  238. package/lib/module/utils/common.js.map +1 -0
  239. package/lib/module/version.js +1 -1
  240. package/lib/module/version.js.map +1 -1
  241. package/lib/typescript/__template__/types.d.ts +3 -3
  242. package/lib/typescript/src/components/ChannelCover.d.ts +1 -1
  243. package/lib/typescript/src/components/ChatFlatList.d.ts +1 -1
  244. package/lib/typescript/src/components/FileViewer.d.ts +1 -1
  245. package/lib/typescript/src/components/MessageRenderer/AdminMessage/index.d.ts +1 -1
  246. package/lib/typescript/src/components/MessageRenderer/FileMessage/BaseFileMessage.d.ts +2 -2
  247. package/lib/typescript/src/components/MessageRenderer/FileMessage/ImageFileMessage.d.ts +1 -1
  248. package/lib/typescript/src/components/MessageRenderer/FileMessage/VideoFileMessage.d.ts +1 -1
  249. package/lib/typescript/src/components/MessageRenderer/FileMessage/index.d.ts +11 -2
  250. package/lib/typescript/src/components/MessageRenderer/MessageDateSeparator.d.ts +1 -1
  251. package/lib/typescript/src/components/MessageRenderer/MessageIncomingAvatar.d.ts +1 -1
  252. package/lib/typescript/src/components/MessageRenderer/MessageIncomingSenderName.d.ts +1 -1
  253. package/lib/typescript/src/components/MessageRenderer/MessageOutgoingStatus.d.ts +1 -1
  254. package/lib/typescript/src/components/MessageRenderer/MessageTime.d.ts +1 -1
  255. package/lib/typescript/src/components/MessageRenderer/UnknownMessage/index.d.ts +1 -1
  256. package/lib/typescript/src/components/MessageRenderer/UserMessage/BaseUserMessage.d.ts +1 -1
  257. package/lib/typescript/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.d.ts +2 -2
  258. package/lib/typescript/src/components/MessageRenderer/UserMessage/index.d.ts +4 -1
  259. package/lib/typescript/src/components/MessageRenderer/index.d.ts +4 -3
  260. package/lib/typescript/src/components/NewMessagesButton.d.ts +1 -1
  261. package/lib/typescript/src/components/ReactionAddons/BottomSheetReactionAddon.d.ts +8 -0
  262. package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +6 -0
  263. package/lib/typescript/src/components/ReactionAddons/ReactionRoundedButton.d.ts +14 -0
  264. package/lib/typescript/src/components/ReactionAddons/index.d.ts +11 -0
  265. package/lib/typescript/src/components/ReactionBottomSheets/ReactionListBottomSheet.d.ts +3 -0
  266. package/lib/typescript/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.d.ts +3 -0
  267. package/lib/typescript/src/components/ReactionBottomSheets/index.d.ts +20 -0
  268. package/lib/typescript/src/components/ScrollToBottomButton.d.ts +1 -1
  269. package/lib/typescript/src/components/StatusComposition.d.ts +1 -1
  270. package/lib/typescript/src/components/TypedPlaceholder.d.ts +1 -1
  271. package/lib/typescript/src/components/UserActionBar.d.ts +1 -1
  272. package/lib/typescript/src/components/UserSelectableBar.d.ts +1 -1
  273. package/lib/typescript/src/constants.d.ts +1 -0
  274. package/lib/typescript/src/containers/GroupChannelPreviewContainer.d.ts +1 -1
  275. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +12 -3
  276. package/lib/typescript/src/contexts/LocalizationCtx.d.ts +2 -2
  277. package/lib/typescript/src/contexts/PlatformServiceCtx.d.ts +1 -1
  278. package/lib/typescript/src/contexts/ReactionCtx.d.ts +18 -0
  279. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +10 -2
  280. package/lib/typescript/src/contexts/UserProfileCtx.d.ts +4 -4
  281. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/EditInput.d.ts +35 -7
  282. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/SendInput.d.ts +32 -5
  283. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput/index.d.ts +19 -2
  284. package/lib/typescript/src/domain/groupChannel/component/GroupChannelSuggestedMentionList.d.ts +3 -0
  285. package/lib/typescript/src/domain/groupChannel/index.d.ts +1 -0
  286. package/lib/typescript/src/domain/groupChannel/module/createGroupChannelModule.d.ts +1 -1
  287. package/lib/typescript/src/domain/groupChannel/types.d.ts +24 -7
  288. package/lib/typescript/src/domain/groupChannelBannedUsers/types.d.ts +3 -3
  289. package/lib/typescript/src/domain/groupChannelList/types.d.ts +2 -2
  290. package/lib/typescript/src/domain/groupChannelModeration/types.d.ts +3 -3
  291. package/lib/typescript/src/domain/groupChannelMutedMembers/types.d.ts +3 -3
  292. package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.d.ts +3 -0
  293. package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsView.d.ts +2 -0
  294. package/lib/typescript/src/domain/groupChannelNotifications/index.d.ts +4 -0
  295. package/lib/typescript/src/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.d.ts +3 -0
  296. package/lib/typescript/src/domain/groupChannelNotifications/module/moduleContext.d.ts +3 -0
  297. package/lib/typescript/src/domain/groupChannelNotifications/types.d.ts +33 -0
  298. package/lib/typescript/src/domain/groupChannelOperators/types.d.ts +3 -3
  299. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.d.ts +1 -1
  300. package/lib/typescript/src/domain/groupChannelSettings/types.d.ts +3 -1
  301. package/lib/typescript/src/domain/groupChannelUserList/types.d.ts +6 -6
  302. package/lib/typescript/src/domain/userList/component/UserListList.d.ts +2 -1
  303. package/lib/typescript/src/domain/userList/module/createUserListModule.d.ts +2 -1
  304. package/lib/typescript/src/fragments/createGroupChannelCreateFragment.d.ts +1 -1
  305. package/lib/typescript/src/fragments/createGroupChannelInviteFragment.d.ts +1 -1
  306. package/lib/typescript/src/fragments/createGroupChannelNotificationsFragment.d.ts +3 -0
  307. package/lib/typescript/src/hooks/useConnection.d.ts +1 -1
  308. package/lib/typescript/src/hooks/useContext.d.ts +4 -0
  309. package/lib/typescript/src/hooks/useKeyboardStatus.d.ts +6 -0
  310. package/lib/typescript/src/hooks/useMentionSuggestion.d.ts +17 -0
  311. package/lib/typescript/src/hooks/useMentionTextInput.d.ts +18 -0
  312. package/lib/typescript/src/index.d.ts +7 -2
  313. package/lib/typescript/src/libs/EmojiManager.d.ts +16 -0
  314. package/lib/typescript/src/libs/MentionConfig.d.ts +24 -0
  315. package/lib/typescript/src/libs/MentionManager.d.ts +61 -0
  316. package/lib/typescript/src/localization/StringSet.type.d.ts +16 -2
  317. package/lib/typescript/src/platform/createMediaService.expo.d.ts +1 -1
  318. package/lib/typescript/src/platform/createMediaService.native.d.ts +1 -1
  319. package/lib/typescript/src/platform/dynamicModule.d.ts +1 -1
  320. package/lib/typescript/src/platform/types.d.ts +5 -5
  321. package/lib/typescript/src/types.d.ts +13 -4
  322. package/lib/typescript/src/utils/common.d.ts +1 -0
  323. package/lib/typescript/src/version.d.ts +1 -1
  324. package/package.json +6 -6
  325. package/src/components/ChatFlatList.tsx +2 -1
  326. package/src/components/MessageRenderer/FileMessage/BaseFileMessage.tsx +17 -12
  327. package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +25 -18
  328. package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +20 -10
  329. package/src/components/MessageRenderer/UserMessage/BaseUserMessage.tsx +82 -14
  330. package/src/components/MessageRenderer/UserMessage/OpenGraphUserMessage.tsx +135 -61
  331. package/src/components/MessageRenderer/UserMessage/index.tsx +8 -1
  332. package/src/components/MessageRenderer/index.tsx +39 -7
  333. package/src/components/ReactionAddons/BottomSheetReactionAddon.tsx +106 -0
  334. package/src/components/ReactionAddons/MessageReactionAddon.tsx +123 -0
  335. package/src/components/ReactionAddons/ReactionRoundedButton.tsx +71 -0
  336. package/src/components/ReactionAddons/index.tsx +7 -0
  337. package/src/components/ReactionBottomSheets/ReactionListBottomSheet.tsx +113 -0
  338. package/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.tsx +249 -0
  339. package/src/components/ReactionBottomSheets/index.tsx +24 -0
  340. package/src/constants.ts +2 -0
  341. package/src/containers/GroupChannelPreviewContainer.tsx +3 -1
  342. package/src/containers/SendbirdUIKitContainer.tsx +141 -83
  343. package/src/contexts/ReactionCtx.tsx +102 -0
  344. package/src/contexts/SendbirdChatCtx.tsx +24 -2
  345. package/src/contexts/UserProfileCtx.tsx +9 -0
  346. package/src/domain/groupChannel/component/GroupChannelInput/EditInput.tsx +56 -30
  347. package/src/domain/groupChannel/component/GroupChannelInput/SendInput.tsx +48 -19
  348. package/src/domain/groupChannel/component/GroupChannelInput/index.tsx +137 -43
  349. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +27 -10
  350. package/src/domain/groupChannel/component/GroupChannelSuggestedMentionList.tsx +173 -0
  351. package/src/domain/groupChannel/index.ts +1 -0
  352. package/src/domain/groupChannel/module/createGroupChannelModule.tsx +12 -1
  353. package/src/domain/groupChannel/module/moduleContext.tsx +4 -4
  354. package/src/domain/groupChannel/types.ts +28 -5
  355. package/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.tsx +3 -2
  356. package/src/domain/groupChannelList/component/GroupChannelListList.tsx +2 -1
  357. package/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.tsx +2 -1
  358. package/src/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.tsx +14 -0
  359. package/src/domain/groupChannelNotifications/component/GroupChannelNotificationsView.tsx +128 -0
  360. package/src/domain/groupChannelNotifications/index.ts +4 -0
  361. package/src/domain/groupChannelNotifications/module/createGroupChannelNotificationsModule.tsx +15 -0
  362. package/src/domain/groupChannelNotifications/module/moduleContext.tsx +31 -0
  363. package/src/domain/groupChannelNotifications/types.ts +38 -0
  364. package/src/domain/groupChannelOperators/component/GroupChannelOperatorsList.tsx +2 -1
  365. package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +42 -3
  366. package/src/domain/groupChannelSettings/module/moduleContext.tsx +9 -12
  367. package/src/domain/groupChannelSettings/types.ts +2 -0
  368. package/src/domain/groupChannelUserList/types.ts +7 -2
  369. package/src/domain/userList/component/UserListList.tsx +5 -1
  370. package/src/domain/userList/module/createUserListModule.tsx +3 -1
  371. package/src/fragments/createGroupChannelCreateFragment.tsx +8 -2
  372. package/src/fragments/createGroupChannelFragment.tsx +19 -6
  373. package/src/fragments/createGroupChannelInviteFragment.tsx +2 -2
  374. package/src/fragments/createGroupChannelNotificationsFragment.tsx +27 -0
  375. package/src/fragments/createGroupChannelSettingsFragment.tsx +2 -0
  376. package/src/hooks/useConnection.ts +3 -1
  377. package/src/hooks/useContext.ts +7 -0
  378. package/src/hooks/useKeyboardStatus.ts +54 -0
  379. package/src/hooks/useMentionSuggestion.ts +106 -0
  380. package/src/hooks/useMentionTextInput.ts +139 -0
  381. package/src/index.ts +13 -2
  382. package/src/libs/EmojiManager.ts +80 -0
  383. package/src/libs/MentionConfig.ts +40 -0
  384. package/src/libs/MentionManager.tsx +240 -0
  385. package/src/localization/StringSet.type.ts +38 -8
  386. package/src/types.ts +12 -0
  387. package/src/utils/common.ts +8 -0
  388. package/src/version.ts +1 -1
@@ -19,18 +19,26 @@ var _openChannel = require("@sendbird/chat/openChannel");
19
19
 
20
20
  var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
21
21
 
22
+ var _uikitUtils = require("@sendbird/uikit-utils");
23
+
22
24
  var _LocalizationCtx = require("../contexts/LocalizationCtx");
23
25
 
24
26
  var _PlatformServiceCtx = require("../contexts/PlatformServiceCtx");
25
27
 
28
+ var _ReactionCtx = require("../contexts/ReactionCtx");
29
+
26
30
  var _SendbirdChatCtx = require("../contexts/SendbirdChatCtx");
27
31
 
28
32
  var _UserProfileCtx = require("../contexts/UserProfileCtx");
29
33
 
30
- var _useContext = require("../hooks/useContext");
34
+ var _EmojiManager = _interopRequireDefault(require("../libs/EmojiManager"));
31
35
 
32
36
  var _InternalLocalCacheStorage = _interopRequireDefault(require("../libs/InternalLocalCacheStorage"));
33
37
 
38
+ var _MentionConfig = _interopRequireDefault(require("../libs/MentionConfig"));
39
+
40
+ var _MentionManager = _interopRequireDefault(require("../libs/MentionManager"));
41
+
34
42
  var _StringSet = _interopRequireDefault(require("../localization/StringSet.en"));
35
43
 
36
44
  var _dynamicModule = _interopRequireDefault(require("../platform/dynamicModule"));
@@ -49,7 +57,14 @@ const NetInfo = _dynamicModule.default.get('@react-native-community/netinfo', 'w
49
57
 
50
58
  const SendbirdUIKit = Object.freeze({
51
59
  VERSION: _version.default,
52
- PLATFORM: _reactNative.Platform.OS.toLowerCase()
60
+ PLATFORM: _reactNative.Platform.OS.toLowerCase(),
61
+ DEFAULT: {
62
+ AUTO_PUSH_TOKEN_REGISTRATION: true,
63
+ CHANNEL_LIST_TYPING_INDICATOR: false,
64
+ CHANNEL_LIST_MESSAGE_RECEIPT_STATUS: false,
65
+ USE_USER_ID_FOR_NICKNAME: false,
66
+ USER_MENTION: false
67
+ }
53
68
  });
54
69
  exports.SendbirdUIKit = SendbirdUIKit;
55
70
 
@@ -63,71 +78,57 @@ const SendbirdUIKitContainer = _ref => {
63
78
  styles,
64
79
  toast,
65
80
  userProfile,
81
+ userMention,
66
82
  errorBoundary
67
83
  } = _ref;
68
- const unsubscribes = (0, _react.useRef)([]).current;
69
-
70
- const getSendbirdSDK = () => {
71
- let sdk;
72
- sdk = _chat.default.init({
73
- appId,
74
- modules: [new _groupChannel.GroupChannelModule(), new _openChannel.OpenChannelModule()],
75
- localCacheEnabled: Boolean(chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.localCacheStorage),
76
- // @ts-ignore
77
- useAsyncStorageStore: chatOptions !== null && chatOptions !== void 0 && chatOptions.localCacheStorage ? new _InternalLocalCacheStorage.default(chatOptions.localCacheStorage) : undefined
84
+ const defaultStringSet = (localization === null || localization === void 0 ? void 0 : localization.stringSet) ?? _StringSet.default;
85
+ const isFirstMount = (0, _uikitUtils.useIsFirstMount)();
86
+ const unsubscribes = (0, _react.useRef)([]);
87
+ const internalStorage = (0, _react.useMemo)(() => chatOptions !== null && chatOptions !== void 0 && chatOptions.localCacheStorage ? new _InternalLocalCacheStorage.default(chatOptions.localCacheStorage) : undefined, [chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.localCacheStorage]);
88
+ const [sdkInstance, setSdkInstance] = (0, _react.useState)(() => {
89
+ const sendbird = initializeSendbird(appId, internalStorage, chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.onInitialized);
90
+ unsubscribes.current = sendbird.unsubscribes;
91
+ return sendbird.chatSDK;
92
+ });
93
+ const emojiManager = (0, _react.useMemo)(() => new _EmojiManager.default(internalStorage), [internalStorage]);
94
+ const mentionManager = (0, _react.useMemo)(() => {
95
+ const config = new _MentionConfig.default({
96
+ mentionLimit: (userMention === null || userMention === void 0 ? void 0 : userMention.mentionLimit) || _MentionConfig.default.DEFAULT.MENTION_LIMIT,
97
+ suggestionLimit: (userMention === null || userMention === void 0 ? void 0 : userMention.suggestionLimit) || _MentionConfig.default.DEFAULT.SUGGESTION_LIMIT,
98
+ debounceMills: (userMention === null || userMention === void 0 ? void 0 : userMention.debounceMills) ?? _MentionConfig.default.DEFAULT.DEBOUNCE_MILLS,
99
+ delimiter: _MentionConfig.default.DEFAULT.DELIMITER,
100
+ trigger: _MentionConfig.default.DEFAULT.TRIGGER
78
101
  });
79
-
80
- if (chatOptions !== null && chatOptions !== void 0 && chatOptions.onInitialized) {
81
- sdk = chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.onInitialized(sdk);
82
- }
83
-
84
- if (SendbirdUIKit.VERSION) {
85
- sdk.addExtension('sb_uikit', SendbirdUIKit.VERSION);
102
+ return new _MentionManager.default(config, (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableUserMention) ?? SendbirdUIKit.DEFAULT.USER_MENTION);
103
+ }, [userMention === null || userMention === void 0 ? void 0 : userMention.mentionLimit, userMention === null || userMention === void 0 ? void 0 : userMention.suggestionLimit, userMention === null || userMention === void 0 ? void 0 : userMention.debounceMills]);
104
+ (0, _react.useLayoutEffect)(() => {
105
+ if (!isFirstMount) {
106
+ const sendbird = initializeSendbird(appId, internalStorage, chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.onInitialized);
107
+ setSdkInstance(sendbird.chatSDK);
108
+ unsubscribes.current = sendbird.unsubscribes;
86
109
  }
87
110
 
88
- if (SendbirdUIKit.PLATFORM) {
89
- sdk.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);
90
- }
91
-
92
- if (NetInfo !== null && NetInfo !== void 0 && NetInfo.addEventListener) {
93
- var _sdk$setOnlineListene, _sdk, _sdk$setOfflineListen, _sdk2;
94
-
95
- const listener = (callback, callbackType) => {
96
- const unsubscribe = NetInfo.addEventListener(state => {
97
- const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);
98
- if (online && callbackType === 'online') callback();
99
- if (!online && callbackType === 'offline') callback();
100
- });
101
- unsubscribes.push(unsubscribe);
102
- return unsubscribe;
103
- };
104
-
105
- (_sdk$setOnlineListene = (_sdk = sdk).setOnlineListener) === null || _sdk$setOnlineListene === void 0 ? void 0 : _sdk$setOnlineListene.call(_sdk, onOnline => listener(onOnline, 'online'));
106
- (_sdk$setOfflineListen = (_sdk2 = sdk).setOfflineListener) === null || _sdk$setOfflineListen === void 0 ? void 0 : _sdk$setOfflineListen.call(_sdk2, onOffline => listener(onOffline, 'offline'));
107
- }
108
-
109
- return sdk;
110
- };
111
-
112
- const [sdkInstance, setSdkInstance] = (0, _react.useState)(getSendbirdSDK);
113
- (0, _react.useEffect)(() => {
114
- setSdkInstance(getSendbirdSDK);
115
111
  return () => {
116
- unsubscribes.forEach(u => {
117
- try {
118
- u();
119
- } catch {}
120
- });
112
+ if (!isFirstMount) {
113
+ unsubscribes.current.forEach(u => {
114
+ try {
115
+ u();
116
+ } catch {}
117
+ });
118
+ }
121
119
  };
122
- }, [appId, chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.localCacheStorage]);
120
+ }, [appId, internalStorage]);
123
121
  return /*#__PURE__*/_react.default.createElement(_reactNativeSafeAreaContext.SafeAreaProvider, null, /*#__PURE__*/_react.default.createElement(_SendbirdChatCtx.SendbirdChatProvider, {
124
122
  sdkInstance: sdkInstance,
125
- enableAutoPushTokenRegistration: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableAutoPushTokenRegistration) ?? true,
126
- enableChannelListTypingIndicator: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableChannelListTypingIndicator) ?? false,
127
- enableChannelListMessageReceiptStatus: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableChannelListMessageReceiptStatus) ?? false,
128
- enableUseUserIdForNickname: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableUseUserIdForNickname) ?? false
123
+ emojiManager: emojiManager,
124
+ mentionManager: mentionManager,
125
+ enableAutoPushTokenRegistration: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableAutoPushTokenRegistration) ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION,
126
+ enableChannelListTypingIndicator: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableChannelListTypingIndicator) ?? SendbirdUIKit.DEFAULT.CHANNEL_LIST_TYPING_INDICATOR,
127
+ enableChannelListMessageReceiptStatus: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableChannelListMessageReceiptStatus) ?? SendbirdUIKit.DEFAULT.CHANNEL_LIST_MESSAGE_RECEIPT_STATUS,
128
+ enableUseUserIdForNickname: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableUseUserIdForNickname) ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME,
129
+ enableUserMention: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableUserMention) ?? SendbirdUIKit.DEFAULT.USER_MENTION
129
130
  }, /*#__PURE__*/_react.default.createElement(_LocalizationCtx.LocalizationProvider, {
130
- stringSet: (localization === null || localization === void 0 ? void 0 : localization.stringSet) ?? _StringSet.default
131
+ stringSet: defaultStringSet
131
132
  }, /*#__PURE__*/_react.default.createElement(_PlatformServiceCtx.PlatformServiceProvider, {
132
133
  fileService: platformServices.file,
133
134
  notificationService: platformServices.notification,
@@ -139,33 +140,72 @@ const SendbirdUIKitContainer = _ref => {
139
140
  HeaderComponent: (styles === null || styles === void 0 ? void 0 : styles.HeaderComponent) ?? _uikitReactNativeFoundation.Header,
140
141
  defaultTitleAlign: (styles === null || styles === void 0 ? void 0 : styles.defaultHeaderTitleAlign) ?? 'left',
141
142
  statusBarTranslucent: (styles === null || styles === void 0 ? void 0 : styles.statusBarTranslucent) ?? true
142
- }, /*#__PURE__*/_react.default.createElement(LocalizedDialogProvider, null, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.ToastProvider, {
143
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.ToastProvider, {
143
144
  dismissTimeout: toast === null || toast === void 0 ? void 0 : toast.dismissTimeout
144
145
  }, /*#__PURE__*/_react.default.createElement(_UserProfileCtx.UserProfileProvider, {
145
146
  onCreateChannel: userProfile === null || userProfile === void 0 ? void 0 : userProfile.onCreateChannel,
146
147
  onBeforeCreateChannel: userProfile === null || userProfile === void 0 ? void 0 : userProfile.onBeforeCreateChannel
147
- }, /*#__PURE__*/_react.default.createElement(_InternalErrorBoundaryContainer.default, errorBoundary, children))))))))));
148
+ }, /*#__PURE__*/_react.default.createElement(_ReactionCtx.ReactionProvider, null, /*#__PURE__*/_react.default.createElement(_LocalizationCtx.LocalizationContext.Consumer, null, value => {
149
+ const STRINGS = (value === null || value === void 0 ? void 0 : value.STRINGS) || defaultStringSet;
150
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.DialogProvider, {
151
+ defaultLabels: {
152
+ alert: {
153
+ ok: STRINGS.DIALOG.ALERT_DEFAULT_OK
154
+ },
155
+ prompt: {
156
+ ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,
157
+ cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,
158
+ placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER
159
+ }
160
+ }
161
+ }, /*#__PURE__*/_react.default.createElement(_InternalErrorBoundaryContainer.default, errorBoundary, children));
162
+ }))))))))));
148
163
  };
149
164
 
150
- const LocalizedDialogProvider = _ref2 => {
151
- let {
152
- children
153
- } = _ref2;
154
- const {
155
- STRINGS
156
- } = (0, _useContext.useLocalization)();
157
- return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.DialogProvider, {
158
- defaultLabels: {
159
- alert: {
160
- ok: STRINGS.DIALOG.ALERT_DEFAULT_OK
161
- },
162
- prompt: {
163
- ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,
164
- cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,
165
- placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER
166
- }
167
- }
168
- }, children);
165
+ const initializeSendbird = (appId, internalStorage, onInitialized) => {
166
+ const unsubscribes = [];
167
+ let chatSDK;
168
+ chatSDK = _chat.default.init({
169
+ appId,
170
+ modules: [new _groupChannel.GroupChannelModule(), new _openChannel.OpenChannelModule()],
171
+ localCacheEnabled: Boolean(internalStorage),
172
+ useAsyncStorageStore: internalStorage,
173
+ newInstance: true
174
+ });
175
+
176
+ if (onInitialized) {
177
+ chatSDK = onInitialized(chatSDK);
178
+ }
179
+
180
+ if (SendbirdUIKit.VERSION) {
181
+ chatSDK.addExtension('sb_uikit', SendbirdUIKit.VERSION);
182
+ }
183
+
184
+ if (SendbirdUIKit.PLATFORM) {
185
+ chatSDK.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);
186
+ }
187
+
188
+ if (NetInfo !== null && NetInfo !== void 0 && NetInfo.addEventListener) {
189
+ var _chatSDK$setOnlineLis, _chatSDK, _chatSDK$setOfflineLi, _chatSDK2;
190
+
191
+ const listener = (callback, callbackType) => {
192
+ const unsubscribe = NetInfo.addEventListener(state => {
193
+ const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);
194
+ if (online && callbackType === 'online') callback();
195
+ if (!online && callbackType === 'offline') callback();
196
+ });
197
+ unsubscribes.push(unsubscribe);
198
+ return unsubscribe;
199
+ };
200
+
201
+ (_chatSDK$setOnlineLis = (_chatSDK = chatSDK).setOnlineListener) === null || _chatSDK$setOnlineLis === void 0 ? void 0 : _chatSDK$setOnlineLis.call(_chatSDK, onOnline => listener(onOnline, 'online'));
202
+ (_chatSDK$setOfflineLi = (_chatSDK2 = chatSDK).setOfflineListener) === null || _chatSDK$setOfflineLi === void 0 ? void 0 : _chatSDK$setOfflineLi.call(_chatSDK2, onOffline => listener(onOffline, 'offline'));
203
+ }
204
+
205
+ return {
206
+ chatSDK,
207
+ unsubscribes
208
+ };
169
209
  };
170
210
 
171
211
  var _default = SendbirdUIKitContainer;
@@ -1 +1 @@
1
- {"version":3,"names":["NetInfo","SBUDynamicModule","get","SendbirdUIKit","Object","freeze","VERSION","PLATFORM","Platform","OS","toLowerCase","SendbirdUIKitContainer","children","appId","chatOptions","platformServices","localization","styles","toast","userProfile","errorBoundary","unsubscribes","useRef","current","getSendbirdSDK","sdk","Sendbird","init","modules","GroupChannelModule","OpenChannelModule","localCacheEnabled","Boolean","localCacheStorage","useAsyncStorageStore","InternalLocalCacheStorage","undefined","onInitialized","addExtension","addEventListener","listener","callback","callbackType","unsubscribe","state","online","isConnected","isInternetReachable","push","setOnlineListener","onOnline","setOfflineListener","onOffline","sdkInstance","setSdkInstance","useState","useEffect","forEach","u","enableAutoPushTokenRegistration","enableChannelListTypingIndicator","enableChannelListMessageReceiptStatus","enableUseUserIdForNickname","stringSet","StringSetEn","file","notification","clipboard","media","theme","LightUIKitTheme","HeaderComponent","Header","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","onCreateChannel","onBeforeCreateChannel","LocalizedDialogProvider","STRINGS","useLocalization","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport Sendbird from '@sendbird/chat';\nimport { GroupChannelModule } from '@sendbird/chat/groupChannel';\nimport { OpenChannelModule } from '@sendbird/chat/openChannel';\nimport type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n DialogProvider,\n Header,\n HeaderStyleProvider,\n LightUIKitTheme,\n ToastProvider,\n UIKitThemeProvider,\n} from '@sendbird/uikit-react-native-foundation';\nimport type {\n SendbirdBaseChannel,\n SendbirdChatSDK,\n SendbirdGroupChannelCreateParams,\n SendbirdMember,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\n\nimport { LocalizationProvider } from '../contexts/LocalizationCtx';\nimport { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';\nimport type { UIKitFeaturesInSendbirdChatContext } from '../contexts/SendbirdChatCtx';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';\nimport { UserProfileProvider } from '../contexts/UserProfileCtx';\nimport { useLocalization } from '../hooks/useContext';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport StringSetEn from '../localization/StringSet.en';\nimport type { StringSet } from '../localization/StringSet.type';\nimport SBUDynamicModule from '../platform/dynamicModule';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\nimport type { ErrorBoundaryProps, LocalCacheStorage } from '../types';\nimport VERSION from '../version';\nimport InternalErrorBoundaryContainer from './InternalErrorBoundaryContainer';\n\nconst NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');\n\nexport const SendbirdUIKit = Object.freeze({\n VERSION,\n PLATFORM: Platform.OS.toLowerCase(),\n});\n\nexport type SendbirdUIKitContainerProps = React.PropsWithChildren<{\n appId: string;\n platformServices: {\n file: FileServiceInterface;\n notification: NotificationServiceInterface;\n clipboard: ClipboardServiceInterface;\n media?: MediaServiceInterface;\n };\n chatOptions?: {\n localCacheStorage?: LocalCacheStorage;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n } & Partial<UIKitFeaturesInSendbirdChatContext>;\n localization?: {\n stringSet?: StringSet;\n };\n styles?: {\n theme?: UIKitTheme;\n statusBarTranslucent?: boolean;\n defaultHeaderTitleAlign?: 'left' | 'center';\n defaultHeaderHeight?: number;\n HeaderComponent?: HeaderStyleContextType['HeaderComponent'];\n };\n toast?: {\n dismissTimeout?: number;\n };\n userProfile?: {\n onCreateChannel: (channel: SendbirdBaseChannel) => void;\n onBeforeCreateChannel?: (\n channelParams: SendbirdGroupChannelCreateParams,\n users: SendbirdUser[] | SendbirdMember[],\n ) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;\n };\n errorBoundary?: {\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n };\n}>;\n\nconst SendbirdUIKitContainer = ({\n children,\n appId,\n chatOptions,\n platformServices,\n localization,\n styles,\n toast,\n userProfile,\n errorBoundary,\n}: SendbirdUIKitContainerProps) => {\n const unsubscribes = useRef<(() => void)[]>([]).current;\n const getSendbirdSDK = () => {\n let sdk: SendbirdChatSDK;\n\n sdk = Sendbird.init({\n appId,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: Boolean(chatOptions?.localCacheStorage),\n // @ts-ignore\n useAsyncStorageStore: chatOptions?.localCacheStorage\n ? new InternalLocalCacheStorage(chatOptions.localCacheStorage)\n : undefined,\n });\n\n if (chatOptions?.onInitialized) {\n sdk = chatOptions?.onInitialized(sdk);\n }\n\n if (SendbirdUIKit.VERSION) {\n sdk.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n\n if (SendbirdUIKit.PLATFORM) {\n sdk.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);\n }\n\n if (NetInfo?.addEventListener) {\n const listener = (callback: () => void, callbackType: 'online' | 'offline') => {\n const unsubscribe = NetInfo.addEventListener((state) => {\n const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);\n if (online && callbackType === 'online') callback();\n if (!online && callbackType === 'offline') callback();\n });\n unsubscribes.push(unsubscribe);\n return unsubscribe;\n };\n sdk.setOnlineListener?.((onOnline) => listener(onOnline, 'online'));\n sdk.setOfflineListener?.((onOffline) => listener(onOffline, 'offline'));\n }\n return sdk;\n };\n\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(getSendbirdSDK);\n\n useEffect(() => {\n setSdkInstance(getSendbirdSDK);\n return () => {\n unsubscribes.forEach((u) => {\n try {\n u();\n } catch {}\n });\n };\n }, [appId, chatOptions?.localCacheStorage]);\n\n return (\n <SafeAreaProvider>\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n enableAutoPushTokenRegistration={chatOptions?.enableAutoPushTokenRegistration ?? true}\n enableChannelListTypingIndicator={chatOptions?.enableChannelListTypingIndicator ?? false}\n enableChannelListMessageReceiptStatus={chatOptions?.enableChannelListMessageReceiptStatus ?? false}\n enableUseUserIdForNickname={chatOptions?.enableUseUserIdForNickname ?? false}\n >\n <LocalizationProvider stringSet={localization?.stringSet ?? StringSetEn}>\n <PlatformServiceProvider\n fileService={platformServices.file}\n notificationService={platformServices.notification}\n clipboardService={platformServices.clipboard}\n mediaService={platformServices.media}\n >\n <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>\n <HeaderStyleProvider\n HeaderComponent={styles?.HeaderComponent ?? Header}\n defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <LocalizedDialogProvider>\n <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <UserProfileProvider\n onCreateChannel={userProfile?.onCreateChannel}\n onBeforeCreateChannel={userProfile?.onBeforeCreateChannel}\n >\n <InternalErrorBoundaryContainer {...errorBoundary}>{children}</InternalErrorBoundaryContainer>\n </UserProfileProvider>\n </ToastProvider>\n </LocalizedDialogProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </SafeAreaProvider>\n );\n};\n\nconst LocalizedDialogProvider = ({ children }: React.PropsWithChildren) => {\n const { STRINGS } = useLocalization();\n return (\n <DialogProvider\n defaultLabels={{\n alert: {\n ok: STRINGS.DIALOG.ALERT_DEFAULT_OK,\n },\n prompt: {\n ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,\n cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,\n placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,\n },\n }}\n >\n {children}\n </DialogProvider>\n );\n};\n\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
1
+ {"version":3,"names":["NetInfo","SBUDynamicModule","get","SendbirdUIKit","Object","freeze","VERSION","PLATFORM","Platform","OS","toLowerCase","DEFAULT","AUTO_PUSH_TOKEN_REGISTRATION","CHANNEL_LIST_TYPING_INDICATOR","CHANNEL_LIST_MESSAGE_RECEIPT_STATUS","USE_USER_ID_FOR_NICKNAME","USER_MENTION","SendbirdUIKitContainer","children","appId","chatOptions","platformServices","localization","styles","toast","userProfile","userMention","errorBoundary","defaultStringSet","stringSet","StringSetEn","isFirstMount","useIsFirstMount","unsubscribes","useRef","internalStorage","useMemo","localCacheStorage","InternalLocalCacheStorage","undefined","sdkInstance","setSdkInstance","useState","sendbird","initializeSendbird","onInitialized","current","chatSDK","emojiManager","EmojiManager","mentionManager","config","MentionConfig","mentionLimit","MENTION_LIMIT","suggestionLimit","SUGGESTION_LIMIT","debounceMills","DEBOUNCE_MILLS","delimiter","DELIMITER","trigger","TRIGGER","MentionManager","enableUserMention","useLayoutEffect","forEach","u","enableAutoPushTokenRegistration","enableChannelListTypingIndicator","enableChannelListMessageReceiptStatus","enableUseUserIdForNickname","file","notification","clipboard","media","theme","LightUIKitTheme","HeaderComponent","Header","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","onCreateChannel","onBeforeCreateChannel","value","STRINGS","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER","Sendbird","init","modules","GroupChannelModule","OpenChannelModule","localCacheEnabled","Boolean","useAsyncStorageStore","newInstance","addExtension","addEventListener","listener","callback","callbackType","unsubscribe","state","online","isConnected","isInternetReachable","push","setOnlineListener","onOnline","setOfflineListener","onOffline"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport Sendbird from '@sendbird/chat';\nimport { GroupChannelModule } from '@sendbird/chat/groupChannel';\nimport { OpenChannelModule } from '@sendbird/chat/openChannel';\nimport type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n DialogProvider,\n Header,\n HeaderStyleProvider,\n LightUIKitTheme,\n ToastProvider,\n UIKitThemeProvider,\n} from '@sendbird/uikit-react-native-foundation';\nimport type {\n SendbirdBaseChannel,\n SendbirdChatSDK,\n SendbirdGroupChannelCreateParams,\n SendbirdMember,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\nimport { useIsFirstMount } from '@sendbird/uikit-utils';\n\nimport { LocalizationContext, LocalizationProvider } from '../contexts/LocalizationCtx';\nimport { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';\nimport { ReactionProvider } from '../contexts/ReactionCtx';\nimport type { UIKitFeaturesInSendbirdChatContext } from '../contexts/SendbirdChatCtx';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';\nimport { UserProfileProvider } from '../contexts/UserProfileCtx';\nimport EmojiManager from '../libs/EmojiManager';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport MentionConfig, { MentionConfigInterface } from '../libs/MentionConfig';\nimport MentionManager from '../libs/MentionManager';\nimport StringSetEn from '../localization/StringSet.en';\nimport type { StringSet } from '../localization/StringSet.type';\nimport SBUDynamicModule from '../platform/dynamicModule';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\nimport type { ErrorBoundaryProps, LocalCacheStorage } from '../types';\nimport VERSION from '../version';\nimport InternalErrorBoundaryContainer from './InternalErrorBoundaryContainer';\n\nconst NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');\n\nexport const SendbirdUIKit = Object.freeze({\n VERSION,\n PLATFORM: Platform.OS.toLowerCase(),\n DEFAULT: {\n AUTO_PUSH_TOKEN_REGISTRATION: true,\n CHANNEL_LIST_TYPING_INDICATOR: false,\n CHANNEL_LIST_MESSAGE_RECEIPT_STATUS: false,\n USE_USER_ID_FOR_NICKNAME: false,\n USER_MENTION: false,\n },\n});\n\nexport type SendbirdUIKitContainerProps = React.PropsWithChildren<{\n appId: string;\n platformServices: {\n file: FileServiceInterface;\n notification: NotificationServiceInterface;\n clipboard: ClipboardServiceInterface;\n media?: MediaServiceInterface;\n };\n chatOptions?: {\n localCacheStorage?: LocalCacheStorage;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n } & Partial<UIKitFeaturesInSendbirdChatContext>;\n localization?: {\n stringSet?: StringSet;\n };\n styles?: {\n theme?: UIKitTheme;\n statusBarTranslucent?: boolean;\n defaultHeaderTitleAlign?: 'left' | 'center';\n defaultHeaderHeight?: number;\n HeaderComponent?: HeaderStyleContextType['HeaderComponent'];\n };\n toast?: {\n dismissTimeout?: number;\n };\n userProfile?: {\n onCreateChannel: (channel: SendbirdBaseChannel) => void;\n onBeforeCreateChannel?: (\n channelParams: SendbirdGroupChannelCreateParams,\n users: SendbirdUser[] | SendbirdMember[],\n ) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;\n };\n userMention?: Pick<Partial<MentionConfigInterface>, 'mentionLimit' | 'suggestionLimit' | 'debounceMills'>;\n errorBoundary?: {\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n };\n}>;\n\nconst SendbirdUIKitContainer = ({\n children,\n appId,\n chatOptions,\n platformServices,\n localization,\n styles,\n toast,\n userProfile,\n userMention,\n errorBoundary,\n}: SendbirdUIKitContainerProps) => {\n const defaultStringSet = localization?.stringSet ?? StringSetEn;\n\n const isFirstMount = useIsFirstMount();\n const unsubscribes = useRef<Array<() => void>>([]);\n const internalStorage = useMemo(\n () => (chatOptions?.localCacheStorage ? new InternalLocalCacheStorage(chatOptions.localCacheStorage) : undefined),\n [chatOptions?.localCacheStorage],\n );\n\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(() => {\n const sendbird = initializeSendbird(appId, internalStorage, chatOptions?.onInitialized);\n unsubscribes.current = sendbird.unsubscribes;\n return sendbird.chatSDK;\n });\n const emojiManager = useMemo(() => new EmojiManager(internalStorage), [internalStorage]);\n const mentionManager = useMemo(() => {\n const config = new MentionConfig({\n mentionLimit: userMention?.mentionLimit || MentionConfig.DEFAULT.MENTION_LIMIT,\n suggestionLimit: userMention?.suggestionLimit || MentionConfig.DEFAULT.SUGGESTION_LIMIT,\n debounceMills: userMention?.debounceMills ?? MentionConfig.DEFAULT.DEBOUNCE_MILLS,\n delimiter: MentionConfig.DEFAULT.DELIMITER,\n trigger: MentionConfig.DEFAULT.TRIGGER,\n });\n return new MentionManager(config, chatOptions?.enableUserMention ?? SendbirdUIKit.DEFAULT.USER_MENTION);\n }, [userMention?.mentionLimit, userMention?.suggestionLimit, userMention?.debounceMills]);\n\n useLayoutEffect(() => {\n if (!isFirstMount) {\n const sendbird = initializeSendbird(appId, internalStorage, chatOptions?.onInitialized);\n setSdkInstance(sendbird.chatSDK);\n unsubscribes.current = sendbird.unsubscribes;\n }\n\n return () => {\n if (!isFirstMount) {\n unsubscribes.current.forEach((u) => {\n try {\n u();\n } catch {}\n });\n }\n };\n }, [appId, internalStorage]);\n\n return (\n <SafeAreaProvider>\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n emojiManager={emojiManager}\n mentionManager={mentionManager}\n enableAutoPushTokenRegistration={\n chatOptions?.enableAutoPushTokenRegistration ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION\n }\n enableChannelListTypingIndicator={\n chatOptions?.enableChannelListTypingIndicator ?? SendbirdUIKit.DEFAULT.CHANNEL_LIST_TYPING_INDICATOR\n }\n enableChannelListMessageReceiptStatus={\n chatOptions?.enableChannelListMessageReceiptStatus ??\n SendbirdUIKit.DEFAULT.CHANNEL_LIST_MESSAGE_RECEIPT_STATUS\n }\n enableUseUserIdForNickname={\n chatOptions?.enableUseUserIdForNickname ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME\n }\n enableUserMention={chatOptions?.enableUserMention ?? SendbirdUIKit.DEFAULT.USER_MENTION}\n >\n <LocalizationProvider stringSet={defaultStringSet}>\n <PlatformServiceProvider\n fileService={platformServices.file}\n notificationService={platformServices.notification}\n clipboardService={platformServices.clipboard}\n mediaService={platformServices.media}\n >\n <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>\n <HeaderStyleProvider\n HeaderComponent={styles?.HeaderComponent ?? Header}\n defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <UserProfileProvider\n onCreateChannel={userProfile?.onCreateChannel}\n onBeforeCreateChannel={userProfile?.onBeforeCreateChannel}\n >\n <ReactionProvider>\n <LocalizationContext.Consumer>\n {(value) => {\n const STRINGS = value?.STRINGS || defaultStringSet;\n return (\n <DialogProvider\n defaultLabels={{\n alert: { ok: STRINGS.DIALOG.ALERT_DEFAULT_OK },\n prompt: {\n ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,\n cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,\n placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,\n },\n }}\n >\n <InternalErrorBoundaryContainer {...errorBoundary}>\n {children}\n </InternalErrorBoundaryContainer>\n </DialogProvider>\n );\n }}\n </LocalizationContext.Consumer>\n </ReactionProvider>\n </UserProfileProvider>\n </ToastProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </SafeAreaProvider>\n );\n};\n\nconst initializeSendbird = (\n appId: string,\n internalStorage?: InternalLocalCacheStorage,\n onInitialized?: (sdk: SendbirdChatSDK) => SendbirdChatSDK,\n) => {\n const unsubscribes: Array<() => void> = [];\n let chatSDK: SendbirdChatSDK;\n\n chatSDK = Sendbird.init({\n appId,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: Boolean(internalStorage),\n useAsyncStorageStore: internalStorage as never,\n newInstance: true,\n });\n\n if (onInitialized) {\n chatSDK = onInitialized(chatSDK);\n }\n\n if (SendbirdUIKit.VERSION) {\n chatSDK.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n\n if (SendbirdUIKit.PLATFORM) {\n chatSDK.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);\n }\n\n if (NetInfo?.addEventListener) {\n const listener = (callback: () => void, callbackType: 'online' | 'offline') => {\n const unsubscribe = NetInfo.addEventListener((state) => {\n const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);\n if (online && callbackType === 'online') callback();\n if (!online && callbackType === 'offline') callback();\n });\n unsubscribes.push(unsubscribe);\n return unsubscribe;\n };\n chatSDK.setOnlineListener?.((onOnline) => listener(onOnline, 'online'));\n chatSDK.setOfflineListener?.((onOffline) => listener(onOffline, 'offline'));\n }\n return { chatSDK, unsubscribes };\n};\n\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ReactionProvider = exports.ReactionContext = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _uikitUtils = require("@sendbird/uikit-utils");
11
+
12
+ var _ReactionBottomSheets = require("../components/ReactionBottomSheets");
13
+
14
+ var _LocalizationCtx = require("../contexts/LocalizationCtx");
15
+
16
+ var _SendbirdChatCtx = require("../contexts/SendbirdChatCtx");
17
+
18
+ var _UserProfileCtx = require("../contexts/UserProfileCtx");
19
+
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+
24
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
25
+
26
+ const ReactionContext = /*#__PURE__*/_react.default.createContext(null);
27
+
28
+ exports.ReactionContext = ReactionContext;
29
+
30
+ const ReactionProvider = _ref => {
31
+ let {
32
+ children
33
+ } = _ref;
34
+ const chatCtx = (0, _react.useContext)(_SendbirdChatCtx.SendbirdChatContext);
35
+ const localizationCtx = (0, _react.useContext)(_LocalizationCtx.LocalizationContext);
36
+ const userProfileCtx = (0, _react.useContext)(_UserProfileCtx.UserProfileContext);
37
+ if (!chatCtx) throw new Error('SendbirdChatContext is not provided');
38
+ if (!localizationCtx) throw new Error('LocalizationContext is not provided');
39
+ if (!userProfileCtx) throw new Error('UserProfileContext is not provided');
40
+ const [state, setState] = (0, _react.useReducer)((prev, next) => ({ ...prev,
41
+ ...next
42
+ }), {});
43
+ const [reactionListVisible, setReactionListVisible] = (0, _react.useState)(false);
44
+ const [reactionUserListVisible, setReactionUserListVisible] = (0, _react.useState)(false);
45
+ const [reactionUserListFocusIndex, setReactionUserListFocusIndex] = (0, _react.useState)(0);
46
+ const closeResolver = (0, _react.useRef)(_uikitUtils.NOOP);
47
+ const openReactionList = (0, _react.useCallback)(params => {
48
+ setState(params);
49
+ setReactionListVisible(true);
50
+ }, []);
51
+ const openReactionUserList = (0, _react.useCallback)(_ref2 => {
52
+ let {
53
+ channel,
54
+ message,
55
+ focusIndex = 0
56
+ } = _ref2;
57
+ setState({
58
+ channel,
59
+ message
60
+ });
61
+ setReactionUserListFocusIndex(focusIndex);
62
+ setReactionUserListVisible(true);
63
+ }, []);
64
+ const updateReactionFocusedItem = (0, _react.useCallback)(params => {
65
+ if (params) setState(params);else setState({});
66
+ }, []);
67
+
68
+ const createOnCloseWithResolver = callback => {
69
+ return () => {
70
+ return new Promise(resolve => {
71
+ closeResolver.current = resolve;
72
+ callback();
73
+ });
74
+ };
75
+ };
76
+
77
+ const reactionCtx = { ...state,
78
+ openReactionList,
79
+ openReactionUserList,
80
+ updateReactionFocusedItem,
81
+ focusIndex: reactionUserListFocusIndex
82
+ };
83
+ const sheetProps = {
84
+ chatCtx,
85
+ reactionCtx,
86
+ localizationCtx,
87
+ userProfileCtx,
88
+ onDismiss: () => {
89
+ var _closeResolver$curren;
90
+
91
+ setState({});
92
+ (_closeResolver$curren = closeResolver.current) === null || _closeResolver$curren === void 0 ? void 0 : _closeResolver$curren.call(closeResolver);
93
+ }
94
+ };
95
+ return /*#__PURE__*/_react.default.createElement(ReactionContext.Provider, {
96
+ value: reactionCtx
97
+ }, children, /*#__PURE__*/_react.default.createElement(_ReactionBottomSheets.ReactionBottomSheets.UserList, _extends({}, sheetProps, {
98
+ visible: reactionUserListVisible,
99
+ onClose: createOnCloseWithResolver(() => setReactionUserListVisible(false))
100
+ })), /*#__PURE__*/_react.default.createElement(_ReactionBottomSheets.ReactionBottomSheets.ReactionList, _extends({}, sheetProps, {
101
+ visible: reactionListVisible,
102
+ onClose: createOnCloseWithResolver(() => setReactionListVisible(false))
103
+ })));
104
+ };
105
+
106
+ exports.ReactionProvider = ReactionProvider;
107
+ //# sourceMappingURL=ReactionCtx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ReactionContext","React","createContext","ReactionProvider","children","chatCtx","useContext","SendbirdChatContext","localizationCtx","LocalizationContext","userProfileCtx","UserProfileContext","Error","state","setState","useReducer","prev","next","reactionListVisible","setReactionListVisible","useState","reactionUserListVisible","setReactionUserListVisible","reactionUserListFocusIndex","setReactionUserListFocusIndex","closeResolver","useRef","NOOP","openReactionList","useCallback","params","openReactionUserList","channel","message","focusIndex","updateReactionFocusedItem","createOnCloseWithResolver","callback","Promise","resolve","current","reactionCtx","sheetProps","onDismiss"],"sources":["ReactionCtx.tsx"],"sourcesContent":["import React, { useCallback, useContext, useReducer, useRef, useState } from 'react';\n\nimport type { SendbirdBaseChannel, SendbirdBaseMessage } from '@sendbird/uikit-utils';\nimport { NOOP } from '@sendbird/uikit-utils';\n\nimport { ReactionBottomSheets } from '../components/ReactionBottomSheets';\nimport { LocalizationContext } from '../contexts/LocalizationCtx';\nimport { SendbirdChatContext } from '../contexts/SendbirdChatCtx';\nimport { UserProfileContext } from '../contexts/UserProfileCtx';\n\ntype State = {\n message?: SendbirdBaseMessage;\n channel?: SendbirdBaseChannel;\n};\nexport type ReactionContextType = {\n openReactionList(param: Required<State>): void;\n openReactionUserList(param: Required<State> & { focusIndex?: number }): void;\n updateReactionFocusedItem(param?: State): void;\n focusIndex: number;\n} & State;\n\ntype Props = React.PropsWithChildren<{}>;\n\nexport const ReactionContext = React.createContext<ReactionContextType | null>(null);\nexport const ReactionProvider = ({ children }: Props) => {\n const chatCtx = useContext(SendbirdChatContext);\n const localizationCtx = useContext(LocalizationContext);\n const userProfileCtx = useContext(UserProfileContext);\n if (!chatCtx) throw new Error('SendbirdChatContext is not provided');\n if (!localizationCtx) throw new Error('LocalizationContext is not provided');\n if (!userProfileCtx) throw new Error('UserProfileContext is not provided');\n\n const [state, setState] = useReducer((prev: State, next: State) => ({ ...prev, ...next }), {});\n const [reactionListVisible, setReactionListVisible] = useState(false);\n const [reactionUserListVisible, setReactionUserListVisible] = useState(false);\n const [reactionUserListFocusIndex, setReactionUserListFocusIndex] = useState(0);\n\n const closeResolver = useRef<() => void>(NOOP);\n\n const openReactionList: ReactionContextType['openReactionList'] = useCallback((params) => {\n setState(params);\n setReactionListVisible(true);\n }, []);\n\n const openReactionUserList: ReactionContextType['openReactionUserList'] = useCallback(\n ({ channel, message, focusIndex = 0 }) => {\n setState({ channel, message });\n setReactionUserListFocusIndex(focusIndex);\n setReactionUserListVisible(true);\n },\n [],\n );\n\n const updateReactionFocusedItem: ReactionContextType['updateReactionFocusedItem'] = useCallback((params) => {\n if (params) setState(params);\n else setState({});\n }, []);\n\n const createOnCloseWithResolver = (callback: () => void) => {\n return () => {\n return new Promise<void>((resolve) => {\n closeResolver.current = resolve;\n callback();\n });\n };\n };\n\n const reactionCtx = {\n ...state,\n openReactionList,\n openReactionUserList,\n updateReactionFocusedItem,\n focusIndex: reactionUserListFocusIndex,\n };\n\n const sheetProps = {\n chatCtx,\n reactionCtx,\n localizationCtx,\n userProfileCtx,\n onDismiss: () => {\n setState({});\n closeResolver.current?.();\n },\n };\n\n return (\n <ReactionContext.Provider value={reactionCtx}>\n {children}\n <ReactionBottomSheets.UserList\n {...sheetProps}\n visible={reactionUserListVisible}\n onClose={createOnCloseWithResolver(() => setReactionUserListVisible(false))}\n />\n <ReactionBottomSheets.ReactionList\n {...sheetProps}\n visible={reactionListVisible}\n onClose={createOnCloseWithResolver(() => setReactionListVisible(false))}\n />\n </ReactionContext.Provider>\n );\n};\n"],"mappings":"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"}
@@ -25,10 +25,13 @@ const SendbirdChatProvider = _ref => {
25
25
  let {
26
26
  children,
27
27
  sdkInstance,
28
+ emojiManager,
29
+ mentionManager,
28
30
  enableAutoPushTokenRegistration,
29
31
  enableChannelListMessageReceiptStatus,
30
32
  enableChannelListTypingIndicator,
31
- enableUseUserIdForNickname
33
+ enableUseUserIdForNickname,
34
+ enableUserMention
32
35
  } = _ref;
33
36
  const [currentUser, _setCurrentUser] = (0, _react.useState)();
34
37
  const forceUpdate = (0, _uikitUtils.useForceUpdate)();
@@ -42,11 +45,17 @@ const SendbirdChatProvider = _ref => {
42
45
  const updateCurrentUserInfo = (0, _react.useCallback)(async (nickname, profile) => {
43
46
  let user = currentUser;
44
47
  if (!user) throw new Error('Current user is not defined, please connect using `useConnection()` hook first');
45
- const params = {
46
- nickname
47
- };
48
+ const params = {};
49
+
50
+ if (!nickname) {
51
+ params.nickname = user.nickname;
52
+ } else {
53
+ params.nickname = nickname;
54
+ }
48
55
 
49
- if (typeof profile === 'string') {
56
+ if (!profile) {
57
+ params.profileUrl = user.profileUrl;
58
+ } else if (typeof profile === 'string') {
50
59
  params.profileUrl = profile;
51
60
  } else if (typeof profile === 'object') {
52
61
  params.profileImage = profile;
@@ -73,6 +82,8 @@ const SendbirdChatProvider = _ref => {
73
82
  }, [sdkInstance]);
74
83
  const value = {
75
84
  sdk: sdkInstance,
85
+ emojiManager,
86
+ mentionManager,
76
87
  currentUser,
77
88
  setCurrentUser,
78
89
  updateCurrentUserInfo,
@@ -81,7 +92,8 @@ const SendbirdChatProvider = _ref => {
81
92
  autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,
82
93
  channelListTypingIndicatorEnabled: enableChannelListTypingIndicator,
83
94
  channelListMessageReceiptStatusEnabled: enableChannelListMessageReceiptStatus,
84
- useUserIdForNicknameEnabled: enableUseUserIdForNickname
95
+ useUserIdForNicknameEnabled: enableUseUserIdForNickname,
96
+ userMentionEnabled: enableUserMention
85
97
  }
86
98
  };
87
99
  return /*#__PURE__*/_react.default.createElement(SendbirdChatContext.Provider, {
@@ -1 +1 @@
1
- {"version":3,"names":["SendbirdChatContext","React","createContext","SendbirdChatProvider","children","sdkInstance","enableAutoPushTokenRegistration","enableChannelListMessageReceiptStatus","enableChannelListTypingIndicator","enableUseUserIdForNickname","currentUser","_setCurrentUser","useState","forceUpdate","useForceUpdate","appFeatures","useAppFeatures","setCurrentUser","useCallback","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","confirmAndMarkAsDelivered","useEffect","listener","status","connectionState","setForegroundState","setBackgroundState","subscriber","AppState","addEventListener","remove","value","sdk","features","autoPushTokenRegistrationEnabled","channelListTypingIndicatorEnabled","channelListMessageReceiptStatusEnabled","useUserIdForNicknameEnabled"],"sources":["SendbirdChatCtx.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\nimport { AppState, AppStateStatus } from 'react-native';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserUpdateParams,\n} from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type { FileType } from '../platform/types';\n\nexport interface UIKitFeaturesInSendbirdChatContext {\n enableAutoPushTokenRegistration: boolean;\n enableChannelListTypingIndicator: boolean;\n enableChannelListMessageReceiptStatus: boolean;\n enableUseUserIdForNickname: boolean;\n}\n\ninterface Props extends UIKitFeaturesInSendbirdChatContext, React.PropsWithChildren {\n sdkInstance: SendbirdChatSDK;\n}\n\ntype Context = {\n sdk: SendbirdChatSDK;\n currentUser?: SendbirdUser;\n setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;\n\n // helper functions\n updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;\n markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;\n\n features: {\n // UIKit features\n autoPushTokenRegistrationEnabled: boolean;\n channelListTypingIndicatorEnabled: boolean;\n channelListMessageReceiptStatusEnabled: boolean;\n useUserIdForNicknameEnabled: boolean;\n\n // Sendbird application features\n deliveryReceiptEnabled: boolean;\n broadcastChannelEnabled: boolean;\n superGroupChannelEnabled: boolean;\n reactionEnabled: boolean;\n };\n};\n\nexport const SendbirdChatContext = React.createContext<Context | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n enableAutoPushTokenRegistration,\n enableChannelListMessageReceiptStatus,\n enableChannelListTypingIndicator,\n enableUseUserIdForNickname,\n}: Props) => {\n const [currentUser, _setCurrentUser] = useState<SendbirdUser>();\n const forceUpdate = useForceUpdate();\n const appFeatures = useAppFeatures(sdkInstance);\n\n const setCurrentUser: Context['setCurrentUser'] = useCallback((user) => {\n // NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser\n _setCurrentUser(user);\n forceUpdate();\n }, []);\n\n const updateCurrentUserInfo: Context['updateCurrentUserInfo'] = useCallback(\n async (nickname, profile) => {\n let user = currentUser;\n\n if (!user) throw new Error('Current user is not defined, please connect using `useConnection()` hook first');\n\n const params: SendbirdUserUpdateParams = { nickname };\n\n if (typeof profile === 'string') {\n params.profileUrl = profile;\n } else if (typeof profile === 'object') {\n params.profileImage = profile;\n } else {\n throw new Error(`Cannot update profile, not supported profile type(${typeof profile})`);\n }\n\n user = await sdkInstance.updateCurrentUserInfo(params);\n\n setCurrentUser(user);\n return user;\n },\n [sdkInstance, currentUser, setCurrentUser],\n );\n\n const markAsDeliveredWithChannel: Context['markAsDeliveredWithChannel'] = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (appFeatures.deliveryReceiptEnabled) confirmAndMarkAsDelivered([channel]);\n },\n [sdkInstance, appFeatures.deliveryReceiptEnabled],\n );\n\n useEffect(() => {\n const listener = (status: AppStateStatus) => {\n // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';\n if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();\n else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();\n };\n\n const subscriber = AppState.addEventListener('change', listener);\n return () => subscriber.remove();\n }, [sdkInstance]);\n\n const value: Context = {\n sdk: sdkInstance,\n currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\n\n features: {\n ...appFeatures,\n autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,\n channelListTypingIndicatorEnabled: enableChannelListTypingIndicator,\n channelListMessageReceiptStatusEnabled: enableChannelListMessageReceiptStatus,\n useUserIdForNicknameEnabled: enableUseUserIdForNickname,\n },\n };\n\n return <SendbirdChatContext.Provider value={value}>{children}</SendbirdChatContext.Provider>;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["SendbirdChatContext","React","createContext","SendbirdChatProvider","children","sdkInstance","emojiManager","mentionManager","enableAutoPushTokenRegistration","enableChannelListMessageReceiptStatus","enableChannelListTypingIndicator","enableUseUserIdForNickname","enableUserMention","currentUser","_setCurrentUser","useState","forceUpdate","useForceUpdate","appFeatures","useAppFeatures","setCurrentUser","useCallback","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","confirmAndMarkAsDelivered","useEffect","listener","status","connectionState","setForegroundState","setBackgroundState","subscriber","AppState","addEventListener","remove","value","sdk","features","autoPushTokenRegistrationEnabled","channelListTypingIndicatorEnabled","channelListMessageReceiptStatusEnabled","useUserIdForNicknameEnabled","userMentionEnabled"],"sources":["SendbirdChatCtx.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\nimport { AppState, AppStateStatus } from 'react-native';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserUpdateParams,\n} from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type EmojiManager from '../libs/EmojiManager';\nimport type MentionManager from '../libs/MentionManager';\nimport type { FileType } from '../platform/types';\n\nexport interface UIKitFeaturesInSendbirdChatContext {\n enableAutoPushTokenRegistration: boolean;\n enableChannelListTypingIndicator: boolean;\n enableChannelListMessageReceiptStatus: boolean;\n enableUseUserIdForNickname: boolean;\n enableUserMention: boolean;\n}\n\ninterface Props extends UIKitFeaturesInSendbirdChatContext, React.PropsWithChildren {\n sdkInstance: SendbirdChatSDK;\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n}\n\ntype Context = {\n sdk: SendbirdChatSDK;\n emojiManager: EmojiManager;\n mentionManager: MentionManager;\n currentUser?: SendbirdUser;\n setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;\n\n // helper functions\n updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;\n markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;\n\n features: {\n // UIKit features\n autoPushTokenRegistrationEnabled: boolean;\n channelListTypingIndicatorEnabled: boolean;\n channelListMessageReceiptStatusEnabled: boolean;\n useUserIdForNicknameEnabled: boolean;\n userMentionEnabled: boolean;\n\n // Sendbird application features\n deliveryReceiptEnabled: boolean;\n broadcastChannelEnabled: boolean;\n superGroupChannelEnabled: boolean;\n reactionEnabled: boolean;\n };\n};\n\nexport const SendbirdChatContext = React.createContext<Context | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n emojiManager,\n mentionManager,\n enableAutoPushTokenRegistration,\n enableChannelListMessageReceiptStatus,\n enableChannelListTypingIndicator,\n enableUseUserIdForNickname,\n enableUserMention,\n}: Props) => {\n const [currentUser, _setCurrentUser] = useState<SendbirdUser>();\n const forceUpdate = useForceUpdate();\n const appFeatures = useAppFeatures(sdkInstance);\n\n const setCurrentUser: Context['setCurrentUser'] = useCallback((user) => {\n // NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser\n _setCurrentUser(user);\n forceUpdate();\n }, []);\n\n const updateCurrentUserInfo: Context['updateCurrentUserInfo'] = useCallback(\n async (nickname, profile) => {\n let user = currentUser;\n\n if (!user) throw new Error('Current user is not defined, please connect using `useConnection()` hook first');\n\n const params: SendbirdUserUpdateParams = {};\n\n if (!nickname) {\n params.nickname = user.nickname;\n } else {\n params.nickname = nickname;\n }\n\n if (!profile) {\n params.profileUrl = user.profileUrl;\n } else if (typeof profile === 'string') {\n params.profileUrl = profile;\n } else if (typeof profile === 'object') {\n params.profileImage = profile;\n } else {\n throw new Error(`Cannot update profile, not supported profile type(${typeof profile})`);\n }\n\n user = await sdkInstance.updateCurrentUserInfo(params);\n\n setCurrentUser(user);\n return user;\n },\n [sdkInstance, currentUser, setCurrentUser],\n );\n\n const markAsDeliveredWithChannel: Context['markAsDeliveredWithChannel'] = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (appFeatures.deliveryReceiptEnabled) confirmAndMarkAsDelivered([channel]);\n },\n [sdkInstance, appFeatures.deliveryReceiptEnabled],\n );\n\n useEffect(() => {\n const listener = (status: AppStateStatus) => {\n // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';\n if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();\n else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();\n };\n\n const subscriber = AppState.addEventListener('change', listener);\n return () => subscriber.remove();\n }, [sdkInstance]);\n\n const value: Context = {\n sdk: sdkInstance,\n emojiManager,\n mentionManager,\n currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\n\n features: {\n ...appFeatures,\n autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,\n channelListTypingIndicatorEnabled: enableChannelListTypingIndicator,\n channelListMessageReceiptStatusEnabled: enableChannelListMessageReceiptStatus,\n useUserIdForNicknameEnabled: enableUseUserIdForNickname,\n userMentionEnabled: enableUserMention,\n },\n };\n\n return <SendbirdChatContext.Provider value={value}>{children}</SendbirdChatContext.Provider>;\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAOA;;;;;;AA+CO,MAAMA,mBAAmB,gBAAGC,cAAA,CAAMC,aAAN,CAAoC,IAApC,CAA5B;;;;AACA,MAAMC,oBAAoB,GAAG,QAUvB;EAAA,IAVwB;IACnCC,QADmC;IAEnCC,WAFmC;IAGnCC,YAHmC;IAInCC,cAJmC;IAKnCC,+BALmC;IAMnCC,qCANmC;IAOnCC,gCAPmC;IAQnCC,0BARmC;IASnCC;EATmC,CAUxB;EACX,MAAM,CAACC,WAAD,EAAcC,eAAd,IAAiC,IAAAC,eAAA,GAAvC;EACA,MAAMC,WAAW,GAAG,IAAAC,0BAAA,GAApB;EACA,MAAMC,WAAW,GAAG,IAAAC,8BAAA,EAAed,WAAf,CAApB;EAEA,MAAMe,cAAyC,GAAG,IAAAC,kBAAA,EAAaC,IAAD,IAAU;IACtE;IACAR,eAAe,CAACQ,IAAD,CAAf;;IACAN,WAAW;EACZ,CAJiD,EAI/C,EAJ+C,CAAlD;EAMA,MAAMO,qBAAuD,GAAG,IAAAF,kBAAA,EAC9D,OAAOG,QAAP,EAAiBC,OAAjB,KAA6B;IAC3B,IAAIH,IAAI,GAAGT,WAAX;IAEA,IAAI,CAACS,IAAL,EAAW,MAAM,IAAII,KAAJ,CAAU,gFAAV,CAAN;IAEX,MAAMC,MAAgC,GAAG,EAAzC;;IAEA,IAAI,CAACH,QAAL,EAAe;MACbG,MAAM,CAACH,QAAP,GAAkBF,IAAI,CAACE,QAAvB;IACD,CAFD,MAEO;MACLG,MAAM,CAACH,QAAP,GAAkBA,QAAlB;IACD;;IAED,IAAI,CAACC,OAAL,EAAc;MACZE,MAAM,CAACC,UAAP,GAAoBN,IAAI,CAACM,UAAzB;IACD,CAFD,MAEO,IAAI,OAAOH,OAAP,KAAmB,QAAvB,EAAiC;MACtCE,MAAM,CAACC,UAAP,GAAoBH,OAApB;IACD,CAFM,MAEA,IAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;MACtCE,MAAM,CAACE,YAAP,GAAsBJ,OAAtB;IACD,CAFM,MAEA;MACL,MAAM,IAAIC,KAAJ,CAAW,qDAAoD,OAAOD,OAAQ,GAA9E,CAAN;IACD;;IAEDH,IAAI,GAAG,MAAMjB,WAAW,CAACkB,qBAAZ,CAAkCI,MAAlC,CAAb;IAEAP,cAAc,CAACE,IAAD,CAAd;IACA,OAAOA,IAAP;EACD,CA5B6D,EA6B9D,CAACjB,WAAD,EAAcQ,WAAd,EAA2BO,cAA3B,CA7B8D,CAAhE;EAgCA,MAAMU,0BAAiE,GAAG,IAAAT,kBAAA,EACvEU,OAAD,IAAmC;IACjC,IAAIb,WAAW,CAACc,sBAAhB,EAAwC,IAAAC,qCAAA,EAA0B,CAACF,OAAD,CAA1B;EACzC,CAHuE,EAIxE,CAAC1B,WAAD,EAAca,WAAW,CAACc,sBAA1B,CAJwE,CAA1E;EAOA,IAAAE,gBAAA,EAAU,MAAM;IACd,MAAMC,QAAQ,GAAIC,MAAD,IAA4B;MAC3C;MACA,IAAIA,MAAM,KAAK,QAAf,EAAyB/B,WAAW,CAACgC,eAAZ,KAAgC,QAAhC,IAA4ChC,WAAW,CAACiC,kBAAZ,EAA5C,CAAzB,KACK,IAAIF,MAAM,KAAK,YAAf,EAA6B/B,WAAW,CAACgC,eAAZ,KAAgC,MAAhC,IAA0ChC,WAAW,CAACkC,kBAAZ,EAA1C;IACnC,CAJD;;IAMA,MAAMC,UAAU,GAAGC,qBAAA,CAASC,gBAAT,CAA0B,QAA1B,EAAoCP,QAApC,CAAnB;;IACA,OAAO,MAAMK,UAAU,CAACG,MAAX,EAAb;EACD,CATD,EASG,CAACtC,WAAD,CATH;EAWA,MAAMuC,KAAc,GAAG;IACrBC,GAAG,EAAExC,WADgB;IAErBC,YAFqB;IAGrBC,cAHqB;IAIrBM,WAJqB;IAKrBO,cALqB;IAOrBG,qBAPqB;IAQrBO,0BARqB;IAUrBgB,QAAQ,EAAE,EACR,GAAG5B,WADK;MAER6B,gCAAgC,EAAEvC,+BAF1B;MAGRwC,iCAAiC,EAAEtC,gCAH3B;MAIRuC,sCAAsC,EAAExC,qCAJhC;MAKRyC,2BAA2B,EAAEvC,0BALrB;MAMRwC,kBAAkB,EAAEvC;IANZ;EAVW,CAAvB;EAoBA,oBAAO,6BAAC,mBAAD,CAAqB,QAArB;IAA8B,KAAK,EAAEgC;EAArC,GAA6CxC,QAA7C,CAAP;AACD,CA5FM"}
@@ -21,6 +21,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
21
21
 
22
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
23
 
24
+ let WARN_onCreateChannel = false;
25
+
24
26
  const UserProfileContext = /*#__PURE__*/_react.default.createContext(null);
25
27
 
26
28
  exports.UserProfileContext = UserProfileContext;
@@ -35,6 +37,13 @@ const UserProfileProvider = _ref => {
35
37
  const localizationContext = (0, _react.useContext)(_LocalizationCtx.LocalizationContext);
36
38
  if (!chatContext) throw new Error('SendbirdChatContext is not provided');
37
39
  if (!localizationContext) throw new Error('LocalizationContext is not provided');
40
+
41
+ if (__DEV__ && !WARN_onCreateChannel && !onCreateChannel) {
42
+ _uikitUtils.Logger.warn('You should pass `userProfile.onCreateChannel` prop to SendbirdUIKitContainer if want to use message in a user profile');
43
+
44
+ WARN_onCreateChannel = true;
45
+ }
46
+
38
47
  const {
39
48
  bottom,
40
49
  left,