@sendbird/uikit-react-native 3.1.2 → 3.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 (317) hide show
  1. package/README.md +67 -42
  2. package/lib/commonjs/components/ChannelInput/MessageToReplyPreview.js +145 -0
  3. package/lib/commonjs/components/ChannelInput/MessageToReplyPreview.js.map +1 -0
  4. package/lib/commonjs/components/ChannelInput/SendInput.js +147 -312
  5. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  6. package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js +238 -0
  7. package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js.map +1 -0
  8. package/lib/commonjs/components/ChannelInput/index.js +5 -1
  9. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  10. package/lib/commonjs/components/ChannelMessageList/index.js +1 -1
  11. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  12. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +24 -13
  13. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  14. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +100 -5
  15. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  16. package/lib/commonjs/components/MessageSearchResultItem.js +1 -0
  17. package/lib/commonjs/components/MessageSearchResultItem.js.map +1 -1
  18. package/lib/commonjs/components/OpenChannelMessageRenderer/index.js +1 -0
  19. package/lib/commonjs/components/OpenChannelMessageRenderer/index.js.map +1 -1
  20. package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +2 -2
  21. package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -1
  22. package/lib/commonjs/components/ReactionBottomSheets/index.js.map +1 -1
  23. package/lib/commonjs/components/StatusComposition.js.map +1 -1
  24. package/lib/commonjs/constants.js +5 -1
  25. package/lib/commonjs/constants.js.map +1 -1
  26. package/lib/commonjs/containers/GroupChannelPreviewContainer.js +1 -0
  27. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
  28. package/lib/commonjs/containers/InternalErrorBoundaryContainer.js.map +1 -1
  29. package/lib/commonjs/containers/SendbirdUIKitContainer.js +72 -34
  30. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  31. package/lib/commonjs/contexts/PlatformServiceCtx.js +16 -12
  32. package/lib/commonjs/contexts/PlatformServiceCtx.js.map +1 -1
  33. package/lib/commonjs/contexts/ReactionCtx.js +3 -2
  34. package/lib/commonjs/contexts/ReactionCtx.js.map +1 -1
  35. package/lib/commonjs/contexts/SendbirdChatCtx.js +2 -0
  36. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  37. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +27 -42
  38. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  39. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +109 -5
  40. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  41. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  42. package/lib/commonjs/domain/userList/types.js.map +1 -1
  43. package/lib/commonjs/fragments/createGroupChannelFragment.js +30 -4
  44. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  45. package/lib/commonjs/fragments/createMessageSearchFragment.js +1 -1
  46. package/lib/commonjs/fragments/createMessageSearchFragment.js.map +1 -1
  47. package/lib/commonjs/hooks/useChannelInputItems.js +211 -0
  48. package/lib/commonjs/hooks/useChannelInputItems.js.map +1 -0
  49. package/lib/commonjs/hooks/useConnection.js +1 -1
  50. package/lib/commonjs/hooks/useConnection.js.map +1 -1
  51. package/lib/commonjs/hooks/useVoiceMessageInput.js +207 -0
  52. package/lib/commonjs/hooks/useVoiceMessageInput.js.map +1 -0
  53. package/lib/commonjs/index.js +32 -0
  54. package/lib/commonjs/index.js.map +1 -1
  55. package/lib/commonjs/libs/MentionManager.js.map +1 -1
  56. package/lib/commonjs/libs/SBUUtils.js +4 -0
  57. package/lib/commonjs/libs/SBUUtils.js.map +1 -1
  58. package/lib/commonjs/libs/VoiceMessageConfig.js +30 -0
  59. package/lib/commonjs/libs/VoiceMessageConfig.js.map +1 -0
  60. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  61. package/lib/commonjs/localization/createBaseStringSet.js +24 -9
  62. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  63. package/lib/commonjs/platform/createFileService.expo.js +10 -0
  64. package/lib/commonjs/platform/createFileService.expo.js.map +1 -1
  65. package/lib/commonjs/platform/createFileService.native.js +19 -0
  66. package/lib/commonjs/platform/createFileService.native.js.map +1 -1
  67. package/lib/commonjs/platform/createPlayerService.expo.js +137 -0
  68. package/lib/commonjs/platform/createPlayerService.expo.js.map +1 -0
  69. package/lib/commonjs/platform/createPlayerService.native.js +139 -0
  70. package/lib/commonjs/platform/createPlayerService.native.js.map +1 -0
  71. package/lib/commonjs/platform/createRecorderService.expo.js +158 -0
  72. package/lib/commonjs/platform/createRecorderService.expo.js.map +1 -0
  73. package/lib/commonjs/platform/createRecorderService.native.js +157 -0
  74. package/lib/commonjs/platform/createRecorderService.native.js.map +1 -0
  75. package/lib/commonjs/platform/types.js.map +1 -1
  76. package/lib/commonjs/types.js.map +1 -1
  77. package/lib/commonjs/version.js +1 -1
  78. package/lib/commonjs/version.js.map +1 -1
  79. package/lib/module/components/ChannelInput/MessageToReplyPreview.js +137 -0
  80. package/lib/module/components/ChannelInput/MessageToReplyPreview.js.map +1 -0
  81. package/lib/module/components/ChannelInput/SendInput.js +149 -314
  82. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  83. package/lib/module/components/ChannelInput/VoiceMessageInput.js +228 -0
  84. package/lib/module/components/ChannelInput/VoiceMessageInput.js.map +1 -0
  85. package/lib/module/components/ChannelInput/index.js +5 -1
  86. package/lib/module/components/ChannelInput/index.js.map +1 -1
  87. package/lib/module/components/ChannelMessageList/index.js +2 -2
  88. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  89. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +24 -13
  90. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  91. package/lib/module/components/GroupChannelMessageRenderer/index.js +99 -6
  92. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  93. package/lib/module/components/MessageSearchResultItem.js +2 -1
  94. package/lib/module/components/MessageSearchResultItem.js.map +1 -1
  95. package/lib/module/components/OpenChannelMessageRenderer/index.js +1 -0
  96. package/lib/module/components/OpenChannelMessageRenderer/index.js.map +1 -1
  97. package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +2 -2
  98. package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -1
  99. package/lib/module/components/ReactionBottomSheets/index.js.map +1 -1
  100. package/lib/module/components/StatusComposition.js.map +1 -1
  101. package/lib/module/constants.js +2 -0
  102. package/lib/module/constants.js.map +1 -1
  103. package/lib/module/containers/GroupChannelPreviewContainer.js +2 -1
  104. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
  105. package/lib/module/containers/InternalErrorBoundaryContainer.js.map +1 -1
  106. package/lib/module/containers/SendbirdUIKitContainer.js +74 -36
  107. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  108. package/lib/module/contexts/PlatformServiceCtx.js +14 -11
  109. package/lib/module/contexts/PlatformServiceCtx.js.map +1 -1
  110. package/lib/module/contexts/ReactionCtx.js +3 -2
  111. package/lib/module/contexts/ReactionCtx.js.map +1 -1
  112. package/lib/module/contexts/SendbirdChatCtx.js +2 -0
  113. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  114. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +28 -43
  115. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  116. package/lib/module/domain/groupChannel/module/moduleContext.js +111 -7
  117. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  118. package/lib/module/domain/groupChannel/types.js.map +1 -1
  119. package/lib/module/domain/userList/types.js.map +1 -1
  120. package/lib/module/fragments/createGroupChannelFragment.js +32 -6
  121. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  122. package/lib/module/fragments/createMessageSearchFragment.js +1 -1
  123. package/lib/module/fragments/createMessageSearchFragment.js.map +1 -1
  124. package/lib/module/hooks/useChannelInputItems.js +203 -0
  125. package/lib/module/hooks/useChannelInputItems.js.map +1 -0
  126. package/lib/module/hooks/useConnection.js +1 -1
  127. package/lib/module/hooks/useConnection.js.map +1 -1
  128. package/lib/module/hooks/useVoiceMessageInput.js +199 -0
  129. package/lib/module/hooks/useVoiceMessageInput.js.map +1 -0
  130. package/lib/module/index.js +4 -0
  131. package/lib/module/index.js.map +1 -1
  132. package/lib/module/libs/MentionManager.js.map +1 -1
  133. package/lib/module/libs/SBUUtils.js +4 -0
  134. package/lib/module/libs/SBUUtils.js.map +1 -1
  135. package/lib/module/libs/VoiceMessageConfig.js +23 -0
  136. package/lib/module/libs/VoiceMessageConfig.js.map +1 -0
  137. package/lib/module/localization/StringSet.type.js.map +1 -1
  138. package/lib/module/localization/createBaseStringSet.js +25 -10
  139. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  140. package/lib/module/platform/createFileService.expo.js +10 -0
  141. package/lib/module/platform/createFileService.expo.js.map +1 -1
  142. package/lib/module/platform/createFileService.native.js +19 -0
  143. package/lib/module/platform/createFileService.native.js.map +1 -1
  144. package/lib/module/platform/createPlayerService.expo.js +129 -0
  145. package/lib/module/platform/createPlayerService.expo.js.map +1 -0
  146. package/lib/module/platform/createPlayerService.native.js +132 -0
  147. package/lib/module/platform/createPlayerService.native.js.map +1 -0
  148. package/lib/module/platform/createRecorderService.expo.js +150 -0
  149. package/lib/module/platform/createRecorderService.expo.js.map +1 -0
  150. package/lib/module/platform/createRecorderService.native.js +149 -0
  151. package/lib/module/platform/createRecorderService.native.js.map +1 -0
  152. package/lib/module/platform/types.js.map +1 -1
  153. package/lib/module/types.js.map +1 -1
  154. package/lib/module/version.js +1 -1
  155. package/lib/module/version.js.map +1 -1
  156. package/lib/typescript/src/components/ChannelCover.d.ts +2 -1
  157. package/lib/typescript/src/components/ChannelInput/AttachmentsButton.d.ts +2 -1
  158. package/lib/typescript/src/components/ChannelInput/MessageToReplyPreview.d.ts +7 -0
  159. package/lib/typescript/src/components/ChannelInput/VoiceMessageInput.d.ts +11 -0
  160. package/lib/typescript/src/components/ChannelInput/index.d.ts +7 -3
  161. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +1 -1
  162. package/lib/typescript/src/components/FileViewer.d.ts +2 -1
  163. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.d.ts +2 -1
  164. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.d.ts +1 -1
  165. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.d.ts +1 -1
  166. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.d.ts +4 -2
  167. package/lib/typescript/src/components/NewMessagesButton.d.ts +1 -1
  168. package/lib/typescript/src/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.d.ts +2 -1
  169. package/lib/typescript/src/components/ProviderLayout.d.ts +1 -1
  170. package/lib/typescript/src/components/ReactionAddons/BottomSheetReactionAddon.d.ts +2 -1
  171. package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +2 -1
  172. package/lib/typescript/src/components/ReactionAddons/ReactionRoundedButton.d.ts +3 -2
  173. package/lib/typescript/src/components/ReactionAddons/index.d.ts +3 -2
  174. package/lib/typescript/src/components/ReactionBottomSheets/ReactionListBottomSheet.d.ts +2 -1
  175. package/lib/typescript/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.d.ts +2 -1
  176. package/lib/typescript/src/components/ReactionBottomSheets/index.d.ts +4 -4
  177. package/lib/typescript/src/components/ScrollToBottomButton.d.ts +1 -1
  178. package/lib/typescript/src/components/StatusComposition.d.ts +4 -4
  179. package/lib/typescript/src/components/TypedPlaceholder.d.ts +2 -1
  180. package/lib/typescript/src/components/UserActionBar.d.ts +2 -1
  181. package/lib/typescript/src/components/UserSelectableBar.d.ts +2 -1
  182. package/lib/typescript/src/constants.d.ts +2 -0
  183. package/lib/typescript/src/containers/GroupChannelPreviewContainer.d.ts +2 -1
  184. package/lib/typescript/src/containers/InternalErrorBoundaryContainer.d.ts +3 -3
  185. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +19 -8
  186. package/lib/typescript/src/contexts/LocalizationCtx.d.ts +1 -1
  187. package/lib/typescript/src/contexts/PlatformServiceCtx.d.ts +8 -8
  188. package/lib/typescript/src/contexts/ReactionCtx.d.ts +5 -2
  189. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +6 -3
  190. package/lib/typescript/src/contexts/UserProfileCtx.d.ts +1 -1
  191. package/lib/typescript/src/domain/groupChannel/component/GroupChannelHeader.d.ts +2 -1
  192. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput.d.ts +1 -1
  193. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +1 -1
  194. package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusEmpty.d.ts +2 -1
  195. package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusLoading.d.ts +2 -1
  196. package/lib/typescript/src/domain/groupChannel/component/GroupChannelSuggestedMentionList.d.ts +2 -1
  197. package/lib/typescript/src/domain/groupChannel/types.d.ts +45 -0
  198. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersHeader.d.ts +2 -1
  199. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.d.ts +2 -1
  200. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.d.ts +2 -1
  201. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.d.ts +2 -1
  202. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListHeader.d.ts +2 -1
  203. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListList.d.ts +2 -1
  204. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusEmpty.d.ts +2 -1
  205. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusLoading.d.ts +2 -1
  206. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListTypeSelector.d.ts +2 -1
  207. package/lib/typescript/src/domain/groupChannelModeration/component/GroupChannelModerationHeader.d.ts +2 -1
  208. package/lib/typescript/src/domain/groupChannelModeration/component/GroupChannelModerationMenu.d.ts +2 -1
  209. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.d.ts +2 -1
  210. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.d.ts +2 -1
  211. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.d.ts +2 -1
  212. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.d.ts +2 -1
  213. package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.d.ts +2 -1
  214. package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsView.d.ts +2 -1
  215. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.d.ts +2 -1
  216. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsList.d.ts +2 -1
  217. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.d.ts +2 -1
  218. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.d.ts +2 -1
  219. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsHeader.d.ts +2 -1
  220. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.d.ts +2 -1
  221. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.d.ts +2 -1
  222. package/lib/typescript/src/domain/messageSearch/component/MessageSearchHeader.d.ts +2 -1
  223. package/lib/typescript/src/domain/messageSearch/component/MessageSearchList.d.ts +2 -1
  224. package/lib/typescript/src/domain/messageSearch/component/MessageSearchStatusEmpty.d.ts +2 -1
  225. package/lib/typescript/src/domain/messageSearch/component/MessageSearchStatusLoading.d.ts +2 -1
  226. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +2 -2
  227. package/lib/typescript/src/domain/openChannel/component/OpenChannelInput.d.ts +1 -1
  228. package/lib/typescript/src/domain/openChannel/component/OpenChannelMessageList.d.ts +1 -1
  229. package/lib/typescript/src/domain/openChannel/component/OpenChannelStatusEmpty.d.ts +2 -1
  230. package/lib/typescript/src/domain/openChannel/component/OpenChannelStatusLoading.d.ts +2 -1
  231. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersHeader.d.ts +2 -1
  232. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersList.d.ts +2 -1
  233. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusEmpty.d.ts +2 -1
  234. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusLoading.d.ts +2 -1
  235. package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateHeader.d.ts +2 -1
  236. package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateProfileInput.d.ts +2 -1
  237. package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateStatusLoading.d.ts +2 -1
  238. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListHeader.d.ts +2 -1
  239. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListList.d.ts +2 -1
  240. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListStatusEmpty.d.ts +2 -1
  241. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListStatusLoading.d.ts +2 -1
  242. package/lib/typescript/src/domain/openChannelModeration/component/OpenChannelModerationHeader.d.ts +2 -1
  243. package/lib/typescript/src/domain/openChannelModeration/component/OpenChannelModerationMenu.d.ts +2 -1
  244. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsHeader.d.ts +2 -1
  245. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsList.d.ts +2 -1
  246. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusEmpty.d.ts +2 -1
  247. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusLoading.d.ts +2 -1
  248. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsHeader.d.ts +2 -1
  249. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsList.d.ts +2 -1
  250. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusEmpty.d.ts +2 -1
  251. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusLoading.d.ts +2 -1
  252. package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsHeader.d.ts +2 -1
  253. package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsInfo.d.ts +2 -1
  254. package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsMenu.d.ts +2 -1
  255. package/lib/typescript/src/domain/userList/component/UserListHeader.d.ts +3 -3
  256. package/lib/typescript/src/domain/userList/component/UserListList.d.ts +1 -1
  257. package/lib/typescript/src/domain/userList/component/UserListStatusEmpty.d.ts +2 -1
  258. package/lib/typescript/src/domain/userList/component/UserListStatusLoading.d.ts +2 -1
  259. package/lib/typescript/src/domain/userList/types.d.ts +2 -2
  260. package/lib/typescript/src/hooks/useChannelInputItems.d.ts +10 -0
  261. package/lib/typescript/src/hooks/useVoiceMessageInput.d.ts +53 -0
  262. package/lib/typescript/src/index.d.ts +4 -0
  263. package/lib/typescript/src/libs/MentionManager.d.ts +2 -1
  264. package/lib/typescript/src/libs/SBUUtils.d.ts +1 -0
  265. package/lib/typescript/src/libs/VoiceMessageConfig.d.ts +25 -0
  266. package/lib/typescript/src/localization/StringSet.type.d.ts +7 -0
  267. package/lib/typescript/src/platform/createPlayerService.expo.d.ts +7 -0
  268. package/lib/typescript/src/platform/createPlayerService.native.d.ts +9 -0
  269. package/lib/typescript/src/platform/createRecorderService.expo.d.ts +7 -0
  270. package/lib/typescript/src/platform/createRecorderService.native.d.ts +9 -0
  271. package/lib/typescript/src/platform/types.d.ts +100 -1
  272. package/lib/typescript/src/types.d.ts +1 -1
  273. package/lib/typescript/src/version.d.ts +1 -1
  274. package/package.json +9 -11
  275. package/src/components/ChannelInput/MessageToReplyPreview.tsx +133 -0
  276. package/src/components/ChannelInput/SendInput.tsx +129 -320
  277. package/src/components/ChannelInput/VoiceMessageInput.tsx +206 -0
  278. package/src/components/ChannelInput/index.tsx +12 -4
  279. package/src/components/ChannelMessageList/index.tsx +3 -1
  280. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +24 -11
  281. package/src/components/GroupChannelMessageRenderer/index.tsx +80 -3
  282. package/src/components/MessageSearchResultItem.tsx +2 -1
  283. package/src/components/OpenChannelMessageRenderer/index.tsx +1 -0
  284. package/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.tsx +2 -2
  285. package/src/components/ReactionBottomSheets/index.tsx +3 -2
  286. package/src/components/StatusComposition.tsx +3 -3
  287. package/src/constants.ts +2 -0
  288. package/src/containers/GroupChannelPreviewContainer.tsx +2 -0
  289. package/src/containers/InternalErrorBoundaryContainer.tsx +1 -1
  290. package/src/containers/SendbirdUIKitContainer.tsx +103 -59
  291. package/src/contexts/PlatformServiceCtx.tsx +22 -20
  292. package/src/contexts/ReactionCtx.tsx +7 -5
  293. package/src/contexts/SendbirdChatCtx.tsx +10 -2
  294. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +29 -43
  295. package/src/domain/groupChannel/module/moduleContext.tsx +119 -7
  296. package/src/domain/groupChannel/types.ts +41 -0
  297. package/src/domain/userList/types.ts +2 -2
  298. package/src/fragments/createGroupChannelFragment.tsx +32 -5
  299. package/src/fragments/createMessageSearchFragment.tsx +1 -1
  300. package/src/hooks/useChannelInputItems.ts +215 -0
  301. package/src/hooks/useConnection.ts +1 -1
  302. package/src/hooks/useVoiceMessageInput.ts +237 -0
  303. package/src/index.ts +4 -0
  304. package/src/libs/MentionManager.tsx +1 -1
  305. package/src/libs/SBUUtils.ts +5 -0
  306. package/src/libs/VoiceMessageConfig.ts +28 -0
  307. package/src/localization/StringSet.type.ts +8 -0
  308. package/src/localization/createBaseStringSet.ts +27 -11
  309. package/src/platform/createFileService.expo.ts +10 -0
  310. package/src/platform/createFileService.native.ts +19 -0
  311. package/src/platform/createPlayerService.expo.tsx +142 -0
  312. package/src/platform/createPlayerService.native.tsx +148 -0
  313. package/src/platform/createRecorderService.expo.tsx +160 -0
  314. package/src/platform/createRecorderService.native.tsx +170 -0
  315. package/src/platform/types.ts +114 -1
  316. package/src/types.ts +1 -1
  317. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["React","Box","OpenChannelMessage","calcMessageGrouping","getMessageType","useLocalization","usePlatformService","useSendbirdChat","SBUUtils","OpenChannelMessageDateSeparator","OpenChannelMessageRenderer","_ref","channel","message","onPress","onLongPress","onShowUserProfile","enableMessageGrouping","prevMessage","nextMessage","sbOptions","STRINGS","mediaService","groupWithPrev","Boolean","messageProps","onPressURL","url","openURL","onPressAvatar","sender","hideMessageButton","grouped","strings","edited","OPEN_CHANNEL","MESSAGE_BUBBLE_EDITED_POSTFIX","senderName","nickname","LABELS","USER_NO_NAME","sentDate","MESSAGE_BUBBLE_TIME","fileName","isFileMessage","MESSAGE_BUBBLE_FILE_TITLE","unknownTitle","MESSAGE_BUBBLE_UNKNOWN_TITLE","unknownDescription","MESSAGE_BUBBLE_UNKNOWN_DESC","renderMessage","createElement","Admin","_extends","User","uikitWithAppInfo","openChannel","enableOgtag","OpenGraphUser","File","ImageFile","VideoFile","fetchThumbnailFromVideoSource","uri","getVideoThumbnail","timeMills","Unknown","memo"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { OpenChannelMessageProps } from '@sendbird/uikit-react-native-foundation';\nimport { Box, OpenChannelMessage } from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdAdminMessage,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n calcMessageGrouping,\n getMessageType,\n} from '@sendbird/uikit-utils';\n\nimport type { OpenChannelProps } from '../../domain/openChannel/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport OpenChannelMessageDateSeparator from './OpenChannelMessageDateSeparator';\n\nconst OpenChannelMessageRenderer: OpenChannelProps['Fragment']['renderMessage'] = ({\n channel,\n message,\n onPress,\n onLongPress,\n onShowUserProfile,\n enableMessageGrouping,\n prevMessage,\n nextMessage,\n}) => {\n const { sbOptions } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { mediaService } = usePlatformService();\n const { groupWithPrev } = calcMessageGrouping(Boolean(enableMessageGrouping), message, prevMessage, nextMessage);\n\n const messageProps: Omit<OpenChannelMessageProps<SendbirdMessage>, 'message'> = {\n channel,\n onPress,\n onLongPress,\n onPressURL: (url) => SBUUtils.openURL(url),\n onPressAvatar: () => 'sender' in message && onShowUserProfile?.(message.sender, { hideMessageButton: true }),\n grouped: groupWithPrev,\n strings: {\n edited: STRINGS.OPEN_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX,\n senderName: ('sender' in message && message.sender.nickname) || STRINGS.LABELS.USER_NO_NAME,\n sentDate: STRINGS.OPEN_CHANNEL.MESSAGE_BUBBLE_TIME(message),\n fileName: message.isFileMessage() ? STRINGS.OPEN_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message) : '',\n unknownTitle: STRINGS.OPEN_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_TITLE(message),\n unknownDescription: STRINGS.OPEN_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_DESC(message),\n },\n };\n const renderMessage = () => {\n switch (getMessageType(message)) {\n case 'admin': {\n return <OpenChannelMessage.Admin message={message as SendbirdAdminMessage} {...messageProps} />;\n }\n case 'user': {\n return <OpenChannelMessage.User message={message as SendbirdUserMessage} {...messageProps} />;\n }\n case 'user.opengraph': {\n if (sbOptions.uikitWithAppInfo.openChannel.channel.enableOgtag) {\n return <OpenChannelMessage.OpenGraphUser message={message as SendbirdUserMessage} {...messageProps} />;\n } else {\n return <OpenChannelMessage.User message={message as SendbirdUserMessage} {...messageProps} />;\n }\n }\n case 'file':\n case 'file.audio': {\n return <OpenChannelMessage.File message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.image': {\n return <OpenChannelMessage.ImageFile message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.video': {\n return (\n <OpenChannelMessage.VideoFile\n message={message as SendbirdFileMessage}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n {...messageProps}\n />\n );\n }\n case 'unknown':\n default: {\n return <OpenChannelMessage.Unknown message={message} {...messageProps} />;\n }\n }\n };\n\n return (\n <Box>\n <OpenChannelMessageDateSeparator message={message} prevMessage={prevMessage} />\n {renderMessage()}\n </Box>\n );\n};\n\nexport default React.memo(OpenChannelMessageRenderer);\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","Box","OpenChannelMessage","calcMessageGrouping","getMessageType","useLocalization","usePlatformService","useSendbirdChat","SBUUtils","OpenChannelMessageDateSeparator","OpenChannelMessageRenderer","_ref","channel","message","onPress","onLongPress","onShowUserProfile","enableMessageGrouping","prevMessage","nextMessage","sbOptions","STRINGS","mediaService","groupWithPrev","Boolean","messageProps","onPressURL","url","openURL","onPressAvatar","sender","hideMessageButton","grouped","strings","edited","OPEN_CHANNEL","MESSAGE_BUBBLE_EDITED_POSTFIX","senderName","nickname","LABELS","USER_NO_NAME","sentDate","MESSAGE_BUBBLE_TIME","fileName","isFileMessage","MESSAGE_BUBBLE_FILE_TITLE","unknownTitle","MESSAGE_BUBBLE_UNKNOWN_TITLE","unknownDescription","MESSAGE_BUBBLE_UNKNOWN_DESC","renderMessage","createElement","Admin","_extends","User","uikitWithAppInfo","openChannel","enableOgtag","OpenGraphUser","File","ImageFile","VideoFile","fetchThumbnailFromVideoSource","uri","getVideoThumbnail","timeMills","Unknown","memo"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { OpenChannelMessageProps } from '@sendbird/uikit-react-native-foundation';\nimport { Box, OpenChannelMessage } from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdAdminMessage,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n calcMessageGrouping,\n getMessageType,\n} from '@sendbird/uikit-utils';\n\nimport type { OpenChannelProps } from '../../domain/openChannel/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport OpenChannelMessageDateSeparator from './OpenChannelMessageDateSeparator';\n\nconst OpenChannelMessageRenderer: OpenChannelProps['Fragment']['renderMessage'] = ({\n channel,\n message,\n onPress,\n onLongPress,\n onShowUserProfile,\n enableMessageGrouping,\n prevMessage,\n nextMessage,\n}) => {\n const { sbOptions } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { mediaService } = usePlatformService();\n const { groupWithPrev } = calcMessageGrouping(Boolean(enableMessageGrouping), message, prevMessage, nextMessage);\n\n const messageProps: Omit<OpenChannelMessageProps<SendbirdMessage>, 'message'> = {\n channel,\n onPress,\n onLongPress,\n onPressURL: (url) => SBUUtils.openURL(url),\n onPressAvatar: () => 'sender' in message && onShowUserProfile?.(message.sender, { hideMessageButton: true }),\n grouped: groupWithPrev,\n strings: {\n edited: STRINGS.OPEN_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX,\n senderName: ('sender' in message && message.sender.nickname) || STRINGS.LABELS.USER_NO_NAME,\n sentDate: STRINGS.OPEN_CHANNEL.MESSAGE_BUBBLE_TIME(message),\n fileName: message.isFileMessage() ? STRINGS.OPEN_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message) : '',\n unknownTitle: STRINGS.OPEN_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_TITLE(message),\n unknownDescription: STRINGS.OPEN_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_DESC(message),\n },\n };\n const renderMessage = () => {\n switch (getMessageType(message)) {\n case 'admin': {\n return <OpenChannelMessage.Admin message={message as SendbirdAdminMessage} {...messageProps} />;\n }\n case 'user': {\n return <OpenChannelMessage.User message={message as SendbirdUserMessage} {...messageProps} />;\n }\n case 'user.opengraph': {\n if (sbOptions.uikitWithAppInfo.openChannel.channel.enableOgtag) {\n return <OpenChannelMessage.OpenGraphUser message={message as SendbirdUserMessage} {...messageProps} />;\n } else {\n return <OpenChannelMessage.User message={message as SendbirdUserMessage} {...messageProps} />;\n }\n }\n case 'file':\n case 'file.voice':\n case 'file.audio': {\n return <OpenChannelMessage.File message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.image': {\n return <OpenChannelMessage.ImageFile message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.video': {\n return (\n <OpenChannelMessage.VideoFile\n message={message as SendbirdFileMessage}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n {...messageProps}\n />\n );\n }\n case 'unknown':\n default: {\n return <OpenChannelMessage.Unknown message={message} {...messageProps} />;\n }\n }\n };\n\n return (\n <Box>\n <OpenChannelMessageDateSeparator message={message} prevMessage={prevMessage} />\n {renderMessage()}\n </Box>\n );\n};\n\nexport default React.memo(OpenChannelMessageRenderer);\n"],"mappings":"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"}
@@ -11,7 +11,7 @@ const ReactionUserListBottomSheet = _ref => {
11
11
  reactionCtx,
12
12
  chatCtx,
13
13
  localizationCtx,
14
- userProfileCtx
14
+ onPressUserProfile
15
15
  } = _ref;
16
16
  const {
17
17
  width
@@ -139,7 +139,7 @@ const ReactionUserListBottomSheet = _ref => {
139
139
  onPress: async () => {
140
140
  if (user) {
141
141
  await onClose();
142
- userProfileCtx.show(user);
142
+ onPressUserProfile(user);
143
143
  }
144
144
  },
145
145
  style: styles.pageItem
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useRef","useState","Animated","Easing","Pressable","ScrollView","View","useWindowDimensions","useSafeAreaInsets","Avatar","Divider","Image","Modal","Text","createStyleSheet","useUIKitTheme","getReactionCount","truncatedCount","ReactionUserListBottomSheet","_ref","visible","onClose","onDismiss","reactionCtx","chatCtx","localizationCtx","userProfileCtx","width","bottom","left","right","colors","tabIndex","setTabIndex","scrollRef","tabIndicatorValue","tabIndicatorAnimated","x","Value","current","focusedWithLayoutCalculated","emojiManager","channel","message","focusIndex","STRINGS","color","ui","reaction","default","reactions","focusedReaction","containerSafeArea","paddingLeft","styles","layout","paddingHorizontal","paddingRight","focusTab","index","animated","arguments","length","undefined","indicatorValue","_scrollRef$current","animateTabIndicator","scrollTo","baseConfig","duration","easing","inOut","ease","useNativeDriver","parallel","timing","toValue","start","layoutCalculated","every","Boolean","renderTabs","createElement","style","tabsWrapper","map","isFocused","key","isLastItem","emoji","allEmojiMap","tabItem","marginRight","onPress","onLayout","e","nativeEvent","source","uri","url","tabEmoji","button","selected","highlight","enabled","tabIndicator","backgroundColor","renderPage","Fragment","userIds","userId","isGroupChannel","user","members","find","show","pageItem","size","profileUrl","containerStyle","avatar","subtitle2","flex","nickname","LABELS","USER_NO_NAME","type","backgroundStyle","modal","container","paddingBottom","dialog","none","background","ref","horizontal","bounces","showsHorizontalScrollIndicator","contentContainerStyle","tabsContainer","top","showsVerticalScrollIndicator","pageContainer","overflow","borderTopLeftRadius","borderTopRightRadius","paddingTop","alignItems","justifyContent","flexGrow","flexDirection","height","position"],"sources":["ReactionUserListBottomSheet.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Animated, Easing, Pressable, ScrollView, View, useWindowDimensions } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n Avatar,\n Divider,\n Image,\n Modal,\n Text,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdReaction, getReactionCount, truncatedCount } from '@sendbird/uikit-utils';\n\nimport type { ReactionBottomSheetProps } from './index';\n\nconst ReactionUserListBottomSheet = ({\n visible,\n onClose,\n onDismiss,\n reactionCtx,\n chatCtx,\n localizationCtx,\n userProfileCtx,\n}: ReactionBottomSheetProps) => {\n const { width } = useWindowDimensions();\n const { bottom, left, right } = useSafeAreaInsets();\n const { colors } = useUIKitTheme();\n\n const [tabIndex, setTabIndex] = useState(0);\n const scrollRef = useRef<ScrollView>();\n const tabIndicatorValue = useRef<Array<{ x: number; width: number }>>([]);\n const tabIndicatorAnimated = useRef({ x: new Animated.Value(0), width: new Animated.Value(0) }).current;\n const focusedWithLayoutCalculated = useRef(false);\n\n const { emojiManager } = chatCtx;\n const { channel, message, focusIndex } = reactionCtx;\n const { STRINGS } = localizationCtx;\n\n const color = colors.ui.reaction.default;\n const reactions = message?.reactions ?? [];\n const focusedReaction = reactions[tabIndex] as SendbirdReaction | undefined;\n const containerSafeArea = {\n paddingLeft: left + styles.layout.paddingHorizontal,\n paddingRight: right + styles.layout.paddingHorizontal,\n };\n\n const focusTab = (index: number, animated = true) => {\n const indicatorValue = tabIndicatorValue.current[index];\n if (indicatorValue) {\n setTabIndex(index);\n animateTabIndicator(indicatorValue.x, indicatorValue.width, animated);\n scrollRef.current?.scrollTo({ x: indicatorValue.x, animated });\n }\n };\n\n const animateTabIndicator = (x: number, width: number, animated = true) => {\n const baseConfig = { duration: animated ? 300 : 0, easing: Easing.inOut(Easing.ease), useNativeDriver: false };\n Animated.parallel([\n Animated.timing(tabIndicatorAnimated.x, { toValue: x, ...baseConfig }),\n Animated.timing(tabIndicatorAnimated.width, { toValue: width, ...baseConfig }),\n ]).start();\n };\n\n const layoutCalculated = () => {\n return tabIndicatorValue.current.length === reactions.length && tabIndicatorValue.current.every(Boolean);\n };\n\n useEffect(() => {\n if (!visible) {\n tabIndicatorValue.current = [];\n tabIndicatorAnimated.x = new Animated.Value(0);\n tabIndicatorAnimated.width = new Animated.Value(0);\n focusedWithLayoutCalculated.current = false;\n }\n }, [visible]);\n\n const renderTabs = () => {\n return (\n <Pressable style={styles.tabsWrapper}>\n {reactions.map((reaction, index) => {\n const isFocused = focusedReaction?.key === reaction.key;\n const isLastItem = reactions.length - 1 === index;\n const emoji = emojiManager.allEmojiMap[reaction.key];\n\n return (\n <Pressable\n key={reaction.key}\n style={[styles.tabItem, isLastItem && { marginRight: styles.layout.marginRight }]}\n onPress={() => focusTab(index)}\n onLayout={(e) => {\n tabIndicatorValue.current[index] = e.nativeEvent.layout;\n if (layoutCalculated()) {\n if (focusedWithLayoutCalculated.current) {\n focusTab(tabIndex, false);\n } else {\n focusedWithLayoutCalculated.current = true;\n focusTab(focusIndex);\n }\n }\n }}\n >\n <Image source={{ uri: emoji.url }} style={styles.tabEmoji} />\n <Text button color={isFocused ? color.selected.highlight : color.enabled.highlight}>\n {truncatedCount(getReactionCount(reaction))}\n </Text>\n </Pressable>\n );\n })}\n <Animated.View\n style={[\n styles.tabIndicator,\n {\n left: tabIndicatorAnimated.x,\n width: tabIndicatorAnimated.width,\n backgroundColor: color.selected.highlight,\n },\n ]}\n />\n </Pressable>\n );\n };\n\n const renderPage = () => {\n return (\n <>\n {focusedReaction?.userIds.map((userId) => {\n if (channel?.isGroupChannel()) {\n const user = channel.members.find((x) => x.userId === userId);\n return (\n <Pressable\n key={userId}\n onPress={async () => {\n if (user) {\n await onClose();\n userProfileCtx.show(user);\n }\n }}\n style={styles.pageItem}\n >\n <Avatar size={36} uri={user?.profileUrl} containerStyle={styles.avatar} />\n <Text subtitle2 style={{ flex: 1 }}>\n {user?.nickname || STRINGS.LABELS.USER_NO_NAME}\n </Text>\n </Pressable>\n );\n }\n return null;\n })}\n </>\n );\n };\n\n return (\n <Modal\n type={'slide-no-gesture'}\n visible={Boolean(visible && channel && message)}\n onClose={onClose}\n onDismiss={onDismiss}\n backgroundStyle={styles.modal}\n >\n <View\n style={[\n styles.container,\n { width, paddingBottom: bottom, backgroundColor: colors.ui.dialog.default.none.background },\n ]}\n >\n <ScrollView\n ref={scrollRef as never}\n horizontal\n bounces={false}\n showsHorizontalScrollIndicator={false}\n contentContainerStyle={[containerSafeArea, styles.tabsContainer]}\n >\n {renderTabs()}\n </ScrollView>\n <Divider style={{ top: -1 }} />\n <ScrollView\n bounces={false}\n showsVerticalScrollIndicator={false}\n style={styles.pageContainer}\n contentContainerStyle={containerSafeArea}\n >\n {renderPage()}\n </ScrollView>\n </View>\n </Modal>\n );\n};\n\nconst styles = createStyleSheet({\n layout: {\n paddingHorizontal: 16,\n marginRight: 0,\n },\n container: {\n overflow: 'hidden',\n borderTopLeftRadius: 8,\n borderTopRightRadius: 8,\n paddingTop: 16,\n alignItems: 'center',\n },\n modal: {\n alignItems: 'center',\n justifyContent: 'flex-end',\n },\n tabsContainer: {\n flexGrow: 1,\n },\n tabsWrapper: {\n flexGrow: 1,\n flexDirection: 'row',\n alignItems: 'flex-start',\n justifyContent: 'center',\n height: 44,\n },\n tabItem: {\n marginRight: 16,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n tabEmoji: {\n width: 28,\n height: 28,\n marginRight: 4,\n },\n tabIndicator: {\n position: 'absolute',\n bottom: 0,\n height: 3,\n },\n pageContainer: {\n height: 216,\n width: '100%',\n },\n pageItem: {\n flexDirection: 'row',\n width: '100%',\n height: 48,\n alignItems: 'center',\n },\n avatar: {\n marginRight: 16,\n },\n});\n\nexport default ReactionUserListBottomSheet;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useEffect","useRef","useState","Animated","Easing","Pressable","ScrollView","View","useWindowDimensions","useSafeAreaInsets","Avatar","Divider","Image","Modal","Text","createStyleSheet","useUIKitTheme","getReactionCount","truncatedCount","ReactionUserListBottomSheet","_ref","visible","onClose","onDismiss","reactionCtx","chatCtx","localizationCtx","onPressUserProfile","width","bottom","left","right","colors","tabIndex","setTabIndex","scrollRef","tabIndicatorValue","tabIndicatorAnimated","x","Value","current","focusedWithLayoutCalculated","emojiManager","channel","message","focusIndex","STRINGS","color","ui","reaction","default","reactions","focusedReaction","containerSafeArea","paddingLeft","styles","layout","paddingHorizontal","paddingRight","focusTab","index","animated","arguments","length","undefined","indicatorValue","_scrollRef$current","animateTabIndicator","scrollTo","baseConfig","duration","easing","inOut","ease","useNativeDriver","parallel","timing","toValue","start","layoutCalculated","every","Boolean","renderTabs","createElement","style","tabsWrapper","map","isFocused","key","isLastItem","emoji","allEmojiMap","tabItem","marginRight","onPress","onLayout","e","nativeEvent","source","uri","url","tabEmoji","button","selected","highlight","enabled","tabIndicator","backgroundColor","renderPage","Fragment","userIds","userId","isGroupChannel","user","members","find","pageItem","size","profileUrl","containerStyle","avatar","subtitle2","flex","nickname","LABELS","USER_NO_NAME","type","backgroundStyle","modal","container","paddingBottom","dialog","none","background","ref","horizontal","bounces","showsHorizontalScrollIndicator","contentContainerStyle","tabsContainer","top","showsVerticalScrollIndicator","pageContainer","overflow","borderTopLeftRadius","borderTopRightRadius","paddingTop","alignItems","justifyContent","flexGrow","flexDirection","height","position"],"sources":["ReactionUserListBottomSheet.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Animated, Easing, Pressable, ScrollView, View, useWindowDimensions } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n Avatar,\n Divider,\n Image,\n Modal,\n Text,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdReaction, getReactionCount, truncatedCount } from '@sendbird/uikit-utils';\n\nimport type { ReactionBottomSheetProps } from './index';\n\nconst ReactionUserListBottomSheet = ({\n visible,\n onClose,\n onDismiss,\n reactionCtx,\n chatCtx,\n localizationCtx,\n onPressUserProfile,\n}: ReactionBottomSheetProps) => {\n const { width } = useWindowDimensions();\n const { bottom, left, right } = useSafeAreaInsets();\n const { colors } = useUIKitTheme();\n\n const [tabIndex, setTabIndex] = useState(0);\n const scrollRef = useRef<ScrollView>();\n const tabIndicatorValue = useRef<Array<{ x: number; width: number }>>([]);\n const tabIndicatorAnimated = useRef({ x: new Animated.Value(0), width: new Animated.Value(0) }).current;\n const focusedWithLayoutCalculated = useRef(false);\n\n const { emojiManager } = chatCtx;\n const { channel, message, focusIndex } = reactionCtx;\n const { STRINGS } = localizationCtx;\n\n const color = colors.ui.reaction.default;\n const reactions = message?.reactions ?? [];\n const focusedReaction = reactions[tabIndex] as SendbirdReaction | undefined;\n const containerSafeArea = {\n paddingLeft: left + styles.layout.paddingHorizontal,\n paddingRight: right + styles.layout.paddingHorizontal,\n };\n\n const focusTab = (index: number, animated = true) => {\n const indicatorValue = tabIndicatorValue.current[index];\n if (indicatorValue) {\n setTabIndex(index);\n animateTabIndicator(indicatorValue.x, indicatorValue.width, animated);\n scrollRef.current?.scrollTo({ x: indicatorValue.x, animated });\n }\n };\n\n const animateTabIndicator = (x: number, width: number, animated = true) => {\n const baseConfig = { duration: animated ? 300 : 0, easing: Easing.inOut(Easing.ease), useNativeDriver: false };\n Animated.parallel([\n Animated.timing(tabIndicatorAnimated.x, { toValue: x, ...baseConfig }),\n Animated.timing(tabIndicatorAnimated.width, { toValue: width, ...baseConfig }),\n ]).start();\n };\n\n const layoutCalculated = () => {\n return tabIndicatorValue.current.length === reactions.length && tabIndicatorValue.current.every(Boolean);\n };\n\n useEffect(() => {\n if (!visible) {\n tabIndicatorValue.current = [];\n tabIndicatorAnimated.x = new Animated.Value(0);\n tabIndicatorAnimated.width = new Animated.Value(0);\n focusedWithLayoutCalculated.current = false;\n }\n }, [visible]);\n\n const renderTabs = () => {\n return (\n <Pressable style={styles.tabsWrapper}>\n {reactions.map((reaction, index) => {\n const isFocused = focusedReaction?.key === reaction.key;\n const isLastItem = reactions.length - 1 === index;\n const emoji = emojiManager.allEmojiMap[reaction.key];\n\n return (\n <Pressable\n key={reaction.key}\n style={[styles.tabItem, isLastItem && { marginRight: styles.layout.marginRight }]}\n onPress={() => focusTab(index)}\n onLayout={(e) => {\n tabIndicatorValue.current[index] = e.nativeEvent.layout;\n if (layoutCalculated()) {\n if (focusedWithLayoutCalculated.current) {\n focusTab(tabIndex, false);\n } else {\n focusedWithLayoutCalculated.current = true;\n focusTab(focusIndex);\n }\n }\n }}\n >\n <Image source={{ uri: emoji.url }} style={styles.tabEmoji} />\n <Text button color={isFocused ? color.selected.highlight : color.enabled.highlight}>\n {truncatedCount(getReactionCount(reaction))}\n </Text>\n </Pressable>\n );\n })}\n <Animated.View\n style={[\n styles.tabIndicator,\n {\n left: tabIndicatorAnimated.x,\n width: tabIndicatorAnimated.width,\n backgroundColor: color.selected.highlight,\n },\n ]}\n />\n </Pressable>\n );\n };\n\n const renderPage = () => {\n return (\n <>\n {focusedReaction?.userIds.map((userId) => {\n if (channel?.isGroupChannel()) {\n const user = channel.members.find((x) => x.userId === userId);\n return (\n <Pressable\n key={userId}\n onPress={async () => {\n if (user) {\n await onClose();\n onPressUserProfile(user);\n }\n }}\n style={styles.pageItem}\n >\n <Avatar size={36} uri={user?.profileUrl} containerStyle={styles.avatar} />\n <Text subtitle2 style={{ flex: 1 }}>\n {user?.nickname || STRINGS.LABELS.USER_NO_NAME}\n </Text>\n </Pressable>\n );\n }\n return null;\n })}\n </>\n );\n };\n\n return (\n <Modal\n type={'slide-no-gesture'}\n visible={Boolean(visible && channel && message)}\n onClose={onClose}\n onDismiss={onDismiss}\n backgroundStyle={styles.modal}\n >\n <View\n style={[\n styles.container,\n { width, paddingBottom: bottom, backgroundColor: colors.ui.dialog.default.none.background },\n ]}\n >\n <ScrollView\n ref={scrollRef as never}\n horizontal\n bounces={false}\n showsHorizontalScrollIndicator={false}\n contentContainerStyle={[containerSafeArea, styles.tabsContainer]}\n >\n {renderTabs()}\n </ScrollView>\n <Divider style={{ top: -1 }} />\n <ScrollView\n bounces={false}\n showsVerticalScrollIndicator={false}\n style={styles.pageContainer}\n contentContainerStyle={containerSafeArea}\n >\n {renderPage()}\n </ScrollView>\n </View>\n </Modal>\n );\n};\n\nconst styles = createStyleSheet({\n layout: {\n paddingHorizontal: 16,\n marginRight: 0,\n },\n container: {\n overflow: 'hidden',\n borderTopLeftRadius: 8,\n borderTopRightRadius: 8,\n paddingTop: 16,\n alignItems: 'center',\n },\n modal: {\n alignItems: 'center',\n justifyContent: 'flex-end',\n },\n tabsContainer: {\n flexGrow: 1,\n },\n tabsWrapper: {\n flexGrow: 1,\n flexDirection: 'row',\n alignItems: 'flex-start',\n justifyContent: 'center',\n height: 44,\n },\n tabItem: {\n marginRight: 16,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n tabEmoji: {\n width: 28,\n height: 28,\n marginRight: 4,\n },\n tabIndicator: {\n position: 'absolute',\n bottom: 0,\n height: 3,\n },\n pageContainer: {\n height: 216,\n width: '100%',\n },\n pageItem: {\n flexDirection: 'row',\n width: '100%',\n height: 48,\n alignItems: 'center',\n },\n avatar: {\n marginRight: 16,\n },\n});\n\nexport default ReactionUserListBottomSheet;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["ReactionList","UserList","ReactionBottomSheets"],"sources":["index.tsx"],"sourcesContent":["import type React from 'react';\n\nimport type { LocalizationContext } from '../../contexts/LocalizationCtx';\nimport type { ReactionContext } from '../../contexts/ReactionCtx';\nimport type { SendbirdChatContext } from '../../contexts/SendbirdChatCtx';\nimport type { UserProfileContext } from '../../contexts/UserProfileCtx';\nimport ReactionList from './ReactionListBottomSheet';\nimport UserList from './ReactionUserListBottomSheet';\n\ntype GetFromContext<T> = T extends React.Context<infer Value> ? NonNullable<Value> : never;\nexport type ReactionBottomSheetProps = {\n visible: boolean;\n onDismiss: () => void;\n onClose: () => Promise<void>;\n chatCtx: GetFromContext<typeof SendbirdChatContext>;\n reactionCtx: GetFromContext<typeof ReactionContext>;\n localizationCtx: GetFromContext<typeof LocalizationContext>;\n userProfileCtx: GetFromContext<typeof UserProfileContext>;\n};\n\nexport const ReactionBottomSheets = {\n ReactionList,\n UserList,\n};\n"],"mappings":"AAMA,OAAOA,YAAY,MAAM,2BAA2B;AACpD,OAAOC,QAAQ,MAAM,+BAA+B;AAapD,OAAO,MAAMC,oBAAoB,GAAG;EAClCF,YAAY;EACZC;AACF,CAAC"}
1
+ {"version":3,"names":["ReactionList","UserList","ReactionBottomSheets"],"sources":["index.tsx"],"sourcesContent":["import type React from 'react';\n\nimport type { SendbirdMember, SendbirdUser } from '@sendbird/uikit-utils';\n\nimport type { LocalizationContext } from '../../contexts/LocalizationCtx';\nimport type { ReactionContext } from '../../contexts/ReactionCtx';\nimport type { SendbirdChatContext } from '../../contexts/SendbirdChatCtx';\nimport ReactionList from './ReactionListBottomSheet';\nimport UserList from './ReactionUserListBottomSheet';\n\ntype GetFromContext<T> = T extends React.Context<infer Value> ? NonNullable<Value> : never;\nexport type ReactionBottomSheetProps = {\n visible: boolean;\n onDismiss: () => void;\n onClose: () => Promise<void>;\n onPressUserProfile: (user: SendbirdUser | SendbirdMember) => void;\n chatCtx: GetFromContext<typeof SendbirdChatContext>;\n reactionCtx: GetFromContext<typeof ReactionContext>;\n localizationCtx: GetFromContext<typeof LocalizationContext>;\n};\n\nexport const ReactionBottomSheets = {\n ReactionList,\n UserList,\n};\n"],"mappings":"AAOA,OAAOA,YAAY,MAAM,2BAA2B;AACpD,OAAOC,QAAQ,MAAM,+BAA+B;AAapD,OAAO,MAAMC,oBAAoB,GAAG;EAClCF,YAAY;EACZC;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","StatusComposition","_ref","children","error","ErrorComponent","LoadingComponent","loading","createElement","Fragment"],"sources":["StatusComposition.tsx"],"sourcesContent":["import React from 'react';\n\ntype Props = {\n loading?: boolean;\n LoadingComponent?: JSX.Element;\n error?: boolean;\n ErrorComponent?: JSX.Element;\n children: React.ReactNode;\n};\nconst StatusComposition = ({ children, error, ErrorComponent, LoadingComponent, loading }: Props) => {\n if (loading && LoadingComponent) return <>{LoadingComponent}</>;\n if (error && ErrorComponent) return <>{ErrorComponent}</>;\n return <>{children}</>;\n};\n\nexport default StatusComposition;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AASzB,MAAMC,iBAAiB,GAAGC,IAAA,IAA2E;EAAA,IAA1E;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,cAAc;IAAEC,gBAAgB;IAAEC;EAAe,CAAC,GAAAL,IAAA;EAC9F,IAAIK,OAAO,IAAID,gBAAgB,EAAE,oBAAON,KAAA,CAAAQ,aAAA,CAAAR,KAAA,CAAAS,QAAA,QAAGH,gBAAgB,CAAI;EAC/D,IAAIF,KAAK,IAAIC,cAAc,EAAE,oBAAOL,KAAA,CAAAQ,aAAA,CAAAR,KAAA,CAAAS,QAAA,QAAGJ,cAAc,CAAI;EACzD,oBAAOL,KAAA,CAAAQ,aAAA,CAAAR,KAAA,CAAAS,QAAA,QAAGN,QAAQ,CAAI;AACxB,CAAC;AAED,eAAeF,iBAAiB"}
1
+ {"version":3,"names":["React","StatusComposition","_ref","children","error","ErrorComponent","LoadingComponent","loading","createElement","Fragment"],"sources":["StatusComposition.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\n\ntype Props = {\n loading?: boolean;\n LoadingComponent?: ReactNode;\n error?: boolean;\n ErrorComponent?: ReactNode;\n children: React.ReactNode;\n};\nconst StatusComposition = ({ children, error, ErrorComponent, LoadingComponent, loading }: Props) => {\n if (loading && LoadingComponent) return <>{LoadingComponent}</>;\n if (error && ErrorComponent) return <>{ErrorComponent}</>;\n return <>{children}</>;\n};\n\nexport default StatusComposition;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAqB,OAAO;AASxC,MAAMC,iBAAiB,GAAGC,IAAA,IAA2E;EAAA,IAA1E;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,cAAc;IAAEC,gBAAgB;IAAEC;EAAe,CAAC,GAAAL,IAAA;EAC9F,IAAIK,OAAO,IAAID,gBAAgB,EAAE,oBAAON,KAAA,CAAAQ,aAAA,CAAAR,KAAA,CAAAS,QAAA,QAAGH,gBAAgB,CAAI;EAC/D,IAAIF,KAAK,IAAIC,cAAc,EAAE,oBAAOL,KAAA,CAAAQ,aAAA,CAAAR,KAAA,CAAAS,QAAA,QAAGJ,cAAc,CAAI;EACzD,oBAAOL,KAAA,CAAAQ,aAAA,CAAAR,KAAA,CAAAS,QAAA,QAAGN,QAAQ,CAAI;AACxB,CAAC;AAED,eAAeF,iBAAiB"}
@@ -2,4 +2,6 @@ export const DEFAULT_LONG_PRESS_DELAY = 350;
2
2
  export const MESSAGE_SEARCH_SAFE_SCROLL_DELAY = 500;
3
3
  export const MESSAGE_FOCUS_ANIMATION_DELAY = 250;
4
4
  export const UNKNOWN_USER_ID = '##__USER_ID_IS_NOT_PROVIDED__##';
5
+ export const VOICE_MESSAGE_META_ARRAY_DURATION_KEY = 'KEY_VOICE_MESSAGE_DURATION';
6
+ export const VOICE_MESSAGE_META_ARRAY_MESSAGE_TYPE_KEY = 'KEY_INTERNAL_MESSAGE_TYPE';
5
7
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_LONG_PRESS_DELAY","MESSAGE_SEARCH_SAFE_SCROLL_DELAY","MESSAGE_FOCUS_ANIMATION_DELAY","UNKNOWN_USER_ID"],"sources":["constants.ts"],"sourcesContent":["export const DEFAULT_LONG_PRESS_DELAY = 350;\nexport const MESSAGE_SEARCH_SAFE_SCROLL_DELAY = 500;\nexport const MESSAGE_FOCUS_ANIMATION_DELAY = 250;\n\nexport const UNKNOWN_USER_ID = '##__USER_ID_IS_NOT_PROVIDED__##';\n"],"mappings":"AAAA,OAAO,MAAMA,wBAAwB,GAAG,GAAG;AAC3C,OAAO,MAAMC,gCAAgC,GAAG,GAAG;AACnD,OAAO,MAAMC,6BAA6B,GAAG,GAAG;AAEhD,OAAO,MAAMC,eAAe,GAAG,iCAAiC"}
1
+ {"version":3,"names":["DEFAULT_LONG_PRESS_DELAY","MESSAGE_SEARCH_SAFE_SCROLL_DELAY","MESSAGE_FOCUS_ANIMATION_DELAY","UNKNOWN_USER_ID","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","VOICE_MESSAGE_META_ARRAY_MESSAGE_TYPE_KEY"],"sources":["constants.ts"],"sourcesContent":["export const DEFAULT_LONG_PRESS_DELAY = 350;\nexport const MESSAGE_SEARCH_SAFE_SCROLL_DELAY = 500;\nexport const MESSAGE_FOCUS_ANIMATION_DELAY = 250;\n\nexport const UNKNOWN_USER_ID = '##__USER_ID_IS_NOT_PROVIDED__##';\nexport const VOICE_MESSAGE_META_ARRAY_DURATION_KEY = 'KEY_VOICE_MESSAGE_DURATION';\nexport const VOICE_MESSAGE_META_ARRAY_MESSAGE_TYPE_KEY = 'KEY_INTERNAL_MESSAGE_TYPE';\n"],"mappings":"AAAA,OAAO,MAAMA,wBAAwB,GAAG,GAAG;AAC3C,OAAO,MAAMC,gCAAgC,GAAG,GAAG;AACnD,OAAO,MAAMC,6BAA6B,GAAG,GAAG;AAEhD,OAAO,MAAMC,eAAe,GAAG,iCAAiC;AAChE,OAAO,MAAMC,qCAAqC,GAAG,4BAA4B;AACjF,OAAO,MAAMC,yCAAyC,GAAG,2BAA2B"}
@@ -2,7 +2,7 @@ import React, { useState } from 'react';
2
2
  import { Pressable } from 'react-native';
3
3
  import { useChannelHandler, useMessageOutgoingStatus } from '@sendbird/uikit-chat-hooks';
4
4
  import { GroupChannelPreview, Icon, LoadingSpinner, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
5
- import { convertFileTypeToMessageType, getFileIconFromMessageType, getFileTypeFromMessage, isDifferentChannel, isMyMessage, useIIFE, useUniqHandlerId } from '@sendbird/uikit-utils';
5
+ import { convertFileTypeToMessageType, getFileIconFromMessageType, getFileTypeFromMessage, isDifferentChannel, isMyMessage, isVoiceMessage, useIIFE, useUniqHandlerId } from '@sendbird/uikit-utils';
6
6
  import ChannelCover from '../components/ChannelCover';
7
7
  import { DEFAULT_LONG_PRESS_DELAY } from '../constants';
8
8
  import { useLocalization, useSendbirdChat } from '../hooks/useContext';
@@ -41,6 +41,7 @@ const GroupChannelPreviewContainer = _ref => {
41
41
  var _channel$lastMessage;
42
42
  if (!((_channel$lastMessage = channel.lastMessage) !== null && _channel$lastMessage !== void 0 && _channel$lastMessage.isFileMessage())) return undefined;
43
43
  if (typingUsers.length > 0) return undefined;
44
+ if (isVoiceMessage(channel.lastMessage)) return undefined;
44
45
  return getFileTypeFromMessage(channel.lastMessage);
45
46
  });
46
47
  const titleCaptionIcon = useIIFE(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","Pressable","useChannelHandler","useMessageOutgoingStatus","GroupChannelPreview","Icon","LoadingSpinner","createStyleSheet","useUIKitTheme","convertFileTypeToMessageType","getFileIconFromMessageType","getFileTypeFromMessage","isDifferentChannel","isMyMessage","useIIFE","useUniqHandlerId","ChannelCover","DEFAULT_LONG_PRESS_DELAY","useLocalization","useSendbirdChat","GroupChannelPreviewContainer","_ref","onPress","onLongPress","channel","currentUser","sdk","sbOptions","mentionManager","STRINGS","colors","typingUsers","setTypingUsers","handlerId","onTypingStatusUpdated","eventChannel","uikit","groupChannel","channelList","enableTypingIndicator","getTypingUsers","outgoingStatus","lastMessage","bodyText","length","LABELS","TYPING_INDICATOR_TYPINGS","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_BODY","fileType","_channel$lastMessage","isFileMessage","undefined","titleCaptionIcon","isEphemeral","enableMessageReceiptStatus","userId","createElement","size","style","styles","icon","color","error","onBackground03","containerStyle","secondary","unreadMessageCount","delayLongPress","customCover","coverUrl","title","CHANNEL_PREVIEW_TITLE","titleCaptionLeft","titleCaption","CHANNEL_PREVIEW_TITLE_CAPTION","body","bodyIcon","badgeCount","mentioned","unreadMentionCount","mentionTrigger","config","trigger","memberCount","frozen","isFrozen","broadcast","isBroadcast","notificationOff","myPushTriggerOption","marginRight","broadcastCover","padding","borderRadius"],"sources":["GroupChannelPreviewContainer.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Pressable } from 'react-native';\n\nimport { useChannelHandler, useMessageOutgoingStatus } from '@sendbird/uikit-chat-hooks';\nimport {\n GroupChannelPreview,\n Icon,\n LoadingSpinner,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdGroupChannel,\n SendbirdUser,\n convertFileTypeToMessageType,\n getFileIconFromMessageType,\n getFileTypeFromMessage,\n isDifferentChannel,\n isMyMessage,\n useIIFE,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../components/ChannelCover';\nimport { DEFAULT_LONG_PRESS_DELAY } from '../constants';\nimport { useLocalization, useSendbirdChat } from '../hooks/useContext';\n\ntype Props = {\n channel: SendbirdGroupChannel;\n onPress: () => void;\n onLongPress: () => void;\n};\nconst GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props) => {\n const { currentUser, sdk, sbOptions, mentionManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n\n const handlerId = useUniqHandlerId('GroupChannelPreviewContainer_TypingIndicator');\n useChannelHandler(sdk, handlerId, {\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!sbOptions.uikit.groupChannel.channelList.enableTypingIndicator) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n\n const outgoingStatus = useMessageOutgoingStatus(sdk, channel, channel.lastMessage);\n\n const bodyText = useIIFE(() => {\n if (typingUsers.length > 0) return STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers) || '';\n else return STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel);\n });\n\n const fileType = useIIFE(() => {\n if (!channel.lastMessage?.isFileMessage()) return undefined;\n if (typingUsers.length > 0) return undefined;\n return getFileTypeFromMessage(channel.lastMessage);\n });\n\n const titleCaptionIcon = useIIFE(() => {\n if (!channel.lastMessage || channel.isEphemeral) return undefined;\n if (!sbOptions.uikit.groupChannel.channelList.enableMessageReceiptStatus) return undefined;\n if (!isMyMessage(channel.lastMessage, currentUser?.userId)) return undefined;\n\n if (outgoingStatus === 'PENDING') {\n return <LoadingSpinner size={16} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'FAILED') {\n return <Icon icon={'error'} size={16} color={colors.error} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'UNDELIVERED') {\n return <Icon icon={'done'} size={16} color={colors.onBackground03} containerStyle={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'DELIVERED' || outgoingStatus === 'UNREAD') {\n return <Icon icon={'done-all'} size={16} color={colors.onBackground03} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'READ') {\n return <Icon icon={'done-all'} size={16} color={colors.secondary} style={styles.titleCaptionIcon} />;\n }\n\n return undefined;\n });\n\n const unreadMessageCount = useIIFE(() => (channel.isEphemeral ? 0 : channel.unreadMessageCount));\n\n return (\n <Pressable delayLongPress={DEFAULT_LONG_PRESS_DELAY} onPress={onPress} onLongPress={onLongPress}>\n <GroupChannelPreview\n customCover={<ChannelCover channel={channel} size={56} />}\n coverUrl={channel.coverUrl}\n title={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE(currentUser?.userId ?? '', channel)}\n titleCaptionLeft={titleCaptionIcon}\n titleCaption={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel)}\n body={bodyText}\n bodyIcon={fileType && getFileIconFromMessageType(convertFileTypeToMessageType(fileType))}\n badgeCount={unreadMessageCount}\n mentioned={channel.unreadMentionCount > 0}\n mentionTrigger={mentionManager.config.trigger}\n memberCount={channel.memberCount > 2 ? channel.memberCount : undefined}\n frozen={channel.isFrozen}\n broadcast={channel.isBroadcast}\n notificationOff={channel.myPushTriggerOption === 'off'}\n />\n </Pressable>\n );\n};\n\nconst styles = createStyleSheet({\n titleCaptionIcon: {\n marginRight: 4,\n },\n broadcastCover: {\n padding: 12,\n borderRadius: 28,\n },\n});\n\nexport default GroupChannelPreviewContainer;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useState","Pressable","useChannelHandler","useMessageOutgoingStatus","GroupChannelPreview","Icon","LoadingSpinner","createStyleSheet","useUIKitTheme","convertFileTypeToMessageType","getFileIconFromMessageType","getFileTypeFromMessage","isDifferentChannel","isMyMessage","isVoiceMessage","useIIFE","useUniqHandlerId","ChannelCover","DEFAULT_LONG_PRESS_DELAY","useLocalization","useSendbirdChat","GroupChannelPreviewContainer","_ref","onPress","onLongPress","channel","currentUser","sdk","sbOptions","mentionManager","STRINGS","colors","typingUsers","setTypingUsers","handlerId","onTypingStatusUpdated","eventChannel","uikit","groupChannel","channelList","enableTypingIndicator","getTypingUsers","outgoingStatus","lastMessage","bodyText","length","LABELS","TYPING_INDICATOR_TYPINGS","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_BODY","fileType","_channel$lastMessage","isFileMessage","undefined","titleCaptionIcon","isEphemeral","enableMessageReceiptStatus","userId","createElement","size","style","styles","icon","color","error","onBackground03","containerStyle","secondary","unreadMessageCount","delayLongPress","customCover","coverUrl","title","CHANNEL_PREVIEW_TITLE","titleCaptionLeft","titleCaption","CHANNEL_PREVIEW_TITLE_CAPTION","body","bodyIcon","badgeCount","mentioned","unreadMentionCount","mentionTrigger","config","trigger","memberCount","frozen","isFrozen","broadcast","isBroadcast","notificationOff","myPushTriggerOption","marginRight","broadcastCover","padding","borderRadius"],"sources":["GroupChannelPreviewContainer.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Pressable } from 'react-native';\n\nimport { useChannelHandler, useMessageOutgoingStatus } from '@sendbird/uikit-chat-hooks';\nimport {\n GroupChannelPreview,\n Icon,\n LoadingSpinner,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdGroupChannel,\n SendbirdUser,\n convertFileTypeToMessageType,\n getFileIconFromMessageType,\n getFileTypeFromMessage,\n isDifferentChannel,\n isMyMessage,\n isVoiceMessage,\n useIIFE,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../components/ChannelCover';\nimport { DEFAULT_LONG_PRESS_DELAY } from '../constants';\nimport { useLocalization, useSendbirdChat } from '../hooks/useContext';\n\ntype Props = {\n channel: SendbirdGroupChannel;\n onPress: () => void;\n onLongPress: () => void;\n};\nconst GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props) => {\n const { currentUser, sdk, sbOptions, mentionManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n\n const handlerId = useUniqHandlerId('GroupChannelPreviewContainer_TypingIndicator');\n useChannelHandler(sdk, handlerId, {\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!sbOptions.uikit.groupChannel.channelList.enableTypingIndicator) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n\n const outgoingStatus = useMessageOutgoingStatus(sdk, channel, channel.lastMessage);\n\n const bodyText = useIIFE(() => {\n if (typingUsers.length > 0) return STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers) || '';\n else return STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel);\n });\n\n const fileType = useIIFE(() => {\n if (!channel.lastMessage?.isFileMessage()) return undefined;\n if (typingUsers.length > 0) return undefined;\n if (isVoiceMessage(channel.lastMessage)) return undefined;\n return getFileTypeFromMessage(channel.lastMessage);\n });\n\n const titleCaptionIcon = useIIFE(() => {\n if (!channel.lastMessage || channel.isEphemeral) return undefined;\n if (!sbOptions.uikit.groupChannel.channelList.enableMessageReceiptStatus) return undefined;\n if (!isMyMessage(channel.lastMessage, currentUser?.userId)) return undefined;\n\n if (outgoingStatus === 'PENDING') {\n return <LoadingSpinner size={16} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'FAILED') {\n return <Icon icon={'error'} size={16} color={colors.error} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'UNDELIVERED') {\n return <Icon icon={'done'} size={16} color={colors.onBackground03} containerStyle={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'DELIVERED' || outgoingStatus === 'UNREAD') {\n return <Icon icon={'done-all'} size={16} color={colors.onBackground03} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'READ') {\n return <Icon icon={'done-all'} size={16} color={colors.secondary} style={styles.titleCaptionIcon} />;\n }\n\n return undefined;\n });\n\n const unreadMessageCount = useIIFE(() => (channel.isEphemeral ? 0 : channel.unreadMessageCount));\n\n return (\n <Pressable delayLongPress={DEFAULT_LONG_PRESS_DELAY} onPress={onPress} onLongPress={onLongPress}>\n <GroupChannelPreview\n customCover={<ChannelCover channel={channel} size={56} />}\n coverUrl={channel.coverUrl}\n title={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE(currentUser?.userId ?? '', channel)}\n titleCaptionLeft={titleCaptionIcon}\n titleCaption={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel)}\n body={bodyText}\n bodyIcon={fileType && getFileIconFromMessageType(convertFileTypeToMessageType(fileType))}\n badgeCount={unreadMessageCount}\n mentioned={channel.unreadMentionCount > 0}\n mentionTrigger={mentionManager.config.trigger}\n memberCount={channel.memberCount > 2 ? channel.memberCount : undefined}\n frozen={channel.isFrozen}\n broadcast={channel.isBroadcast}\n notificationOff={channel.myPushTriggerOption === 'off'}\n />\n </Pressable>\n );\n};\n\nconst styles = createStyleSheet({\n titleCaptionIcon: {\n marginRight: 4,\n },\n broadcastCover: {\n padding: 12,\n borderRadius: 28,\n },\n});\n\nexport default GroupChannelPreviewContainer;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","TypedPlaceholder","DefaultErrorBoundaryComponent","props","createElement","style","flex","justifyContent","alignItems","type","onPressRetry","reset","InternalErrorBoundaryContainer","PureComponent","constructor","arguments","_defineProperty","error","errorInfo","_this$props$onError","_this$props","setState","onError","call","state","_this$props$ErrorInfo","_this$props2","ErrorInfoComponent","Fragment","children"],"sources":["InternalErrorBoundaryContainer.tsx"],"sourcesContent":["import React, { ErrorInfo } from 'react';\nimport { View } from 'react-native';\n\nimport TypedPlaceholder from '../components/TypedPlaceholder';\nimport type { ErrorBoundaryProps } from '../types';\n\nconst DefaultErrorBoundaryComponent = (props: ErrorBoundaryProps) => {\n return (\n <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>\n <TypedPlaceholder type={'error-wrong'} onPressRetry={props.reset} />\n </View>\n );\n};\n\nclass InternalErrorBoundaryContainer extends React.PureComponent<{\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n children?: React.ReactNode;\n}> {\n static defaultProps = {\n ErrorInfoComponent: DefaultErrorBoundaryComponent,\n };\n\n state: { error: Error | null; errorInfo: ErrorInfo | null } = {\n error: null,\n errorInfo: null,\n };\n\n componentDidCatch = (error: Error, errorInfo: ErrorInfo) => {\n this.setState({ error, errorInfo });\n this.props.onError?.({ error, errorInfo, reset: this.reset });\n };\n\n reset = () => {\n this.setState({ error: null, errorInfo: null });\n };\n\n render = () => {\n if (this.state.error && this.state.errorInfo) {\n return (\n this.props.ErrorInfoComponent?.({\n error: this.state.error,\n errorInfo: this.state.errorInfo,\n reset: this.reset,\n }) ?? null\n );\n }\n\n return <>{this.props.children}</>;\n };\n}\n\nexport default InternalErrorBoundaryContainer;\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAqB,OAAO;AACxC,SAASC,IAAI,QAAQ,cAAc;AAEnC,OAAOC,gBAAgB,MAAM,gCAAgC;AAG7D,MAAMC,6BAA6B,GAAIC,KAAyB,IAAK;EACnE,oBACEJ,KAAA,CAAAK,aAAA,CAACJ,IAAI;IAACK,KAAK,EAAE;MAAEC,IAAI,EAAE,CAAC;MAAEC,cAAc,EAAE,QAAQ;MAAEC,UAAU,EAAE;IAAS;EAAE,gBACvET,KAAA,CAAAK,aAAA,CAACH,gBAAgB;IAACQ,IAAI,EAAE,aAAc;IAACC,YAAY,EAAEP,KAAK,CAACQ;EAAM,EAAG,CAC/D;AAEX,CAAC;AAED,MAAMC,8BAA8B,SAASb,KAAK,CAACc,aAAa,CAI7D;EAAAC,YAAA;IAAA,SAAAC,SAAA;IAAAC,eAAA,gBAK6D;MAC5DC,KAAK,EAAE,IAAI;MACXC,SAAS,EAAE;IACb,CAAC;IAAAF,eAAA,4BAEmB,CAACC,KAAY,EAAEC,SAAoB,KAAK;MAAA,IAAAC,mBAAA,EAAAC,WAAA;MAC1D,IAAI,CAACC,QAAQ,CAAC;QAAEJ,KAAK;QAAEC;MAAU,CAAC,CAAC;MACnC,CAAAC,mBAAA,IAAAC,WAAA,OAAI,CAACjB,KAAK,EAACmB,OAAO,cAAAH,mBAAA,uBAAlBA,mBAAA,CAAAI,IAAA,CAAAH,WAAA,EAAqB;QAAEH,KAAK;QAAEC,SAAS;QAAEP,KAAK,EAAE,IAAI,CAACA;MAAM,CAAC,CAAC;IAC/D,CAAC;IAAAK,eAAA,gBAEO,MAAM;MACZ,IAAI,CAACK,QAAQ,CAAC;QAAEJ,KAAK,EAAE,IAAI;QAAEC,SAAS,EAAE;MAAK,CAAC,CAAC;IACjD,CAAC;IAAAF,eAAA,iBAEQ,MAAM;MACb,IAAI,IAAI,CAACQ,KAAK,CAACP,KAAK,IAAI,IAAI,CAACO,KAAK,CAACN,SAAS,EAAE;QAAA,IAAAO,qBAAA,EAAAC,YAAA;QAC5C,OACE,EAAAD,qBAAA,IAAAC,YAAA,OAAI,CAACvB,KAAK,EAACwB,kBAAkB,cAAAF,qBAAA,uBAA7BA,qBAAA,CAAAF,IAAA,CAAAG,YAAA,EAAgC;UAC9BT,KAAK,EAAE,IAAI,CAACO,KAAK,CAACP,KAAK;UACvBC,SAAS,EAAE,IAAI,CAACM,KAAK,CAACN,SAAS;UAC/BP,KAAK,EAAE,IAAI,CAACA;QACd,CAAC,CAAC,KAAI,IAAI;MAEd;MAEA,oBAAOZ,KAAA,CAAAK,aAAA,CAAAL,KAAA,CAAA6B,QAAA,QAAG,IAAI,CAACzB,KAAK,CAAC0B,QAAQ,CAAI;IACnC,CAAC;EAAA;AACH;AAACb,eAAA,CApCKJ,8BAA8B,kBAKZ;EACpBe,kBAAkB,EAAEzB;AACtB,CAAC;AA+BH,eAAeU,8BAA8B"}
1
+ {"version":3,"names":["React","View","TypedPlaceholder","DefaultErrorBoundaryComponent","props","createElement","style","flex","justifyContent","alignItems","type","onPressRetry","reset","InternalErrorBoundaryContainer","PureComponent","constructor","arguments","_defineProperty","error","errorInfo","_this$props$onError","_this$props","setState","onError","call","state","_this$props$ErrorInfo","_this$props2","ErrorInfoComponent","Fragment","children"],"sources":["InternalErrorBoundaryContainer.tsx"],"sourcesContent":["import React, { ErrorInfo } from 'react';\nimport { View } from 'react-native';\n\nimport TypedPlaceholder from '../components/TypedPlaceholder';\nimport type { ErrorBoundaryProps } from '../types';\n\nconst DefaultErrorBoundaryComponent = (props: ErrorBoundaryProps) => {\n return (\n <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>\n <TypedPlaceholder type={'error-wrong'} onPressRetry={props.reset} />\n </View>\n );\n};\n\nclass InternalErrorBoundaryContainer extends React.PureComponent<{\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => React.ReactNode;\n children?: React.ReactNode;\n}> {\n static defaultProps = {\n ErrorInfoComponent: DefaultErrorBoundaryComponent,\n };\n\n state: { error: Error | null; errorInfo: ErrorInfo | null } = {\n error: null,\n errorInfo: null,\n };\n\n componentDidCatch = (error: Error, errorInfo: ErrorInfo) => {\n this.setState({ error, errorInfo });\n this.props.onError?.({ error, errorInfo, reset: this.reset });\n };\n\n reset = () => {\n this.setState({ error: null, errorInfo: null });\n };\n\n render = () => {\n if (this.state.error && this.state.errorInfo) {\n return (\n this.props.ErrorInfoComponent?.({\n error: this.state.error,\n errorInfo: this.state.errorInfo,\n reset: this.reset,\n }) ?? null\n );\n }\n\n return <>{this.props.children}</>;\n };\n}\n\nexport default InternalErrorBoundaryContainer;\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAqB,OAAO;AACxC,SAASC,IAAI,QAAQ,cAAc;AAEnC,OAAOC,gBAAgB,MAAM,gCAAgC;AAG7D,MAAMC,6BAA6B,GAAIC,KAAyB,IAAK;EACnE,oBACEJ,KAAA,CAAAK,aAAA,CAACJ,IAAI;IAACK,KAAK,EAAE;MAAEC,IAAI,EAAE,CAAC;MAAEC,cAAc,EAAE,QAAQ;MAAEC,UAAU,EAAE;IAAS;EAAE,gBACvET,KAAA,CAAAK,aAAA,CAACH,gBAAgB;IAACQ,IAAI,EAAE,aAAc;IAACC,YAAY,EAAEP,KAAK,CAACQ;EAAM,EAAG,CAC/D;AAEX,CAAC;AAED,MAAMC,8BAA8B,SAASb,KAAK,CAACc,aAAa,CAI7D;EAAAC,YAAA;IAAA,SAAAC,SAAA;IAAAC,eAAA,gBAK6D;MAC5DC,KAAK,EAAE,IAAI;MACXC,SAAS,EAAE;IACb,CAAC;IAAAF,eAAA,4BAEmB,CAACC,KAAY,EAAEC,SAAoB,KAAK;MAAA,IAAAC,mBAAA,EAAAC,WAAA;MAC1D,IAAI,CAACC,QAAQ,CAAC;QAAEJ,KAAK;QAAEC;MAAU,CAAC,CAAC;MACnC,CAAAC,mBAAA,IAAAC,WAAA,OAAI,CAACjB,KAAK,EAACmB,OAAO,cAAAH,mBAAA,uBAAlBA,mBAAA,CAAAI,IAAA,CAAAH,WAAA,EAAqB;QAAEH,KAAK;QAAEC,SAAS;QAAEP,KAAK,EAAE,IAAI,CAACA;MAAM,CAAC,CAAC;IAC/D,CAAC;IAAAK,eAAA,gBAEO,MAAM;MACZ,IAAI,CAACK,QAAQ,CAAC;QAAEJ,KAAK,EAAE,IAAI;QAAEC,SAAS,EAAE;MAAK,CAAC,CAAC;IACjD,CAAC;IAAAF,eAAA,iBAEQ,MAAM;MACb,IAAI,IAAI,CAACQ,KAAK,CAACP,KAAK,IAAI,IAAI,CAACO,KAAK,CAACN,SAAS,EAAE;QAAA,IAAAO,qBAAA,EAAAC,YAAA;QAC5C,OACE,EAAAD,qBAAA,IAAAC,YAAA,OAAI,CAACvB,KAAK,EAACwB,kBAAkB,cAAAF,qBAAA,uBAA7BA,qBAAA,CAAAF,IAAA,CAAAG,YAAA,EAAgC;UAC9BT,KAAK,EAAE,IAAI,CAACO,KAAK,CAACP,KAAK;UACvBC,SAAS,EAAE,IAAI,CAACM,KAAK,CAACN,SAAS;UAC/BP,KAAK,EAAE,IAAI,CAACA;QACd,CAAC,CAAC,KAAI,IAAI;MAEd;MAEA,oBAAOZ,KAAA,CAAAK,aAAA,CAAAL,KAAA,CAAA6B,QAAA,QAAG,IAAI,CAACzB,KAAK,CAAC0B,QAAQ,CAAI;IACnC,CAAC;EAAA;AACH;AAACb,eAAA,CApCKJ,8BAA8B,kBAKZ;EACpBe,kBAAkB,EAAEzB;AACtB,CAAC;AA+BH,eAAeU,8BAA8B"}
@@ -1,7 +1,8 @@
1
+ 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); }
1
2
  import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';
