@sendbird/uikit-react-native 3.1.2 → 3.3.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 (337) hide show
  1. package/README.md +67 -42
  2. package/lib/commonjs/components/ChannelInput/EditInput.js +2 -11
  3. package/lib/commonjs/components/ChannelInput/EditInput.js.map +1 -1
  4. package/lib/commonjs/components/ChannelInput/MessageToReplyPreview.js +145 -0
  5. package/lib/commonjs/components/ChannelInput/MessageToReplyPreview.js.map +1 -0
  6. package/lib/commonjs/components/ChannelInput/SendInput.js +149 -323
  7. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  8. package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js +238 -0
  9. package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js.map +1 -0
  10. package/lib/commonjs/components/ChannelInput/index.js +34 -3
  11. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  12. package/lib/commonjs/components/ChannelMessageList/index.js +148 -116
  13. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  14. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +24 -13
  15. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  16. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +134 -6
  17. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  18. package/lib/commonjs/components/MessageSearchResultItem.js +1 -0
  19. package/lib/commonjs/components/MessageSearchResultItem.js.map +1 -1
  20. package/lib/commonjs/components/OpenChannelMessageRenderer/index.js +1 -0
  21. package/lib/commonjs/components/OpenChannelMessageRenderer/index.js.map +1 -1
  22. package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +2 -2
  23. package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -1
  24. package/lib/commonjs/components/ReactionBottomSheets/index.js.map +1 -1
  25. package/lib/commonjs/components/StatusComposition.js.map +1 -1
  26. package/lib/commonjs/constants.js +5 -1
  27. package/lib/commonjs/constants.js.map +1 -1
  28. package/lib/commonjs/containers/GroupChannelPreviewContainer.js +1 -0
  29. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
  30. package/lib/commonjs/containers/InternalErrorBoundaryContainer.js.map +1 -1
  31. package/lib/commonjs/containers/SendbirdUIKitContainer.js +72 -34
  32. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  33. package/lib/commonjs/contexts/PlatformServiceCtx.js +16 -12
  34. package/lib/commonjs/contexts/PlatformServiceCtx.js.map +1 -1
  35. package/lib/commonjs/contexts/ReactionCtx.js +3 -2
  36. package/lib/commonjs/contexts/ReactionCtx.js.map +1 -1
  37. package/lib/commonjs/contexts/SendbirdChatCtx.js +2 -0
  38. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  39. package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js +14 -4
  40. package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
  41. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +28 -42
  42. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  43. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +109 -5
  44. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  45. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  46. package/lib/commonjs/domain/userList/types.js.map +1 -1
  47. package/lib/commonjs/fragments/createGroupChannelFragment.js +34 -7
  48. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  49. package/lib/commonjs/fragments/createMessageSearchFragment.js +1 -1
  50. package/lib/commonjs/fragments/createMessageSearchFragment.js.map +1 -1
  51. package/lib/commonjs/hooks/useChannelInputItems.js +211 -0
  52. package/lib/commonjs/hooks/useChannelInputItems.js.map +1 -0
  53. package/lib/commonjs/hooks/useConnection.js +1 -1
  54. package/lib/commonjs/hooks/useConnection.js.map +1 -1
  55. package/lib/commonjs/hooks/useVoiceMessageInput.js +207 -0
  56. package/lib/commonjs/hooks/useVoiceMessageInput.js.map +1 -0
  57. package/lib/commonjs/index.js +36 -0
  58. package/lib/commonjs/index.js.map +1 -1
  59. package/lib/commonjs/libs/MentionManager.js.map +1 -1
  60. package/lib/commonjs/libs/SBUUtils.js +4 -0
  61. package/lib/commonjs/libs/SBUUtils.js.map +1 -1
  62. package/lib/commonjs/libs/VoiceMessageConfig.js +30 -0
  63. package/lib/commonjs/libs/VoiceMessageConfig.js.map +1 -0
  64. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  65. package/lib/commonjs/localization/createBaseStringSet.js +24 -9
  66. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  67. package/lib/commonjs/platform/createFileService.expo.js +10 -0
  68. package/lib/commonjs/platform/createFileService.expo.js.map +1 -1
  69. package/lib/commonjs/platform/createFileService.native.js +19 -0
  70. package/lib/commonjs/platform/createFileService.native.js.map +1 -1
  71. package/lib/commonjs/platform/createPlayerService.expo.js +137 -0
  72. package/lib/commonjs/platform/createPlayerService.expo.js.map +1 -0
  73. package/lib/commonjs/platform/createPlayerService.native.js +139 -0
  74. package/lib/commonjs/platform/createPlayerService.native.js.map +1 -0
  75. package/lib/commonjs/platform/createRecorderService.expo.js +158 -0
  76. package/lib/commonjs/platform/createRecorderService.expo.js.map +1 -0
  77. package/lib/commonjs/platform/createRecorderService.native.js +157 -0
  78. package/lib/commonjs/platform/createRecorderService.native.js.map +1 -0
  79. package/lib/commonjs/platform/types.js.map +1 -1
  80. package/lib/commonjs/types.js +7 -0
  81. package/lib/commonjs/types.js.map +1 -1
  82. package/lib/commonjs/utils/promise.js +138 -0
  83. package/lib/commonjs/utils/promise.js.map +1 -0
  84. package/lib/commonjs/version.js +1 -1
  85. package/lib/commonjs/version.js.map +1 -1
  86. package/lib/module/components/ChannelInput/EditInput.js +3 -12
  87. package/lib/module/components/ChannelInput/EditInput.js.map +1 -1
  88. package/lib/module/components/ChannelInput/MessageToReplyPreview.js +137 -0
  89. package/lib/module/components/ChannelInput/MessageToReplyPreview.js.map +1 -0
  90. package/lib/module/components/ChannelInput/SendInput.js +152 -326
  91. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  92. package/lib/module/components/ChannelInput/VoiceMessageInput.js +228 -0
  93. package/lib/module/components/ChannelInput/VoiceMessageInput.js.map +1 -0
  94. package/lib/module/components/ChannelInput/index.js +36 -5
  95. package/lib/module/components/ChannelInput/index.js.map +1 -1
  96. package/lib/module/components/ChannelMessageList/index.js +149 -117
  97. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  98. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +24 -13
  99. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  100. package/lib/module/components/GroupChannelMessageRenderer/index.js +132 -7
  101. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  102. package/lib/module/components/MessageSearchResultItem.js +2 -1
  103. package/lib/module/components/MessageSearchResultItem.js.map +1 -1
  104. package/lib/module/components/OpenChannelMessageRenderer/index.js +1 -0
  105. package/lib/module/components/OpenChannelMessageRenderer/index.js.map +1 -1
  106. package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +2 -2
  107. package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -1
  108. package/lib/module/components/ReactionBottomSheets/index.js.map +1 -1
  109. package/lib/module/components/StatusComposition.js.map +1 -1
  110. package/lib/module/constants.js +2 -0
  111. package/lib/module/constants.js.map +1 -1
  112. package/lib/module/containers/GroupChannelPreviewContainer.js +2 -1
  113. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
  114. package/lib/module/containers/InternalErrorBoundaryContainer.js.map +1 -1
  115. package/lib/module/containers/SendbirdUIKitContainer.js +74 -36
  116. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  117. package/lib/module/contexts/PlatformServiceCtx.js +14 -11
  118. package/lib/module/contexts/PlatformServiceCtx.js.map +1 -1
  119. package/lib/module/contexts/ReactionCtx.js +3 -2
  120. package/lib/module/contexts/ReactionCtx.js.map +1 -1
  121. package/lib/module/contexts/SendbirdChatCtx.js +2 -0
  122. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  123. package/lib/module/domain/groupChannel/component/GroupChannelHeader.js +15 -5
  124. package/lib/module/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
  125. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +29 -43
  126. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  127. package/lib/module/domain/groupChannel/module/moduleContext.js +111 -7
  128. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  129. package/lib/module/domain/groupChannel/types.js.map +1 -1
  130. package/lib/module/domain/userList/types.js.map +1 -1
  131. package/lib/module/fragments/createGroupChannelFragment.js +36 -9
  132. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  133. package/lib/module/fragments/createMessageSearchFragment.js +1 -1
  134. package/lib/module/fragments/createMessageSearchFragment.js.map +1 -1
  135. package/lib/module/hooks/useChannelInputItems.js +203 -0
  136. package/lib/module/hooks/useChannelInputItems.js.map +1 -0
  137. package/lib/module/hooks/useConnection.js +1 -1
  138. package/lib/module/hooks/useConnection.js.map +1 -1
  139. package/lib/module/hooks/useVoiceMessageInput.js +199 -0
  140. package/lib/module/hooks/useVoiceMessageInput.js.map +1 -0
  141. package/lib/module/index.js +8 -0
  142. package/lib/module/index.js.map +1 -1
  143. package/lib/module/libs/MentionManager.js.map +1 -1
  144. package/lib/module/libs/SBUUtils.js +4 -0
  145. package/lib/module/libs/SBUUtils.js.map +1 -1
  146. package/lib/module/libs/VoiceMessageConfig.js +23 -0
  147. package/lib/module/libs/VoiceMessageConfig.js.map +1 -0
  148. package/lib/module/localization/StringSet.type.js.map +1 -1
  149. package/lib/module/localization/createBaseStringSet.js +25 -10
  150. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  151. package/lib/module/platform/createFileService.expo.js +10 -0
  152. package/lib/module/platform/createFileService.expo.js.map +1 -1
  153. package/lib/module/platform/createFileService.native.js +19 -0
  154. package/lib/module/platform/createFileService.native.js.map +1 -1
  155. package/lib/module/platform/createPlayerService.expo.js +129 -0
  156. package/lib/module/platform/createPlayerService.expo.js.map +1 -0
  157. package/lib/module/platform/createPlayerService.native.js +132 -0
  158. package/lib/module/platform/createPlayerService.native.js.map +1 -0
  159. package/lib/module/platform/createRecorderService.expo.js +150 -0
  160. package/lib/module/platform/createRecorderService.expo.js.map +1 -0
  161. package/lib/module/platform/createRecorderService.native.js +149 -0
  162. package/lib/module/platform/createRecorderService.native.js.map +1 -0
  163. package/lib/module/platform/types.js.map +1 -1
  164. package/lib/module/types.js +5 -1
  165. package/lib/module/types.js.map +1 -1
  166. package/lib/module/utils/promise.js +132 -0
  167. package/lib/module/utils/promise.js.map +1 -0
  168. package/lib/module/version.js +1 -1
  169. package/lib/module/version.js.map +1 -1
  170. package/lib/typescript/src/components/ChannelCover.d.ts +2 -1
  171. package/lib/typescript/src/components/ChannelInput/AttachmentsButton.d.ts +2 -1
  172. package/lib/typescript/src/components/ChannelInput/MessageToReplyPreview.d.ts +7 -0
  173. package/lib/typescript/src/components/ChannelInput/VoiceMessageInput.d.ts +11 -0
  174. package/lib/typescript/src/components/ChannelInput/index.d.ts +9 -3
  175. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +4 -1
  176. package/lib/typescript/src/components/FileViewer.d.ts +2 -1
  177. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.d.ts +2 -1
  178. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.d.ts +1 -1
  179. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.d.ts +1 -1
  180. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.d.ts +4 -2
  181. package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +3 -0
  182. package/lib/typescript/src/components/NewMessagesButton.d.ts +1 -1
  183. package/lib/typescript/src/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.d.ts +2 -1
  184. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +2 -0
  185. package/lib/typescript/src/components/ProviderLayout.d.ts +1 -1
  186. package/lib/typescript/src/components/ReactionAddons/BottomSheetReactionAddon.d.ts +2 -1
  187. package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +2 -1
  188. package/lib/typescript/src/components/ReactionAddons/ReactionRoundedButton.d.ts +3 -2
  189. package/lib/typescript/src/components/ReactionAddons/index.d.ts +3 -2
  190. package/lib/typescript/src/components/ReactionBottomSheets/ReactionListBottomSheet.d.ts +2 -1
  191. package/lib/typescript/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.d.ts +2 -1
  192. package/lib/typescript/src/components/ReactionBottomSheets/index.d.ts +4 -4
  193. package/lib/typescript/src/components/ScrollToBottomButton.d.ts +1 -1
  194. package/lib/typescript/src/components/StatusComposition.d.ts +4 -4
  195. package/lib/typescript/src/components/TypedPlaceholder.d.ts +2 -1
  196. package/lib/typescript/src/components/UserActionBar.d.ts +2 -1
  197. package/lib/typescript/src/components/UserSelectableBar.d.ts +2 -1
  198. package/lib/typescript/src/constants.d.ts +2 -0
  199. package/lib/typescript/src/containers/GroupChannelPreviewContainer.d.ts +2 -1
  200. package/lib/typescript/src/containers/InternalErrorBoundaryContainer.d.ts +3 -3
  201. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +19 -8
  202. package/lib/typescript/src/contexts/LocalizationCtx.d.ts +1 -1
  203. package/lib/typescript/src/contexts/PlatformServiceCtx.d.ts +8 -8
  204. package/lib/typescript/src/contexts/ReactionCtx.d.ts +5 -2
  205. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +6 -3
  206. package/lib/typescript/src/contexts/UserProfileCtx.d.ts +1 -1
  207. package/lib/typescript/src/domain/groupChannel/component/GroupChannelHeader.d.ts +2 -1
  208. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput.d.ts +1 -1
  209. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +1 -1
  210. package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusEmpty.d.ts +2 -1
  211. package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusLoading.d.ts +2 -1
  212. package/lib/typescript/src/domain/groupChannel/component/GroupChannelSuggestedMentionList.d.ts +2 -1
  213. package/lib/typescript/src/domain/groupChannel/types.d.ts +48 -0
  214. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersHeader.d.ts +2 -1
  215. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.d.ts +2 -1
  216. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.d.ts +2 -1
  217. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.d.ts +2 -1
  218. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListHeader.d.ts +2 -1
  219. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListList.d.ts +2 -1
  220. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusEmpty.d.ts +2 -1
  221. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusLoading.d.ts +2 -1
  222. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListTypeSelector.d.ts +2 -1
  223. package/lib/typescript/src/domain/groupChannelModeration/component/GroupChannelModerationHeader.d.ts +2 -1
  224. package/lib/typescript/src/domain/groupChannelModeration/component/GroupChannelModerationMenu.d.ts +2 -1
  225. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.d.ts +2 -1
  226. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.d.ts +2 -1
  227. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.d.ts +2 -1
  228. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.d.ts +2 -1
  229. package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.d.ts +2 -1
  230. package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsView.d.ts +2 -1
  231. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.d.ts +2 -1
  232. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsList.d.ts +2 -1
  233. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.d.ts +2 -1
  234. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.d.ts +2 -1
  235. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsHeader.d.ts +2 -1
  236. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.d.ts +2 -1
  237. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.d.ts +2 -1
  238. package/lib/typescript/src/domain/messageSearch/component/MessageSearchHeader.d.ts +2 -1
  239. package/lib/typescript/src/domain/messageSearch/component/MessageSearchList.d.ts +2 -1
  240. package/lib/typescript/src/domain/messageSearch/component/MessageSearchStatusEmpty.d.ts +2 -1
  241. package/lib/typescript/src/domain/messageSearch/component/MessageSearchStatusLoading.d.ts +2 -1
  242. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +2 -2
  243. package/lib/typescript/src/domain/openChannel/component/OpenChannelInput.d.ts +1 -1
  244. package/lib/typescript/src/domain/openChannel/component/OpenChannelMessageList.d.ts +1 -1
  245. package/lib/typescript/src/domain/openChannel/component/OpenChannelStatusEmpty.d.ts +2 -1
  246. package/lib/typescript/src/domain/openChannel/component/OpenChannelStatusLoading.d.ts +2 -1
  247. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersHeader.d.ts +2 -1
  248. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersList.d.ts +2 -1
  249. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusEmpty.d.ts +2 -1
  250. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusLoading.d.ts +2 -1
  251. package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateHeader.d.ts +2 -1
  252. package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateProfileInput.d.ts +2 -1
  253. package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateStatusLoading.d.ts +2 -1
  254. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListHeader.d.ts +2 -1
  255. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListList.d.ts +2 -1
  256. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListStatusEmpty.d.ts +2 -1
  257. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListStatusLoading.d.ts +2 -1
  258. package/lib/typescript/src/domain/openChannelModeration/component/OpenChannelModerationHeader.d.ts +2 -1
  259. package/lib/typescript/src/domain/openChannelModeration/component/OpenChannelModerationMenu.d.ts +2 -1
  260. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsHeader.d.ts +2 -1
  261. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsList.d.ts +2 -1
  262. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusEmpty.d.ts +2 -1
  263. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusLoading.d.ts +2 -1
  264. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsHeader.d.ts +2 -1
  265. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsList.d.ts +2 -1
  266. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusEmpty.d.ts +2 -1
  267. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusLoading.d.ts +2 -1
  268. package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsHeader.d.ts +2 -1
  269. package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsInfo.d.ts +2 -1
  270. package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsMenu.d.ts +2 -1
  271. package/lib/typescript/src/domain/userList/component/UserListHeader.d.ts +3 -3
  272. package/lib/typescript/src/domain/userList/component/UserListList.d.ts +1 -1
  273. package/lib/typescript/src/domain/userList/component/UserListStatusEmpty.d.ts +2 -1
  274. package/lib/typescript/src/domain/userList/component/UserListStatusLoading.d.ts +2 -1
  275. package/lib/typescript/src/domain/userList/types.d.ts +2 -2
  276. package/lib/typescript/src/hooks/useChannelInputItems.d.ts +10 -0
  277. package/lib/typescript/src/hooks/useVoiceMessageInput.d.ts +53 -0
  278. package/lib/typescript/src/index.d.ts +4 -0
  279. package/lib/typescript/src/libs/MentionManager.d.ts +2 -1
  280. package/lib/typescript/src/libs/SBUUtils.d.ts +1 -0
  281. package/lib/typescript/src/libs/VoiceMessageConfig.d.ts +25 -0
  282. package/lib/typescript/src/localization/StringSet.type.d.ts +7 -0
  283. package/lib/typescript/src/platform/createPlayerService.expo.d.ts +7 -0
  284. package/lib/typescript/src/platform/createPlayerService.native.d.ts +9 -0
  285. package/lib/typescript/src/platform/createRecorderService.expo.d.ts +7 -0
  286. package/lib/typescript/src/platform/createRecorderService.native.d.ts +9 -0
  287. package/lib/typescript/src/platform/types.d.ts +100 -1
  288. package/lib/typescript/src/types.d.ts +5 -1
  289. package/lib/typescript/src/utils/promise.d.ts +7 -0
  290. package/lib/typescript/src/version.d.ts +1 -1
  291. package/package.json +10 -12
  292. package/src/components/ChannelInput/EditInput.tsx +3 -15
  293. package/src/components/ChannelInput/MessageToReplyPreview.tsx +133 -0
  294. package/src/components/ChannelInput/SendInput.tsx +131 -329
  295. package/src/components/ChannelInput/VoiceMessageInput.tsx +206 -0
  296. package/src/components/ChannelInput/index.tsx +37 -6
  297. package/src/components/ChannelMessageList/index.tsx +145 -113
  298. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +24 -11
  299. package/src/components/GroupChannelMessageRenderer/index.tsx +113 -4
  300. package/src/components/MessageSearchResultItem.tsx +2 -1
  301. package/src/components/OpenChannelMessageRenderer/index.tsx +1 -0
  302. package/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.tsx +2 -2
  303. package/src/components/ReactionBottomSheets/index.tsx +3 -2
  304. package/src/components/StatusComposition.tsx +3 -3
  305. package/src/constants.ts +2 -0
  306. package/src/containers/GroupChannelPreviewContainer.tsx +2 -0
  307. package/src/containers/InternalErrorBoundaryContainer.tsx +1 -1
  308. package/src/containers/SendbirdUIKitContainer.tsx +103 -59
  309. package/src/contexts/PlatformServiceCtx.tsx +22 -20
  310. package/src/contexts/ReactionCtx.tsx +7 -5
  311. package/src/contexts/SendbirdChatCtx.tsx +10 -2
  312. package/src/domain/groupChannel/component/GroupChannelHeader.tsx +14 -3
  313. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +30 -43
  314. package/src/domain/groupChannel/module/moduleContext.tsx +119 -7
  315. package/src/domain/groupChannel/types.ts +45 -0
  316. package/src/domain/userList/types.ts +2 -2
  317. package/src/fragments/createGroupChannelFragment.tsx +43 -8
  318. package/src/fragments/createMessageSearchFragment.tsx +1 -1
  319. package/src/hooks/useChannelInputItems.ts +215 -0
  320. package/src/hooks/useConnection.ts +1 -1
  321. package/src/hooks/useVoiceMessageInput.ts +237 -0
  322. package/src/index.ts +9 -1
  323. package/src/libs/MentionManager.tsx +1 -1
  324. package/src/libs/SBUUtils.ts +5 -0
  325. package/src/libs/VoiceMessageConfig.ts +28 -0
  326. package/src/localization/StringSet.type.ts +8 -0
  327. package/src/localization/createBaseStringSet.ts +27 -11
  328. package/src/platform/createFileService.expo.ts +10 -0
  329. package/src/platform/createFileService.native.ts +19 -0
  330. package/src/platform/createPlayerService.expo.tsx +142 -0
  331. package/src/platform/createPlayerService.native.tsx +148 -0
  332. package/src/platform/createRecorderService.expo.tsx +160 -0
  333. package/src/platform/createRecorderService.native.tsx +170 -0
  334. package/src/platform/types.ts +114 -1
  335. package/src/types.ts +6 -1
  336. package/src/utils/promise.ts +139 -0
  337. package/src/version.ts +1 -1
@@ -1,9 +1,12 @@
1
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); }
2
- import React from 'react';
3
- import { Box, GroupChannelMessage, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
4
- import { calcMessageGrouping, getMessageType, isMyMessage, shouldRenderParentMessage, shouldRenderReaction, useIIFE } from '@sendbird/uikit-utils';
2
+ import React, { useContext, useEffect, useRef } from 'react';
3
+ import { Box, GroupChannelMessage, Text, TypingIndicatorBubble, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
4
+ import { calcMessageGrouping, getMessageType, isMyMessage, isVoiceMessage, shouldRenderParentMessage, shouldRenderReaction, useIIFE } from '@sendbird/uikit-utils';
5
+ import { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';
6
+ import { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';
5
7
  import { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';
6
8
  import SBUUtils from '../../libs/SBUUtils';
9
+ import { TypingIndicatorType } from '../../types';
7
10
  import { ReactionAddons } from '../ReactionAddons';
8
11
  import GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';
9
12
  import GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';
@@ -22,6 +25,7 @@ const GroupChannelMessageRenderer = _ref => {
22
25
  prevMessage,
23
26
  nextMessage
24
27
  } = _ref;
28
+ const playerUnsubscribes = useRef([]);
25
29
  const {
26
30
  palette
27
31
  } = useUIKitTheme();
@@ -34,7 +38,8 @@ const GroupChannelMessageRenderer = _ref => {
34
38
  STRINGS
35
39
  } = useLocalization();
36
40
  const {
37
- mediaService
41
+ mediaService,
42
+ playerService
38
43
  } = usePlatformService();
39
44
  const {
40
45
  groupWithPrev,
@@ -49,6 +54,15 @@ const GroupChannelMessageRenderer = _ref => {
49
54
  }
50
55
  return null;
51
56
  });
57
+ const resetPlayer = async () => {
58
+ playerUnsubscribes.current.forEach(unsubscribe => {
59
+ try {
60
+ unsubscribe();
61
+ } catch {}
62
+ });
63
+ playerUnsubscribes.current.length = 0;
64
+ await playerService.reset();
65
+ };
52
66
  const variant = isMyMessage(message, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) ? 'outgoing' : 'incoming';
53
67
  const messageProps = {
54
68
  channel,
@@ -62,6 +76,74 @@ const GroupChannelMessageRenderer = _ref => {
62
76
  onPressMentionedUser: mentionedUser => {
63
77
  if (mentionedUser) onShowUserProfile === null || onShowUserProfile === void 0 ? void 0 : onShowUserProfile(mentionedUser);
64
78
  },
79
+ onToggleVoiceMessage: async (state, setState) => {
80
+ if (isVoiceMessage(message) && message.sendingStatus === 'succeeded') {
81
+ if (playerService.uri === message.url) {
82
+ if (playerService.state === 'playing') {
83
+ await playerService.pause();
84
+ } else {
85
+ await playerService.play(message.url);
86
+ }
87
+ } else {
88
+ if (playerService.state !== 'idle') {
89
+ await resetPlayer();
90
+ }
91
+ const shouldSeekToTime = state.duration > state.currentTime && state.currentTime > 0;
92
+ let seekFinished = !shouldSeekToTime;
93
+ const forPlayback = playerService.addPlaybackListener(_ref2 => {
94
+ let {
95
+ stopped,
96
+ currentTime,
97
+ duration
98
+ } = _ref2;
99
+ if (seekFinished) {
100
+ setState(prevState => ({
101
+ ...prevState,
102
+ currentTime: stopped ? 0 : currentTime,
103
+ duration
104
+ }));
105
+ }
106
+ });
107
+ const forState = playerService.addStateListener(state => {
108
+ switch (state) {
109
+ case 'preparing':
110
+ setState(prevState => ({
111
+ ...prevState,
112
+ status: 'preparing'
113
+ }));
114
+ break;
115
+ case 'playing':
116
+ setState(prevState => ({
117
+ ...prevState,
118
+ status: 'playing'
119
+ }));
120
+ break;
121
+ case 'idle':
122
+ case 'paused':
123
+ {
124
+ setState(prevState => ({
125
+ ...prevState,
126
+ status: 'paused'
127
+ }));
128
+ break;
129
+ }
130
+ case 'stopped':
131
+ setState(prevState => ({
132
+ ...prevState,
133
+ status: 'paused'
134
+ }));
135
+ break;
136
+ }
137
+ });
138
+ playerUnsubscribes.current.push(forPlayback, forState);
139
+ await playerService.play(message.url);
140
+ if (shouldSeekToTime) {
141
+ await playerService.seek(state.currentTime);
142
+ seekFinished = true;
143
+ }
144
+ }
145
+ }
146
+ },
65
147
  groupedWithPrev: groupWithPrev,
66
148
  groupedWithNext: groupWithNext,
67
149
  children: reactionChildren,
@@ -70,9 +152,10 @@ const GroupChannelMessageRenderer = _ref => {
70
152
  message: message
71
153
  }) : null,
72
154
  parentMessage: shouldRenderParentMessage(message) ? /*#__PURE__*/React.createElement(GroupChannelMessageParentMessage, {
155
+ channel: channel,
156
+ message: message.parentMessage,
73
157
  variant: variant,
74
158
  childMessage: message,
75
- message: message.parentMessage,
76
159
  onPress: onPressParentMessage
77
160
  }) : null,
78
161
  strings: {
@@ -94,7 +177,7 @@ const GroupChannelMessageRenderer = _ref => {
94
177
  },
95
178
  regexTextPatterns: [{
96
179
  regex: mentionManager.templateRegex,
97
- replacer(_ref2) {
180
+ replacer(_ref3) {
98
181
  var _message$mentionedUse;
99
182
  let {
100
183
  match,
@@ -102,7 +185,7 @@ const GroupChannelMessageRenderer = _ref => {
102
185
  parentProps,
103
186
  index,
104
187
  keyPrefix
105
- } = _ref2;
188
+ } = _ref3;
106
189
  const user = (_message$mentionedUse = message.mentionedUsers) === null || _message$mentionedUse === void 0 ? void 0 : _message$mentionedUse.find(it => it.userId === groups[2]);
107
190
  if (user) {
108
191
  const mentionColor = !isMyMessage(message, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) && user.userId === (currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) ? palette.onBackgroundLight01 : parentProps === null || parentProps === void 0 ? void 0 : parentProps.color;
@@ -169,6 +252,18 @@ const GroupChannelMessageRenderer = _ref => {
169
252
  })
170
253
  }, messageProps));
171
254
  }
255
+ case 'file.voice':
256
+ {
257
+ return /*#__PURE__*/React.createElement(GroupChannelMessage.VoiceFile, _extends({
258
+ message: message,
259
+ durationMetaArrayKey: VOICE_MESSAGE_META_ARRAY_DURATION_KEY,
260
+ onUnmount: () => {
261
+ if (isVoiceMessage(message) && playerService.uri === message.url) {
262
+ resetPlayer();
263
+ }
264
+ }
265
+ }, messageProps));
266
+ }
172
267
  case 'unknown':
173
268
  default:
174
269
  {
@@ -203,5 +298,35 @@ const GroupChannelMessageRenderer = _ref => {
203
298
  focused: focused
204
299
  }, renderMessage()));
205
300
  };
301
+ export const GroupChannelTypingIndicatorBubble = () => {
302
+ const {
303
+ sbOptions
304
+ } = useSendbirdChat();
305
+ const {
306
+ publish
307
+ } = useContext(GroupChannelContexts.PubSub);
308
+ const {
309
+ typingUsers
310
+ } = useContext(GroupChannelContexts.TypingIndicator);
311
+ const shouldRenderBubble = useIIFE(() => {
312
+ if (typingUsers.length === 0) return false;
313
+ if (!sbOptions.uikit.groupChannel.channel.enableTypingIndicator) return false;
314
+ if (!sbOptions.uikit.groupChannel.channel.typingIndicatorTypes.has(TypingIndicatorType.Bubble)) return false;
315
+ return true;
316
+ });
317
+ useEffect(() => {
318
+ if (shouldRenderBubble) publish({
319
+ type: 'TYPING_BUBBLE_RENDERED'
320
+ });
321
+ }, [shouldRenderBubble]);
322
+ if (!shouldRenderBubble) return null;
323
+ return /*#__PURE__*/React.createElement(Box, {
324
+ paddingHorizontal: 16,
325
+ marginTop: 4,
326
+ marginBottom: 16
327
+ }, /*#__PURE__*/React.createElement(TypingIndicatorBubble, {
328
+ typingUsers: typingUsers
329
+ }));
330
+ };
206
331
  export default /*#__PURE__*/React.memo(GroupChannelMessageRenderer);
207
332
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","Box","GroupChannelMessage","Text","useUIKitTheme","calcMessageGrouping","getMessageType","isMyMessage","shouldRenderParentMessage","shouldRenderReaction","useIIFE","useLocalization","usePlatformService","useSendbirdChat","SBUUtils","ReactionAddons","GroupChannelMessageDateSeparator","GroupChannelMessageFocusAnimation","GroupChannelMessageOutgoingStatus","GroupChannelMessageParentMessage","GroupChannelMessageRenderer","_ref","channel","message","onPress","onLongPress","onPressParentMessage","onShowUserProfile","enableMessageGrouping","focused","prevMessage","nextMessage","palette","sbOptions","currentUser","mentionManager","STRINGS","mediaService","groupWithPrev","groupWithNext","Boolean","reactionChildren","uikitWithAppInfo","groupChannel","enableReactions","reactions","length","createElement","Message","variant","userId","messageProps","onPressURL","url","openURL","onPressAvatar","sender","onPressMentionedUser","mentionedUser","groupedWithPrev","groupedWithNext","children","sendingStatus","parentMessage","childMessage","strings","edited","GROUP_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","userMessageProps","renderRegexTextChildren","shouldUseMentionedMessageTemplate","uikit","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","_ref2","_message$mentionedUse","match","groups","parentProps","index","keyPrefix","user","mentionedUsers","find","it","mentionColor","onBackgroundLight01","color","_extends","key","_messageProps$onPress","call","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","renderMessage","Admin","ogMetaData","enableOgtag","OpenGraphUser","User","File","ImageFile","VideoFile","fetchThumbnailFromVideoSource","uri","getVideoThumbnail","timeMills","Unknown","messageGap","isAdminMessage","paddingHorizontal","marginBottom","memo"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { GroupChannelMessageProps, RegexTextPattern } from '@sendbird/uikit-react-native-foundation';\nimport { Box, GroupChannelMessage, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdAdminMessage,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n calcMessageGrouping,\n getMessageType,\n isMyMessage,\n shouldRenderParentMessage,\n shouldRenderReaction,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport { ReactionAddons } from '../ReactionAddons';\nimport GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';\nimport GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';\nimport GroupChannelMessageOutgoingStatus from './GroupChannelMessageOutgoingStatus';\nimport GroupChannelMessageParentMessage from './GroupChannelMessageParentMessage';\n\nconst GroupChannelMessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n channel,\n message,\n onPress,\n onLongPress,\n onPressParentMessage,\n onShowUserProfile,\n enableMessageGrouping,\n focused,\n prevMessage,\n nextMessage,\n}) => {\n const { palette } = useUIKitTheme();\n const { sbOptions, currentUser, mentionManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { mediaService } = usePlatformService();\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(enableMessageGrouping),\n message,\n prevMessage,\n nextMessage,\n );\n\n const reactionChildren = useIIFE(() => {\n if (\n shouldRenderReaction(channel, sbOptions.uikitWithAppInfo.groupChannel.channel.enableReactions) &&\n message.reactions &&\n message.reactions.length > 0\n ) {\n return <ReactionAddons.Message channel={channel} message={message} />;\n }\n return null;\n });\n\n const variant = isMyMessage(message, currentUser?.userId) ? 'outgoing' : 'incoming';\n\n const messageProps: Omit<GroupChannelMessageProps<SendbirdMessage>, 'message'> = {\n channel,\n variant,\n onPress,\n onLongPress,\n onPressURL: (url) => SBUUtils.openURL(url),\n onPressAvatar: () => {\n if ('sender' in message) onShowUserProfile?.(message.sender);\n },\n onPressMentionedUser: (mentionedUser) => {\n if (mentionedUser) onShowUserProfile?.(mentionedUser);\n },\n groupedWithPrev: groupWithPrev,\n groupedWithNext: groupWithNext,\n children: reactionChildren,\n sendingStatus: isMyMessage(message, currentUser?.userId) ? (\n <GroupChannelMessageOutgoingStatus channel={channel} message={message} />\n ) : null,\n parentMessage: shouldRenderParentMessage(message) ? (\n <GroupChannelMessageParentMessage\n variant={variant}\n childMessage={message}\n message={message.parentMessage}\n onPress={onPressParentMessage}\n />\n ) : null,\n strings: {\n edited: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX,\n senderName: ('sender' in message && message.sender.nickname) || STRINGS.LABELS.USER_NO_NAME,\n sentDate: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_TIME(message),\n fileName: message.isFileMessage() ? STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message) : '',\n unknownTitle: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_TITLE(message),\n unknownDescription: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_DESC(message),\n },\n };\n\n const userMessageProps: {\n renderRegexTextChildren: (message: SendbirdUserMessage) => string;\n regexTextPatterns: RegexTextPattern[];\n } = {\n renderRegexTextChildren: (message) => {\n if (\n mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)\n ) {\n return message.mentionedMessageTemplate;\n } else {\n return message.message;\n }\n },\n regexTextPatterns: [\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = message.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const mentionColor =\n !isMyMessage(message, currentUser?.userId) && user.userId === currentUser?.userId\n ? palette.onBackgroundLight01\n : parentProps?.color;\n\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n color={mentionColor}\n onPress={() => messageProps.onPressMentionedUser?.(user)}\n onLongPress={messageProps.onLongPress}\n style={[\n parentProps?.style,\n { fontWeight: '700' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n ],\n };\n\n const renderMessage = () => {\n switch (getMessageType(message)) {\n case 'admin': {\n return <GroupChannelMessage.Admin message={message as SendbirdAdminMessage} {...messageProps} />;\n }\n case 'user':\n case 'user.opengraph': {\n if (message.ogMetaData && sbOptions.uikitWithAppInfo.groupChannel.channel.enableOgtag) {\n return (\n <GroupChannelMessage.OpenGraphUser\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n } else {\n return (\n <GroupChannelMessage.User\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n }\n }\n case 'file':\n case 'file.audio': {\n return <GroupChannelMessage.File message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.image': {\n return <GroupChannelMessage.ImageFile message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.video': {\n return (\n <GroupChannelMessage.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 <GroupChannelMessage.Unknown message={message} {...messageProps} />;\n }\n }\n };\n\n const messageGap = useIIFE(() => {\n if (message.isAdminMessage()) {\n if (nextMessage?.isAdminMessage()) {\n return 8;\n } else {\n return 16;\n }\n } else if (nextMessage && shouldRenderParentMessage(nextMessage)) {\n return 16;\n } else if (groupWithNext) {\n return 2;\n } else {\n return 16;\n }\n });\n\n return (\n <Box paddingHorizontal={16} marginBottom={messageGap}>\n <GroupChannelMessageDateSeparator message={message} prevMessage={prevMessage} />\n <GroupChannelMessageFocusAnimation focused={focused}>{renderMessage()}</GroupChannelMessageFocusAnimation>\n </Box>\n );\n};\n\nexport default React.memo(GroupChannelMessageRenderer);\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useContext","useEffect","useRef","Box","GroupChannelMessage","Text","TypingIndicatorBubble","useUIKitTheme","calcMessageGrouping","getMessageType","isMyMessage","isVoiceMessage","shouldRenderParentMessage","shouldRenderReaction","useIIFE","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","GroupChannelContexts","useLocalization","usePlatformService","useSendbirdChat","SBUUtils","TypingIndicatorType","ReactionAddons","GroupChannelMessageDateSeparator","GroupChannelMessageFocusAnimation","GroupChannelMessageOutgoingStatus","GroupChannelMessageParentMessage","GroupChannelMessageRenderer","_ref","channel","message","onPress","onLongPress","onPressParentMessage","onShowUserProfile","enableMessageGrouping","focused","prevMessage","nextMessage","playerUnsubscribes","palette","sbOptions","currentUser","mentionManager","STRINGS","mediaService","playerService","groupWithPrev","groupWithNext","Boolean","reactionChildren","uikitWithAppInfo","groupChannel","enableReactions","reactions","length","createElement","Message","resetPlayer","current","forEach","unsubscribe","reset","variant","userId","messageProps","onPressURL","url","openURL","onPressAvatar","sender","onPressMentionedUser","mentionedUser","onToggleVoiceMessage","state","setState","sendingStatus","uri","pause","play","shouldSeekToTime","duration","currentTime","seekFinished","forPlayback","addPlaybackListener","_ref2","stopped","prevState","forState","addStateListener","status","push","seek","groupedWithPrev","groupedWithNext","children","parentMessage","childMessage","strings","edited","GROUP_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","userMessageProps","renderRegexTextChildren","shouldUseMentionedMessageTemplate","uikit","enableMention","mentionedMessageTemplate","regexTextPatterns","regex","templateRegex","replacer","_ref3","_message$mentionedUse","match","groups","parentProps","index","keyPrefix","user","mentionedUsers","find","it","mentionColor","onBackgroundLight01","color","_extends","key","_messageProps$onPress","call","style","fontWeight","backgroundColor","highlight","asMentionedMessageText","renderMessage","Admin","ogMetaData","enableOgtag","OpenGraphUser","User","File","ImageFile","VideoFile","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","VoiceFile","durationMetaArrayKey","onUnmount","Unknown","messageGap","isAdminMessage","paddingHorizontal","marginBottom","GroupChannelTypingIndicatorBubble","publish","PubSub","typingUsers","TypingIndicator","shouldRenderBubble","enableTypingIndicator","typingIndicatorTypes","has","Bubble","type","marginTop","memo"],"sources":["index.tsx"],"sourcesContent":["import React, { useContext, useEffect, useRef } from 'react';\n\nimport type { GroupChannelMessageProps, RegexTextPattern } from '@sendbird/uikit-react-native-foundation';\nimport {\n Box,\n GroupChannelMessage,\n Text,\n TypingIndicatorBubble,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdAdminMessage,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n calcMessageGrouping,\n getMessageType,\n isMyMessage,\n isVoiceMessage,\n shouldRenderParentMessage,\n shouldRenderReaction,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { VOICE_MESSAGE_META_ARRAY_DURATION_KEY } from '../../constants';\nimport { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport { TypingIndicatorType } from '../../types';\nimport { ReactionAddons } from '../ReactionAddons';\nimport GroupChannelMessageDateSeparator from './GroupChannelMessageDateSeparator';\nimport GroupChannelMessageFocusAnimation from './GroupChannelMessageFocusAnimation';\nimport GroupChannelMessageOutgoingStatus from './GroupChannelMessageOutgoingStatus';\nimport GroupChannelMessageParentMessage from './GroupChannelMessageParentMessage';\n\nconst GroupChannelMessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n channel,\n message,\n onPress,\n onLongPress,\n onPressParentMessage,\n onShowUserProfile,\n enableMessageGrouping,\n focused,\n prevMessage,\n nextMessage,\n}) => {\n const playerUnsubscribes = useRef<(() => void)[]>([]);\n const { palette } = useUIKitTheme();\n const { sbOptions, currentUser, mentionManager } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { mediaService, playerService } = usePlatformService();\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(enableMessageGrouping),\n message,\n prevMessage,\n nextMessage,\n );\n\n const reactionChildren = useIIFE(() => {\n if (\n shouldRenderReaction(channel, sbOptions.uikitWithAppInfo.groupChannel.channel.enableReactions) &&\n message.reactions &&\n message.reactions.length > 0\n ) {\n return <ReactionAddons.Message channel={channel} message={message} />;\n }\n return null;\n });\n\n const resetPlayer = async () => {\n playerUnsubscribes.current.forEach((unsubscribe) => {\n try {\n unsubscribe();\n } catch {}\n });\n playerUnsubscribes.current.length = 0;\n await playerService.reset();\n };\n\n const variant = isMyMessage(message, currentUser?.userId) ? 'outgoing' : 'incoming';\n\n const messageProps: Omit<GroupChannelMessageProps<SendbirdMessage>, 'message'> = {\n channel,\n variant,\n onPress,\n onLongPress,\n onPressURL: (url) => SBUUtils.openURL(url),\n onPressAvatar: () => {\n if ('sender' in message) onShowUserProfile?.(message.sender);\n },\n onPressMentionedUser: (mentionedUser) => {\n if (mentionedUser) onShowUserProfile?.(mentionedUser);\n },\n onToggleVoiceMessage: async (state, setState) => {\n if (isVoiceMessage(message) && message.sendingStatus === 'succeeded') {\n if (playerService.uri === message.url) {\n if (playerService.state === 'playing') {\n await playerService.pause();\n } else {\n await playerService.play(message.url);\n }\n } else {\n if (playerService.state !== 'idle') {\n await resetPlayer();\n }\n\n const shouldSeekToTime = state.duration > state.currentTime && state.currentTime > 0;\n let seekFinished = !shouldSeekToTime;\n\n const forPlayback = playerService.addPlaybackListener(({ stopped, currentTime, duration }) => {\n if (seekFinished) {\n setState((prevState) => ({ ...prevState, currentTime: stopped ? 0 : currentTime, duration }));\n }\n });\n const forState = playerService.addStateListener((state) => {\n switch (state) {\n case 'preparing':\n setState((prevState) => ({ ...prevState, status: 'preparing' }));\n break;\n case 'playing':\n setState((prevState) => ({ ...prevState, status: 'playing' }));\n break;\n case 'idle':\n case 'paused': {\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n case 'stopped':\n setState((prevState) => ({ ...prevState, status: 'paused' }));\n break;\n }\n });\n playerUnsubscribes.current.push(forPlayback, forState);\n\n await playerService.play(message.url);\n if (shouldSeekToTime) {\n await playerService.seek(state.currentTime);\n seekFinished = true;\n }\n }\n }\n },\n groupedWithPrev: groupWithPrev,\n groupedWithNext: groupWithNext,\n children: reactionChildren,\n sendingStatus: isMyMessage(message, currentUser?.userId) ? (\n <GroupChannelMessageOutgoingStatus channel={channel} message={message} />\n ) : null,\n parentMessage: shouldRenderParentMessage(message) ? (\n <GroupChannelMessageParentMessage\n channel={channel}\n message={message.parentMessage}\n variant={variant}\n childMessage={message}\n onPress={onPressParentMessage}\n />\n ) : null,\n strings: {\n edited: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_EDITED_POSTFIX,\n senderName: ('sender' in message && message.sender.nickname) || STRINGS.LABELS.USER_NO_NAME,\n sentDate: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_TIME(message),\n fileName: message.isFileMessage() ? STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_FILE_TITLE(message) : '',\n unknownTitle: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_TITLE(message),\n unknownDescription: STRINGS.GROUP_CHANNEL.MESSAGE_BUBBLE_UNKNOWN_DESC(message),\n },\n };\n\n const userMessageProps: {\n renderRegexTextChildren: (message: SendbirdUserMessage) => string;\n regexTextPatterns: RegexTextPattern[];\n } = {\n renderRegexTextChildren: (message) => {\n if (\n mentionManager.shouldUseMentionedMessageTemplate(message, sbOptions.uikit.groupChannel.channel.enableMention)\n ) {\n return message.mentionedMessageTemplate;\n } else {\n return message.message;\n }\n },\n regexTextPatterns: [\n {\n regex: mentionManager.templateRegex,\n replacer({ match, groups, parentProps, index, keyPrefix }) {\n const user = message.mentionedUsers?.find((it) => it.userId === groups[2]);\n if (user) {\n const mentionColor =\n !isMyMessage(message, currentUser?.userId) && user.userId === currentUser?.userId\n ? palette.onBackgroundLight01\n : parentProps?.color;\n\n return (\n <Text\n {...parentProps}\n key={`${keyPrefix}-${index}`}\n color={mentionColor}\n onPress={() => messageProps.onPressMentionedUser?.(user)}\n onLongPress={messageProps.onLongPress}\n style={[\n parentProps?.style,\n { fontWeight: '700' },\n user.userId === currentUser?.userId && { backgroundColor: palette.highlight },\n ]}\n >\n {`${mentionManager.asMentionedMessageText(user)}`}\n </Text>\n );\n }\n return match;\n },\n },\n ],\n };\n\n const renderMessage = () => {\n switch (getMessageType(message)) {\n case 'admin': {\n return <GroupChannelMessage.Admin message={message as SendbirdAdminMessage} {...messageProps} />;\n }\n case 'user':\n case 'user.opengraph': {\n if (message.ogMetaData && sbOptions.uikitWithAppInfo.groupChannel.channel.enableOgtag) {\n return (\n <GroupChannelMessage.OpenGraphUser\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n } else {\n return (\n <GroupChannelMessage.User\n message={message as SendbirdUserMessage}\n {...userMessageProps}\n {...messageProps}\n />\n );\n }\n }\n case 'file':\n case 'file.audio': {\n return <GroupChannelMessage.File message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.image': {\n return <GroupChannelMessage.ImageFile message={message as SendbirdFileMessage} {...messageProps} />;\n }\n case 'file.video': {\n return (\n <GroupChannelMessage.VideoFile\n message={message as SendbirdFileMessage}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n {...messageProps}\n />\n );\n }\n case 'file.voice': {\n return (\n <GroupChannelMessage.VoiceFile\n message={message as SendbirdFileMessage}\n durationMetaArrayKey={VOICE_MESSAGE_META_ARRAY_DURATION_KEY}\n onUnmount={() => {\n if (isVoiceMessage(message) && playerService.uri === message.url) {\n resetPlayer();\n }\n }}\n {...messageProps}\n />\n );\n }\n case 'unknown':\n default: {\n return <GroupChannelMessage.Unknown message={message} {...messageProps} />;\n }\n }\n };\n\n const messageGap = useIIFE(() => {\n if (message.isAdminMessage()) {\n if (nextMessage?.isAdminMessage()) {\n return 8;\n } else {\n return 16;\n }\n } else if (nextMessage && shouldRenderParentMessage(nextMessage)) {\n return 16;\n } else if (groupWithNext) {\n return 2;\n } else {\n return 16;\n }\n });\n\n return (\n <Box paddingHorizontal={16} marginBottom={messageGap}>\n <GroupChannelMessageDateSeparator message={message} prevMessage={prevMessage} />\n <GroupChannelMessageFocusAnimation focused={focused}>{renderMessage()}</GroupChannelMessageFocusAnimation>\n </Box>\n );\n};\n\nexport const GroupChannelTypingIndicatorBubble = () => {\n const { sbOptions } = useSendbirdChat();\n const { publish } = useContext(GroupChannelContexts.PubSub);\n const { typingUsers } = useContext(GroupChannelContexts.TypingIndicator);\n\n const shouldRenderBubble = useIIFE(() => {\n if (typingUsers.length === 0) return false;\n if (!sbOptions.uikit.groupChannel.channel.enableTypingIndicator) return false;\n if (!sbOptions.uikit.groupChannel.channel.typingIndicatorTypes.has(TypingIndicatorType.Bubble)) return false;\n return true;\n });\n\n useEffect(() => {\n if (shouldRenderBubble) publish({ type: 'TYPING_BUBBLE_RENDERED' });\n }, [shouldRenderBubble]);\n\n if (!shouldRenderBubble) return null;\n return (\n <Box paddingHorizontal={16} marginTop={4} marginBottom={16}>\n <TypingIndicatorBubble typingUsers={typingUsers} />\n </Box>\n );\n};\n\nexport default React.memo(GroupChannelMessageRenderer);\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { Avatar, Box, Icon, PressBox, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
3
- import { getFileIconFromMessage, useIIFE } from '@sendbird/uikit-utils';
3
+ import { getFileIconFromMessage, isVoiceMessage, useIIFE } from '@sendbird/uikit-utils';
4
4
  import { useLocalization } from '../hooks/useContext';
5
5
  const MessageSearchResultItem = _ref => {
6
6
  let {
@@ -17,6 +17,7 @@ const MessageSearchResultItem = _ref => {
17
17
  } = useLocalization();
18
18
  const fileIcon = useIIFE(() => {
19
19
  if (!(message !== null && message !== void 0 && message.isFileMessage())) return undefined;
20
+ if (isVoiceMessage(message)) return undefined;
20
21
  return getFileIconFromMessage(message);
21
22
  });
22
23
  return /*#__PURE__*/React.createElement(PressBox, {
@@ -1 +1 @@
1
- {"version":3,"names":["React","Avatar","Box","Icon","PressBox","Text","createStyleSheet","useUIKitTheme","getFileIconFromMessage","useIIFE","useLocalization","MessageSearchResultItem","_ref","onPress","message","colors","select","palette","STRINGS","fileIcon","isFileMessage","undefined","createElement","style","styles","container","size","avatarSize","width","uri","getSenderProfile","containerStyle","avatar","flex","paddingRight","titleLine","marginRight","justifyContent","subtitle2","color","onBackground01","numberOfLines","MESSAGE_SEARCH","SEARCH_RESULT_ITEM_TITLE","paddingTop","caption2","onBackground02","SEARCH_RESULT_ITEM_TITLE_CAPTION","alignItems","flexDirection","icon","bodyIcon","backgroundColor","light","background100","dark","background500","body3","ellipsizeMode","bodyText","onBackground03","SEARCH_RESULT_ITEM_BODY","separator","onBackground04","isUserMessage","sender","profileUrl","height","marginHorizontal","marginTop","marginBottom","borderRadius","lineHeight","position","left","right","bottom"],"sources":["MessageSearchResultItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport {\n Avatar,\n Box,\n Icon,\n PressBox,\n Text,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdBaseMessage } from '@sendbird/uikit-utils';\nimport { getFileIconFromMessage, useIIFE } from '@sendbird/uikit-utils';\n\nimport type { MessageSearchProps } from '../domain/messageSearch/types';\nimport { useLocalization } from '../hooks/useContext';\n\nconst MessageSearchResultItem: MessageSearchProps['List']['renderSearchResultItem'] = ({ onPress, message }) => {\n const { colors, select, palette } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n\n const fileIcon = useIIFE(() => {\n if (!message?.isFileMessage()) return undefined;\n return getFileIconFromMessage(message);\n });\n\n return (\n <PressBox onPress={onPress}>\n <Box style={styles.container}>\n <Avatar size={styles.avatarSize.width} uri={getSenderProfile(message)} containerStyle={styles.avatar} />\n\n <Box flex={1} paddingRight={16}>\n <Box style={styles.titleLine}>\n <Box flex={1} marginRight={4} justifyContent={'center'}>\n <Text subtitle2 color={colors.onBackground01} numberOfLines={1}>\n {STRINGS.MESSAGE_SEARCH.SEARCH_RESULT_ITEM_TITLE(message)}\n </Text>\n </Box>\n <Box paddingTop={2}>\n <Text caption2 color={colors.onBackground02}>\n {STRINGS.MESSAGE_SEARCH.SEARCH_RESULT_ITEM_TITLE_CAPTION(message)}\n </Text>\n </Box>\n </Box>\n\n <Box flex={1}>\n <Box alignItems={'center'} flexDirection={'row'}>\n {fileIcon && (\n <Icon\n icon={fileIcon}\n size={18}\n color={colors.onBackground02}\n containerStyle={[\n styles.bodyIcon,\n { backgroundColor: select({ light: palette.background100, dark: palette.background500 }) },\n ]}\n />\n )}\n\n <Text\n body3\n numberOfLines={fileIcon ? 1 : 2}\n ellipsizeMode={fileIcon ? 'middle' : 'tail'}\n style={styles.bodyText}\n color={colors.onBackground03}\n >\n {STRINGS.MESSAGE_SEARCH.SEARCH_RESULT_ITEM_BODY(message)}\n </Text>\n </Box>\n </Box>\n\n <Box style={styles.separator} backgroundColor={colors.onBackground04} />\n </Box>\n </Box>\n </PressBox>\n );\n};\n\nfunction getSenderProfile(message: SendbirdBaseMessage) {\n if (message.isUserMessage() || message.isFileMessage()) {\n return message.sender.profileUrl;\n } else {\n return undefined;\n }\n}\n\nconst styles = createStyleSheet({\n container: {\n height: 76,\n width: '100%',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n avatar: {\n marginHorizontal: 16,\n },\n avatarSize: {\n width: 56,\n },\n titleLine: {\n flexDirection: 'row',\n marginTop: 10,\n marginBottom: 4,\n },\n bodyIcon: {\n borderRadius: 8,\n width: 26,\n height: 26,\n marginRight: 4,\n },\n bodyText: {\n flex: 1,\n lineHeight: 16,\n },\n separator: {\n position: 'absolute',\n left: 0,\n right: -16,\n bottom: 0,\n height: 1,\n },\n});\n\nexport default MessageSearchResultItem;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","Avatar","Box","Icon","PressBox","Text","createStyleSheet","useUIKitTheme","getFileIconFromMessage","isVoiceMessage","useIIFE","useLocalization","MessageSearchResultItem","_ref","onPress","message","colors","select","palette","STRINGS","fileIcon","isFileMessage","undefined","createElement","style","styles","container","size","avatarSize","width","uri","getSenderProfile","containerStyle","avatar","flex","paddingRight","titleLine","marginRight","justifyContent","subtitle2","color","onBackground01","numberOfLines","MESSAGE_SEARCH","SEARCH_RESULT_ITEM_TITLE","paddingTop","caption2","onBackground02","SEARCH_RESULT_ITEM_TITLE_CAPTION","alignItems","flexDirection","icon","bodyIcon","backgroundColor","light","background100","dark","background500","body3","ellipsizeMode","bodyText","onBackground03","SEARCH_RESULT_ITEM_BODY","separator","onBackground04","isUserMessage","sender","profileUrl","height","marginHorizontal","marginTop","marginBottom","borderRadius","lineHeight","position","left","right","bottom"],"sources":["MessageSearchResultItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport {\n Avatar,\n Box,\n Icon,\n PressBox,\n Text,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdBaseMessage } from '@sendbird/uikit-utils';\nimport { getFileIconFromMessage, isVoiceMessage, useIIFE } from '@sendbird/uikit-utils';\n\nimport type { MessageSearchProps } from '../domain/messageSearch/types';\nimport { useLocalization } from '../hooks/useContext';\n\nconst MessageSearchResultItem: MessageSearchProps['List']['renderSearchResultItem'] = ({ onPress, message }) => {\n const { colors, select, palette } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n\n const fileIcon = useIIFE(() => {\n if (!message?.isFileMessage()) return undefined;\n if (isVoiceMessage(message)) return undefined;\n return getFileIconFromMessage(message);\n });\n\n return (\n <PressBox onPress={onPress}>\n <Box style={styles.container}>\n <Avatar size={styles.avatarSize.width} uri={getSenderProfile(message)} containerStyle={styles.avatar} />\n\n <Box flex={1} paddingRight={16}>\n <Box style={styles.titleLine}>\n <Box flex={1} marginRight={4} justifyContent={'center'}>\n <Text subtitle2 color={colors.onBackground01} numberOfLines={1}>\n {STRINGS.MESSAGE_SEARCH.SEARCH_RESULT_ITEM_TITLE(message)}\n </Text>\n </Box>\n <Box paddingTop={2}>\n <Text caption2 color={colors.onBackground02}>\n {STRINGS.MESSAGE_SEARCH.SEARCH_RESULT_ITEM_TITLE_CAPTION(message)}\n </Text>\n </Box>\n </Box>\n\n <Box flex={1}>\n <Box alignItems={'center'} flexDirection={'row'}>\n {fileIcon && (\n <Icon\n icon={fileIcon}\n size={18}\n color={colors.onBackground02}\n containerStyle={[\n styles.bodyIcon,\n { backgroundColor: select({ light: palette.background100, dark: palette.background500 }) },\n ]}\n />\n )}\n\n <Text\n body3\n numberOfLines={fileIcon ? 1 : 2}\n ellipsizeMode={fileIcon ? 'middle' : 'tail'}\n style={styles.bodyText}\n color={colors.onBackground03}\n >\n {STRINGS.MESSAGE_SEARCH.SEARCH_RESULT_ITEM_BODY(message)}\n </Text>\n </Box>\n </Box>\n\n <Box style={styles.separator} backgroundColor={colors.onBackground04} />\n </Box>\n </Box>\n </PressBox>\n );\n};\n\nfunction getSenderProfile(message: SendbirdBaseMessage) {\n if (message.isUserMessage() || message.isFileMessage()) {\n return message.sender.profileUrl;\n } else {\n return undefined;\n }\n}\n\nconst styles = createStyleSheet({\n container: {\n height: 76,\n width: '100%',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n avatar: {\n marginHorizontal: 16,\n },\n avatarSize: {\n width: 56,\n },\n titleLine: {\n flexDirection: 'row',\n marginTop: 10,\n marginBottom: 4,\n },\n bodyIcon: {\n borderRadius: 8,\n width: 26,\n height: 26,\n marginRight: 4,\n },\n bodyText: {\n flex: 1,\n lineHeight: 16,\n },\n separator: {\n position: 'absolute',\n left: 0,\n right: -16,\n bottom: 0,\n height: 1,\n },\n});\n\nexport default MessageSearchResultItem;\n"],"mappings":"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"}
@@ -73,6 +73,7 @@ const OpenChannelMessageRenderer = _ref => {
73
73
  }
74
74
  }
75
75
  case 'file':
76
+ case 'file.voice':
76
77
  case 'file.audio':
77
78
  {
78
79
  return /*#__PURE__*/React.createElement(OpenChannelMessage.File, _extends({
@@ -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":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAGzB,SAASC,GAAG,EAAEC,kBAAkB,QAAQ,yCAAyC;AACjF,SAKEC,mBAAmB,EACnBC,cAAc,QACT,uBAAuB;AAG9B,SAASC,eAAe,EAAEC,kBAAkB,EAAEC,eAAe,QAAQ,wBAAwB;AAC7F,OAAOC,QAAQ,MAAM,qBAAqB;AAC1C,OAAOC,+BAA+B,MAAM,mCAAmC;AAE/E,MAAMC,0BAAyE,GAAGC,IAAA,IAS5E;EAAA,IAT6E;IACjFC,OAAO;IACPC,OAAO;IACPC,OAAO;IACPC,WAAW;IACXC,iBAAiB;IACjBC,qBAAqB;IACrBC,WAAW;IACXC;EACF,CAAC,GAAAR,IAAA;EACC,MAAM;IAAES;EAAU,CAAC,GAAGb,eAAe,EAAE;EACvC,MAAM;IAAEc;EAAQ,CAAC,GAAGhB,eAAe,EAAE;EACrC,MAAM;IAAEiB;EAAa,CAAC,GAAGhB,kBAAkB,EAAE;EAC7C,MAAM;IAAEiB;EAAc,CAAC,GAAGpB,mBAAmB,CAACqB,OAAO,CAACP,qBAAqB,CAAC,EAAEJ,OAAO,EAAEK,WAAW,EAAEC,WAAW,CAAC;EAEhH,MAAMM,YAAuE,GAAG;IAC9Eb,OAAO;IACPE,OAAO;IACPC,WAAW;IACXW,UAAU,EAAGC,GAAG,IAAKnB,QAAQ,CAACoB,OAAO,CAACD,GAAG,CAAC;IAC1CE,aAAa,EAAEA,CAAA,KAAM,QAAQ,IAAIhB,OAAO,KAAIG,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAGH,OAAO,CAACiB,MAAM,EAAE;MAAEC,iBAAiB,EAAE;IAAK,CAAC,CAAC;IAC5GC,OAAO,EAAET,aAAa;IACtBU,OAAO,EAAE;MACPC,MAAM,EAAEb,OAAO,CAACc,YAAY,CAACC,6BAA6B;MAC1DC,UAAU,EAAG,QAAQ,IAAIxB,OAAO,IAAIA,OAAO,CAACiB,MAAM,CAACQ,QAAQ,IAAKjB,OAAO,CAACkB,MAAM,CAACC,YAAY;MAC3FC,QAAQ,EAAEpB,OAAO,CAACc,YAAY,CAACO,mBAAmB,CAAC7B,OAAO,CAAC;MAC3D8B,QAAQ,EAAE9B,OAAO,CAAC+B,aAAa,EAAE,GAAGvB,OAAO,CAACc,YAAY,CAACU,yBAAyB,CAAChC,OAAO,CAAC,GAAG,EAAE;MAChGiC,YAAY,EAAEzB,OAAO,CAACc,YAAY,CAACY,4BAA4B,CAAClC,OAAO,CAAC;MACxEmC,kBAAkB,EAAE3B,OAAO,CAACc,YAAY,CAACc,2BAA2B,CAACpC,OAAO;IAC9E;EACF,CAAC;EACD,MAAMqC,aAAa,GAAGA,CAAA,KAAM;IAC1B,QAAQ9C,cAAc,CAACS,OAAO,CAAC;MAC7B,KAAK,OAAO;QAAE;UACZ,oBAAOb,KAAA,CAAAmD,aAAA,CAACjD,kBAAkB,CAACkD,KAAK,EAAAC,QAAA;YAACxC,OAAO,EAAEA;UAAgC,GAAKY,YAAY,EAAI;QACjG;MACA,KAAK,MAAM;QAAE;UACX,oBAAOzB,KAAA,CAAAmD,aAAA,CAACjD,kBAAkB,CAACoD,IAAI,EAAAD,QAAA;YAACxC,OAAO,EAAEA;UAA+B,GAAKY,YAAY,EAAI;QAC/F;MACA,KAAK,gBAAgB;QAAE;UACrB,IAAIL,SAAS,CAACmC,gBAAgB,CAACC,WAAW,CAAC5C,OAAO,CAAC6C,WAAW,EAAE;YAC9D,oBAAOzD,KAAA,CAAAmD,aAAA,CAACjD,kBAAkB,CAACwD,aAAa,EAAAL,QAAA;cAACxC,OAAO,EAAEA;YAA+B,GAAKY,YAAY,EAAI;UACxG,CAAC,MAAM;YACL,oBAAOzB,KAAA,CAAAmD,aAAA,CAACjD,kBAAkB,CAACoD,IAAI,EAAAD,QAAA;cAACxC,OAAO,EAAEA;YAA+B,GAAKY,YAAY,EAAI;UAC/F;QACF;MACA,KAAK,MAAM;MACX,KAAK,YAAY;MACjB,KAAK,YAAY;QAAE;UACjB,oBAAOzB,KAAA,CAAAmD,aAAA,CAACjD,kBAAkB,CAACyD,IAAI,EAAAN,QAAA;YAACxC,OAAO,EAAEA;UAA+B,GAAKY,YAAY,EAAI;QAC/F;MACA,KAAK,YAAY;QAAE;UACjB,oBAAOzB,KAAA,CAAAmD,aAAA,CAACjD,kBAAkB,CAAC0D,SAAS,EAAAP,QAAA;YAACxC,OAAO,EAAEA;UAA+B,GAAKY,YAAY,EAAI;QACpG;MACA,KAAK,YAAY;QAAE;UACjB,oBACEzB,KAAA,CAAAmD,aAAA,CAACjD,kBAAkB,CAAC2D,SAAS,EAAAR,QAAA;YAC3BxC,OAAO,EAAEA,OAA+B;YACxCiD,6BAA6B,EAAGC,GAAG,IAAKzC,YAAY,CAAC0C,iBAAiB,CAAC;cAAErC,GAAG,EAAEoC,GAAG;cAAEE,SAAS,EAAE;YAAK,CAAC;UAAE,GAClGxC,YAAY,EAChB;QAEN;MACA,KAAK,SAAS;MACd;QAAS;UACP,oBAAOzB,KAAA,CAAAmD,aAAA,CAACjD,kBAAkB,CAACgE,OAAO,EAAAb,QAAA;YAACxC,OAAO,EAAEA;UAAQ,GAAKY,YAAY,EAAI;QAC3E;IAAC;EAEL,CAAC;EAED,oBACEzB,KAAA,CAAAmD,aAAA,CAAClD,GAAG,qBACFD,KAAA,CAAAmD,aAAA,CAAC1C,+BAA+B;IAACI,OAAO,EAAEA,OAAQ;IAACK,WAAW,EAAEA;EAAY,EAAG,EAC9EgC,aAAa,EAAE,CACZ;AAEV,CAAC;AAED,4BAAelD,KAAK,CAACmE,IAAI,CAACzD,0BAA0B,CAAC"}
@@ -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":"AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC1D,SAASC,QAAQ,EAAEC,MAAM,EAAEC,SAAS,EAAEC,UAAU,EAAEC,IAAI,EAAEC,mBAAmB,QAAQ,cAAc;AACjG,SAASC,iBAAiB,QAAQ,gCAAgC;AAElE,SACEC,MAAM,EACNC,OAAO,EACPC,KAAK,EACLC,KAAK,EACLC,IAAI,EACJC,gBAAgB,EAChBC,aAAa,QACR,yCAAyC;AAChD,SAA2BC,gBAAgB,EAAEC,cAAc,QAAQ,uBAAuB;AAI1F,MAAMC,2BAA2B,GAAGC,IAAA,IAQJ;EAAA,IARK;IACnCC,OAAO;IACPC,OAAO;IACPC,SAAS;IACTC,WAAW;IACXC,OAAO;IACPC,eAAe;IACfC;EACwB,CAAC,GAAAP,IAAA;EACzB,MAAM;IAAEQ;EAAM,CAAC,GAAGpB,mBAAmB,EAAE;EACvC,MAAM;IAAEqB,MAAM;IAAEC,IAAI;IAAEC;EAAM,CAAC,GAAGtB,iBAAiB,EAAE;EACnD,MAAM;IAAEuB;EAAO,CAAC,GAAGhB,aAAa,EAAE;EAElC,MAAM,CAACiB,QAAQ,EAAEC,WAAW,CAAC,GAAGhC,QAAQ,CAAC,CAAC,CAAC;EAC3C,MAAMiC,SAAS,GAAGlC,MAAM,EAAc;EACtC,MAAMmC,iBAAiB,GAAGnC,MAAM,CAAsC,EAAE,CAAC;EACzE,MAAMoC,oBAAoB,GAAGpC,MAAM,CAAC;IAAEqC,CAAC,EAAE,IAAInC,QAAQ,CAACoC,KAAK,CAAC,CAAC,CAAC;IAAEX,KAAK,EAAE,IAAIzB,QAAQ,CAACoC,KAAK,CAAC,CAAC;EAAE,CAAC,CAAC,CAACC,OAAO;EACvG,MAAMC,2BAA2B,GAAGxC,MAAM,CAAC,KAAK,CAAC;EAEjD,MAAM;IAAEyC;EAAa,CAAC,GAAGjB,OAAO;EAChC,MAAM;IAAEkB,OAAO;IAAEC,OAAO;IAAEC;EAAW,CAAC,GAAGrB,WAAW;EACpD,MAAM;IAAEsB;EAAQ,CAAC,GAAGpB,eAAe;EAEnC,MAAMqB,KAAK,GAAGf,MAAM,CAACgB,EAAE,CAACC,QAAQ,CAACC,OAAO;EACxC,MAAMC,SAAS,GAAG,CAAAP,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEO,SAAS,KAAI,EAAE;EAC1C,MAAMC,eAAe,GAAGD,SAAS,CAAClB,QAAQ,CAAiC;EAC3E,MAAMoB,iBAAiB,GAAG;IACxBC,WAAW,EAAExB,IAAI,GAAGyB,MAAM,CAACC,MAAM,CAACC,iBAAiB;IACnDC,YAAY,EAAE3B,KAAK,GAAGwB,MAAM,CAACC,MAAM,CAACC;EACtC,CAAC;EAED,MAAME,QAAQ,GAAG,SAAAA,CAACC,KAAa,EAAsB;IAAA,IAApBC,QAAQ,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;IAC9C,MAAMG,cAAc,GAAG7B,iBAAiB,CAACI,OAAO,CAACoB,KAAK,CAAC;IACvD,IAAIK,cAAc,EAAE;MAAA,IAAAC,kBAAA;MAClBhC,WAAW,CAAC0B,KAAK,CAAC;MAClBO,mBAAmB,CAACF,cAAc,CAAC3B,CAAC,EAAE2B,cAAc,CAACrC,KAAK,EAAEiC,QAAQ,CAAC;MACrE,CAAAK,kBAAA,GAAA/B,SAAS,CAACK,OAAO,cAAA0B,kBAAA,uBAAjBA,kBAAA,CAAmBE,QAAQ,CAAC;QAAE9B,CAAC,EAAE2B,cAAc,CAAC3B,CAAC;QAAEuB;MAAS,CAAC,CAAC;IAChE;EACF,CAAC;EAED,MAAMM,mBAAmB,GAAG,SAAAA,CAAC7B,CAAS,EAAEV,KAAa,EAAsB;IAAA,IAApBiC,QAAQ,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;IACpE,MAAMO,UAAU,GAAG;MAAEC,QAAQ,EAAET,QAAQ,GAAG,GAAG,GAAG,CAAC;MAAEU,MAAM,EAAEnE,MAAM,CAACoE,KAAK,CAACpE,MAAM,CAACqE,IAAI,CAAC;MAAEC,eAAe,EAAE;IAAM,CAAC;IAC9GvE,QAAQ,CAACwE,QAAQ,CAAC,CAChBxE,QAAQ,CAACyE,MAAM,CAACvC,oBAAoB,CAACC,CAAC,EAAE;MAAEuC,OAAO,EAAEvC,CAAC;MAAE,GAAG+B;IAAW,CAAC,CAAC,EACtElE,QAAQ,CAACyE,MAAM,CAACvC,oBAAoB,CAACT,KAAK,EAAE;MAAEiD,OAAO,EAAEjD,KAAK;MAAE,GAAGyC;IAAW,CAAC,CAAC,CAC/E,CAAC,CAACS,KAAK,EAAE;EACZ,CAAC;EAED,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;IAC7B,OAAO3C,iBAAiB,CAACI,OAAO,CAACuB,MAAM,KAAKZ,SAAS,CAACY,MAAM,IAAI3B,iBAAiB,CAACI,OAAO,CAACwC,KAAK,CAACC,OAAO,CAAC;EAC1G,CAAC;EAEDjF,SAAS,CAAC,MAAM;IACd,IAAI,CAACqB,OAAO,EAAE;MACZe,iBAAiB,CAACI,OAAO,GAAG,EAAE;MAC9BH,oBAAoB,CAACC,CAAC,GAAG,IAAInC,QAAQ,CAACoC,KAAK,CAAC,CAAC,CAAC;MAC9CF,oBAAoB,CAACT,KAAK,GAAG,IAAIzB,QAAQ,CAACoC,KAAK,CAAC,CAAC,CAAC;MAClDE,2BAA2B,CAACD,OAAO,GAAG,KAAK;IAC7C;EACF,CAAC,EAAE,CAACnB,OAAO,CAAC,CAAC;EAEb,MAAM6D,UAAU,GAAGA,CAAA,KAAM;IACvB,oBACEnF,KAAA,CAAAoF,aAAA,CAAC9E,SAAS;MAAC+E,KAAK,EAAE7B,MAAM,CAAC8B;IAAY,GAClClC,SAAS,CAACmC,GAAG,CAAC,CAACrC,QAAQ,EAAEW,KAAK,KAAK;MAClC,MAAM2B,SAAS,GAAG,CAAAnC,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAEoC,GAAG,MAAKvC,QAAQ,CAACuC,GAAG;MACvD,MAAMC,UAAU,GAAGtC,SAAS,CAACY,MAAM,GAAG,CAAC,KAAKH,KAAK;MACjD,MAAM8B,KAAK,GAAGhD,YAAY,CAACiD,WAAW,CAAC1C,QAAQ,CAACuC,GAAG,CAAC;MAEpD,oBACEzF,KAAA,CAAAoF,aAAA,CAAC9E,SAAS;QACRmF,GAAG,EAAEvC,QAAQ,CAACuC,GAAI;QAClBJ,KAAK,EAAE,CAAC7B,MAAM,CAACqC,OAAO,EAAEH,UAAU,IAAI;UAAEI,WAAW,EAAEtC,MAAM,CAACC,MAAM,CAACqC;QAAY,CAAC,CAAE;QAClFC,OAAO,EAAEA,CAAA,KAAMnC,QAAQ,CAACC,KAAK,CAAE;QAC/BmC,QAAQ,EAAGC,CAAC,IAAK;UACf5D,iBAAiB,CAACI,OAAO,CAACoB,KAAK,CAAC,GAAGoC,CAAC,CAACC,WAAW,CAACzC,MAAM;UACvD,IAAIuB,gBAAgB,EAAE,EAAE;YACtB,IAAItC,2BAA2B,CAACD,OAAO,EAAE;cACvCmB,QAAQ,CAAC1B,QAAQ,EAAE,KAAK,CAAC;YAC3B,CAAC,MAAM;cACLQ,2BAA2B,CAACD,OAAO,GAAG,IAAI;cAC1CmB,QAAQ,CAACd,UAAU,CAAC;YACtB;UACF;QACF;MAAE,gBAEF9C,KAAA,CAAAoF,aAAA,CAACvE,KAAK;QAACsF,MAAM,EAAE;UAAEC,GAAG,EAAET,KAAK,CAACU;QAAI,CAAE;QAAChB,KAAK,EAAE7B,MAAM,CAAC8C;MAAS,EAAG,eAC7DtG,KAAA,CAAAoF,aAAA,CAACrE,IAAI;QAACwF,MAAM;QAACvD,KAAK,EAAEwC,SAAS,GAAGxC,KAAK,CAACwD,QAAQ,CAACC,SAAS,GAAGzD,KAAK,CAAC0D,OAAO,CAACD;MAAU,GAChFtF,cAAc,CAACD,gBAAgB,CAACgC,QAAQ,CAAC,CAAC,CACtC,CACG;IAEhB,CAAC,CAAC,eACFlD,KAAA,CAAAoF,aAAA,CAAChF,QAAQ,CAACI,IAAI;MACZ6E,KAAK,EAAE,CACL7B,MAAM,CAACmD,YAAY,EACnB;QACE5E,IAAI,EAAEO,oBAAoB,CAACC,CAAC;QAC5BV,KAAK,EAAES,oBAAoB,CAACT,KAAK;QACjC+E,eAAe,EAAE5D,KAAK,CAACwD,QAAQ,CAACC;MAClC,CAAC;IACD,EACF,CACQ;EAEhB,CAAC;EAED,MAAMI,UAAU,GAAGA,CAAA,KAAM;IACvB,oBACE7G,KAAA,CAAAoF,aAAA,CAAApF,KAAA,CAAA8G,QAAA,QACGzD,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAE0D,OAAO,CAACxB,GAAG,CAAEyB,MAAM,IAAK;MACxC,IAAIpE,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEqE,cAAc,EAAE,EAAE;QAC7B,MAAMC,IAAI,GAAGtE,OAAO,CAACuE,OAAO,CAACC,IAAI,CAAE7E,CAAC,IAAKA,CAAC,CAACyE,MAAM,KAAKA,MAAM,CAAC;QAC7D,oBACEhH,KAAA,CAAAoF,aAAA,CAAC9E,SAAS;UACRmF,GAAG,EAAEuB,MAAO;UACZjB,OAAO,EAAE,MAAAA,CAAA,KAAY;YACnB,IAAImB,IAAI,EAAE;cACR,MAAM3F,OAAO,EAAE;cACfK,kBAAkB,CAACsF,IAAI,CAAC;YAC1B;UACF,CAAE;UACF7B,KAAK,EAAE7B,MAAM,CAAC6D;QAAS,gBAEvBrH,KAAA,CAAAoF,aAAA,CAACzE,MAAM;UAAC2G,IAAI,EAAE,EAAG;UAAClB,GAAG,EAAEc,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEK,UAAW;UAACC,cAAc,EAAEhE,MAAM,CAACiE;QAAO,EAAG,eAC1EzH,KAAA,CAAAoF,aAAA,CAACrE,IAAI;UAAC2G,SAAS;UAACrC,KAAK,EAAE;YAAEsC,IAAI,EAAE;UAAE;QAAE,GAChC,CAAAT,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEU,QAAQ,KAAI7E,OAAO,CAAC8E,MAAM,CAACC,YAAY,CACzC,CACG;MAEhB;MACA,OAAO,IAAI;IACb,CAAC,CAAC,CACD;EAEP,CAAC;EAED,oBACE9H,KAAA,CAAAoF,aAAA,CAACtE,KAAK;IACJiH,IAAI,EAAE,kBAAmB;IACzBzG,OAAO,EAAE4D,OAAO,CAAC5D,OAAO,IAAIsB,OAAO,IAAIC,OAAO,CAAE;IAChDtB,OAAO,EAAEA,OAAQ;IACjBC,SAAS,EAAEA,SAAU;IACrBwG,eAAe,EAAExE,MAAM,CAACyE;EAAM,gBAE9BjI,KAAA,CAAAoF,aAAA,CAAC5E,IAAI;IACH6E,KAAK,EAAE,CACL7B,MAAM,CAAC0E,SAAS,EAChB;MAAErG,KAAK;MAAEsG,aAAa,EAAErG,MAAM;MAAE8E,eAAe,EAAE3E,MAAM,CAACgB,EAAE,CAACmF,MAAM,CAACjF,OAAO,CAACkF,IAAI,CAACC;IAAW,CAAC;EAC3F,gBAEFtI,KAAA,CAAAoF,aAAA,CAAC7E,UAAU;IACTgI,GAAG,EAAEnG,SAAmB;IACxBoG,UAAU;IACVC,OAAO,EAAE,KAAM;IACfC,8BAA8B,EAAE,KAAM;IACtCC,qBAAqB,EAAE,CAACrF,iBAAiB,EAAEE,MAAM,CAACoF,aAAa;EAAE,GAEhEzD,UAAU,EAAE,CACF,eACbnF,KAAA,CAAAoF,aAAA,CAACxE,OAAO;IAACyE,KAAK,EAAE;MAAEwD,GAAG,EAAE,CAAC;IAAE;EAAE,EAAG,eAC/B7I,KAAA,CAAAoF,aAAA,CAAC7E,UAAU;IACTkI,OAAO,EAAE,KAAM;IACfK,4BAA4B,EAAE,KAAM;IACpCzD,KAAK,EAAE7B,MAAM,CAACuF,aAAc;IAC5BJ,qBAAqB,EAAErF;EAAkB,GAExCuD,UAAU,EAAE,CACF,CACR,CACD;AAEZ,CAAC;AAED,MAAMrD,MAAM,GAAGxC,gBAAgB,CAAC;EAC9ByC,MAAM,EAAE;IACNC,iBAAiB,EAAE,EAAE;IACrBoC,WAAW,EAAE;EACf,CAAC;EACDoC,SAAS,EAAE;IACTc,QAAQ,EAAE,QAAQ;IAClBC,mBAAmB,EAAE,CAAC;IACtBC,oBAAoB,EAAE,CAAC;IACvBC,UAAU,EAAE,EAAE;IACdC,UAAU,EAAE;EACd,CAAC;EACDnB,KAAK,EAAE;IACLmB,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDT,aAAa,EAAE;IACbU,QAAQ,EAAE;EACZ,CAAC;EACDhE,WAAW,EAAE;IACXgE,QAAQ,EAAE,CAAC;IACXC,aAAa,EAAE,KAAK;IACpBH,UAAU,EAAE,YAAY;IACxBC,cAAc,EAAE,QAAQ;IACxBG,MAAM,EAAE;EACV,CAAC;EACD3D,OAAO,EAAE;IACPC,WAAW,EAAE,EAAE;IACfyD,aAAa,EAAE,KAAK;IACpBH,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACD/C,QAAQ,EAAE;IACRzE,KAAK,EAAE,EAAE;IACT2H,MAAM,EAAE,EAAE;IACV1D,WAAW,EAAE;EACf,CAAC;EACDa,YAAY,EAAE;IACZ8C,QAAQ,EAAE,UAAU;IACpB3H,MAAM,EAAE,CAAC;IACT0H,MAAM,EAAE;EACV,CAAC;EACDT,aAAa,EAAE;IACbS,MAAM,EAAE,GAAG;IACX3H,KAAK,EAAE;EACT,CAAC;EACDwF,QAAQ,EAAE;IACRkC,aAAa,EAAE,KAAK;IACpB1H,KAAK,EAAE,MAAM;IACb2H,MAAM,EAAE,EAAE;IACVJ,UAAU,EAAE;EACd,CAAC;EACD3B,MAAM,EAAE;IACN3B,WAAW,EAAE;EACf;AACF,CAAC,CAAC;AAEF,eAAe1E,2BAA2B"}
@@ -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(() => {