2
3
  import { Platform } from 'react-native';
3
4
  import { SafeAreaProvider } from 'react-native-safe-area-context';
4
- import Sendbird, { DeviceOsPlatform, SendbirdPlatform, SendbirdProduct } from '@sendbird/chat';
5
+ import SendbirdChat, { DeviceOsPlatform, SendbirdPlatform, SendbirdProduct } from '@sendbird/chat';
5
6
  import { GroupChannelModule } from '@sendbird/chat/groupChannel';
6
7
  import { OpenChannelModule } from '@sendbird/chat/openChannel';
7
8
  import { DialogProvider, Header, HeaderStyleProvider, LightUIKitTheme, ToastProvider, UIKitThemeProvider } from '@sendbird/uikit-react-native-foundation';
@@ -17,6 +18,7 @@ import ImageCompressionConfig from '../libs/ImageCompressionConfig';
17
18
  import InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';
18
19
  import MentionConfig from '../libs/MentionConfig';
19
20
  import MentionManager from '../libs/MentionManager';
21
+ import VoiceMessageConfig from '../libs/VoiceMessageConfig';
20
22
  import StringSetEn from '../localization/StringSet.en';
21
23
  import SBUDynamicModule from '../platform/dynamicModule';
22
24
  import VERSION from '../version';
@@ -31,8 +33,16 @@ export const SendbirdUIKit = Object.freeze({
31
33
  IMAGE_COMPRESSION: true
32
34
  }
33
35
  });
34
- const SendbirdUIKitContainer = _ref => {
35
- let {
36
+ const chatOmitKeys = ['appId', 'newInstance', 'modules', 'debugMode', 'appVersion', 'localCacheEnabled', 'useAsyncStorageStore'];
37
+ function sanitizeChatOptions(chatOptions) {
38
+ const opts = {
39
+ ...chatOptions
40
+ };
41
+ chatOmitKeys.forEach(key => delete opts[key]);
42
+ return opts;
43
+ }
44
+ const SendbirdUIKitContainer = props => {
45
+ const {
36
46
  children,
37
47
  appId,
38
48
  chatOptions,
@@ -43,9 +53,8 @@ const SendbirdUIKitContainer = _ref => {
43
53
  errorBoundary,
44
54
  toast,
45
55
  userProfile,
46
- userMention,
47
- imageCompression
48
- } = _ref;
56
+ reaction
57
+ } = props;
49
58
  if (!chatOptions.localCacheStorage) {
50
59
  throw new Error('SendbirdUIKitContainer: chatOptions.localCacheStorage is required');
51
60
  }
@@ -56,34 +65,23 @@ const SendbirdUIKitContainer = _ref => {
56
65
  const [sdkInstance, setSdkInstance] = useState(() => {
57
66
  const sendbird = initializeSendbird(appId, {
58
67
  internalStorage,
59
- ...chatOptions
68
+ ...sanitizeChatOptions(chatOptions)
60
69
  });
61
70
  unsubscribes.current = sendbird.unsubscribes;
62
71
  return sendbird.chatSDK;
63
72
  });
73
+ const {
74
+ imageCompressionConfig,
75
+ voiceMessageConfig,
76
+ mentionConfig
77
+ } = useConfigInstance(props);
64
78
  const emojiManager = useMemo(() => new EmojiManager(internalStorage), [internalStorage]);
65
- const mentionManager = useMemo(() => {
66
- const config = new MentionConfig({
67
- mentionLimit: (userMention === null || userMention === void 0 ? void 0 : userMention.mentionLimit) || MentionConfig.DEFAULT.MENTION_LIMIT,
68
- suggestionLimit: (userMention === null || userMention === void 0 ? void 0 : userMention.suggestionLimit) || MentionConfig.DEFAULT.SUGGESTION_LIMIT,
69
- debounceMills: (userMention === null || userMention === void 0 ? void 0 : userMention.debounceMills) ?? MentionConfig.DEFAULT.DEBOUNCE_MILLS,
70
- delimiter: MentionConfig.DEFAULT.DELIMITER,
71
- trigger: MentionConfig.DEFAULT.TRIGGER
72
- });
73
- return new MentionManager(config);
74
- }, [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]);
75
- const imageCompressionConfig = useMemo(() => {
76
- return new ImageCompressionConfig({
77
- compressionRate: (imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.compressionRate) || ImageCompressionConfig.DEFAULT.COMPRESSION_RATE,
78
- width: imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.width,
79
- height: imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.height
80
- });
81
- }, [imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.compressionRate, imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.width, imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.height]);
79
+ const mentionManager = useMemo(() => new MentionManager(mentionConfig), [mentionConfig]);
82
80
  useLayoutEffect(() => {
83
81
  if (!isFirstMount) {
84
82
  const sendbird = initializeSendbird(appId, {
85
83
  internalStorage,
86
- ...chatOptions
84
+ ...sanitizeChatOptions(chatOptions)
87
85
  });
88
86
  setSdkInstance(sendbird.chatSDK);
89
87
  unsubscribes.current = sendbird.unsubscribes;
@@ -121,6 +119,7 @@ const SendbirdUIKitContainer = _ref => {
121
119
  emojiManager: emojiManager,
122
120
  mentionManager: mentionManager,
123
121
  imageCompressionConfig: imageCompressionConfig,
122
+ voiceMessageConfig: voiceMessageConfig,
124
123
  enableAutoPushTokenRegistration: chatOptions.enableAutoPushTokenRegistration ?? SendbirdUIKit.DEFAULT.AUTO_PUSH_TOKEN_REGISTRATION,
125
124
  enableUseUserIdForNickname: chatOptions.enableUseUserIdForNickname ?? SendbirdUIKit.DEFAULT.USE_USER_ID_FOR_NICKNAME,
126
125
  enableImageCompression: chatOptions.enableImageCompression ?? SendbirdUIKit.DEFAULT.IMAGE_COMPRESSION
@@ -130,7 +129,10 @@ const SendbirdUIKitContainer = _ref => {
130
129
  fileService: platformServices.file,
131
130
  notificationService: platformServices.notification,
132
131
  clipboardService: platformServices.clipboard,
133
- mediaService: platformServices.media
132
+ mediaService: platformServices.media,
133
+ playerService: platformServices.player,
134
+ recorderService: platformServices.recorder,
135
+ voiceMessageConfig: voiceMessageConfig
134
136
  }, /*#__PURE__*/React.createElement(UIKitThemeProvider, {
135
137
  theme: (styles === null || styles === void 0 ? void 0 : styles.theme) ?? LightUIKitTheme
136
138
  }, /*#__PURE__*/React.createElement(HeaderStyleProvider, {
@@ -139,11 +141,9 @@ const SendbirdUIKitContainer = _ref => {
139
141
  statusBarTranslucent: (styles === null || styles === void 0 ? void 0 : styles.statusBarTranslucent) ?? true
140
142
  }, /*#__PURE__*/React.createElement(ToastProvider, {
141
143
  dismissTimeout: toast === null || toast === void 0 ? void 0 : toast.dismissTimeout
142
- }, /*#__PURE__*/React.createElement(UserProfileProvider, {
143
- onCreateChannel: userProfile === null || userProfile === void 0 ? void 0 : userProfile.onCreateChannel,
144
- onBeforeCreateChannel: userProfile === null || userProfile === void 0 ? void 0 : userProfile.onBeforeCreateChannel,
144
+ }, /*#__PURE__*/React.createElement(UserProfileProvider, _extends({}, userProfile, {
145
145
  statusBarTranslucent: (styles === null || styles === void 0 ? void 0 : styles.statusBarTranslucent) ?? true
146
- }, /*#__PURE__*/React.createElement(ReactionProvider, null, /*#__PURE__*/React.createElement(LocalizationContext.Consumer, null, value => {
146
+ }), /*#__PURE__*/React.createElement(ReactionProvider, reaction, /*#__PURE__*/React.createElement(LocalizationContext.Consumer, null, value => {
147
147
  const STRINGS = (value === null || value === void 0 ? void 0 : value.STRINGS) || defaultStringSet;
148
148
  return /*#__PURE__*/React.createElement(DialogProvider, {
149
149
  defaultLabels: {
@@ -164,16 +164,16 @@ const initializeSendbird = (appId, options) => {
164
164
  const unsubscribes = [];
165
165
  const {
166
166
  internalStorage,
167
- localCacheEncryption,
168
- onInitialized
167
+ onInitialized,
168
+ ...chatInitParams
169
169
  } = options;
170
- chatSDK = Sendbird.init({
170
+ chatSDK = SendbirdChat.init({
171
+ ...chatInitParams,
171
172
  appId,
172
173
  newInstance: true,
173
174
  modules: [new GroupChannelModule(), new OpenChannelModule()],
174
- localCacheEnabled: Boolean(internalStorage),
175
- useAsyncStorageStore: internalStorage,
176
- localCacheEncryption
175
+ localCacheEnabled: true,
176
+ useAsyncStorageStore: internalStorage
177
177
  });
178
178
  if (onInitialized) {
179
179
  chatSDK = onInitialized(chatSDK);
@@ -256,5 +256,43 @@ function getReactNativeVersion() {
256
256
  } = Platform.constants.reactNativeVersion;
257
257
  return `${major}.${minor}.${patch}`;
258
258
  }
259
+ const useConfigInstance = _ref => {
260
+ var _voiceMessage$recorde3, _voiceMessage$recorde4;
261
+ let {
262
+ imageCompression,
263
+ userMention,
264
+ voiceMessage
265
+ } = _ref;
266
+ const mentionConfig = useMemo(() => {
267
+ return new MentionConfig({
268
+ mentionLimit: (userMention === null || userMention === void 0 ? void 0 : userMention.mentionLimit) || MentionConfig.DEFAULT.MENTION_LIMIT,
269
+ suggestionLimit: (userMention === null || userMention === void 0 ? void 0 : userMention.suggestionLimit) || MentionConfig.DEFAULT.SUGGESTION_LIMIT,
270
+ debounceMills: (userMention === null || userMention === void 0 ? void 0 : userMention.debounceMills) ?? MentionConfig.DEFAULT.DEBOUNCE_MILLS,
271
+ delimiter: MentionConfig.DEFAULT.DELIMITER,
272
+ trigger: MentionConfig.DEFAULT.TRIGGER
273
+ });
274
+ }, [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]);
275
+ const imageCompressionConfig = useMemo(() => {
276
+ return new ImageCompressionConfig({
277
+ compressionRate: (imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.compressionRate) || ImageCompressionConfig.DEFAULT.COMPRESSION_RATE,
278
+ width: imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.width,
279
+ height: imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.height
280
+ });
281
+ }, [imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.compressionRate, imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.width, imageCompression === null || imageCompression === void 0 ? void 0 : imageCompression.height]);
282
+ const voiceMessageConfig = useMemo(() => {
283
+ var _voiceMessage$recorde, _voiceMessage$recorde2;
284
+ return new VoiceMessageConfig({
285
+ recorder: {
286
+ minDuration: (voiceMessage === null || voiceMessage === void 0 ? void 0 : (_voiceMessage$recorde = voiceMessage.recorder) === null || _voiceMessage$recorde === void 0 ? void 0 : _voiceMessage$recorde.minDuration) ?? VoiceMessageConfig.DEFAULT.RECORDER.MIN_DURATION,
287
+ maxDuration: (voiceMessage === null || voiceMessage === void 0 ? void 0 : (_voiceMessage$recorde2 = voiceMessage.recorder) === null || _voiceMessage$recorde2 === void 0 ? void 0 : _voiceMessage$recorde2.maxDuration) ?? VoiceMessageConfig.DEFAULT.RECORDER.MAX_DURATION
288
+ }
289
+ });
290
+ }, [voiceMessage === null || voiceMessage === void 0 ? void 0 : (_voiceMessage$recorde3 = voiceMessage.recorder) === null || _voiceMessage$recorde3 === void 0 ? void 0 : _voiceMessage$recorde3.minDuration, voiceMessage === null || voiceMessage === void 0 ? void 0 : (_voiceMessage$recorde4 = voiceMessage.recorder) === null || _voiceMessage$recorde4 === void 0 ? void 0 : _voiceMessage$recorde4.maxDuration]);
291
+ return {
292
+ mentionConfig,
293
+ imageCompressionConfig,
294
+ voiceMessageConfig
295
+ };
296
+ };
259
297
  export default SendbirdUIKitContainer;
260
298
  //# sourceMappingURL=SendbirdUIKitContainer.js.map