@sendbird/uikit-react-native 3.1.2 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/README.md +67 -42
  2. package/lib/commonjs/components/ChannelInput/MessageToReplyPreview.js +145 -0
  3. package/lib/commonjs/components/ChannelInput/MessageToReplyPreview.js.map +1 -0
  4. package/lib/commonjs/components/ChannelInput/SendInput.js +147 -312
  5. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  6. package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js +238 -0
  7. package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js.map +1 -0
  8. package/lib/commonjs/components/ChannelInput/index.js +5 -1
  9. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  10. package/lib/commonjs/components/ChannelMessageList/index.js +1 -1
  11. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  12. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +24 -13
  13. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  14. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +100 -5
  15. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  16. package/lib/commonjs/components/MessageSearchResultItem.js +1 -0
  17. package/lib/commonjs/components/MessageSearchResultItem.js.map +1 -1
  18. package/lib/commonjs/components/OpenChannelMessageRenderer/index.js +1 -0
  19. package/lib/commonjs/components/OpenChannelMessageRenderer/index.js.map +1 -1
  20. package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +2 -2
  21. package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -1
  22. package/lib/commonjs/components/ReactionBottomSheets/index.js.map +1 -1
  23. package/lib/commonjs/components/StatusComposition.js.map +1 -1
  24. package/lib/commonjs/constants.js +5 -1
  25. package/lib/commonjs/constants.js.map +1 -1
  26. package/lib/commonjs/containers/GroupChannelPreviewContainer.js +1 -0
  27. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
  28. package/lib/commonjs/containers/InternalErrorBoundaryContainer.js.map +1 -1
  29. package/lib/commonjs/containers/SendbirdUIKitContainer.js +72 -34
  30. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  31. package/lib/commonjs/contexts/PlatformServiceCtx.js +16 -12
  32. package/lib/commonjs/contexts/PlatformServiceCtx.js.map +1 -1
  33. package/lib/commonjs/contexts/ReactionCtx.js +3 -2
  34. package/lib/commonjs/contexts/ReactionCtx.js.map +1 -1
  35. package/lib/commonjs/contexts/SendbirdChatCtx.js +2 -0
  36. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  37. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +27 -42
  38. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  39. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +109 -5
  40. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  41. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  42. package/lib/commonjs/domain/userList/types.js.map +1 -1
  43. package/lib/commonjs/fragments/createGroupChannelFragment.js +30 -4
  44. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  45. package/lib/commonjs/fragments/createMessageSearchFragment.js +1 -1
  46. package/lib/commonjs/fragments/createMessageSearchFragment.js.map +1 -1
  47. package/lib/commonjs/hooks/useChannelInputItems.js +211 -0
  48. package/lib/commonjs/hooks/useChannelInputItems.js.map +1 -0
  49. package/lib/commonjs/hooks/useConnection.js +1 -1
  50. package/lib/commonjs/hooks/useConnection.js.map +1 -1
  51. package/lib/commonjs/hooks/useVoiceMessageInput.js +207 -0
  52. package/lib/commonjs/hooks/useVoiceMessageInput.js.map +1 -0
  53. package/lib/commonjs/index.js +32 -0
  54. package/lib/commonjs/index.js.map +1 -1
  55. package/lib/commonjs/libs/MentionManager.js.map +1 -1
  56. package/lib/commonjs/libs/SBUUtils.js +4 -0
  57. package/lib/commonjs/libs/SBUUtils.js.map +1 -1
  58. package/lib/commonjs/libs/VoiceMessageConfig.js +30 -0
  59. package/lib/commonjs/libs/VoiceMessageConfig.js.map +1 -0
  60. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  61. package/lib/commonjs/localization/createBaseStringSet.js +24 -9
  62. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  63. package/lib/commonjs/platform/createFileService.expo.js +10 -0
  64. package/lib/commonjs/platform/createFileService.expo.js.map +1 -1
  65. package/lib/commonjs/platform/createFileService.native.js +19 -0
  66. package/lib/commonjs/platform/createFileService.native.js.map +1 -1
  67. package/lib/commonjs/platform/createPlayerService.expo.js +137 -0
  68. package/lib/commonjs/platform/createPlayerService.expo.js.map +1 -0
  69. package/lib/commonjs/platform/createPlayerService.native.js +139 -0
  70. package/lib/commonjs/platform/createPlayerService.native.js.map +1 -0
  71. package/lib/commonjs/platform/createRecorderService.expo.js +158 -0
  72. package/lib/commonjs/platform/createRecorderService.expo.js.map +1 -0
  73. package/lib/commonjs/platform/createRecorderService.native.js +157 -0
  74. package/lib/commonjs/platform/createRecorderService.native.js.map +1 -0
  75. package/lib/commonjs/platform/types.js.map +1 -1
  76. package/lib/commonjs/types.js.map +1 -1
  77. package/lib/commonjs/version.js +1 -1
  78. package/lib/commonjs/version.js.map +1 -1
  79. package/lib/module/components/ChannelInput/MessageToReplyPreview.js +137 -0
  80. package/lib/module/components/ChannelInput/MessageToReplyPreview.js.map +1 -0
  81. package/lib/module/components/ChannelInput/SendInput.js +149 -314
  82. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  83. package/lib/module/components/ChannelInput/VoiceMessageInput.js +228 -0
  84. package/lib/module/components/ChannelInput/VoiceMessageInput.js.map +1 -0
  85. package/lib/module/components/ChannelInput/index.js +5 -1
  86. package/lib/module/components/ChannelInput/index.js.map +1 -1
  87. package/lib/module/components/ChannelMessageList/index.js +2 -2
  88. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  89. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +24 -13
  90. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  91. package/lib/module/components/GroupChannelMessageRenderer/index.js +99 -6
  92. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  93. package/lib/module/components/MessageSearchResultItem.js +2 -1
  94. package/lib/module/components/MessageSearchResultItem.js.map +1 -1
  95. package/lib/module/components/OpenChannelMessageRenderer/index.js +1 -0
  96. package/lib/module/components/OpenChannelMessageRenderer/index.js.map +1 -1
  97. package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +2 -2
  98. package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -1
  99. package/lib/module/components/ReactionBottomSheets/index.js.map +1 -1
  100. package/lib/module/components/StatusComposition.js.map +1 -1
  101. package/lib/module/constants.js +2 -0
  102. package/lib/module/constants.js.map +1 -1
  103. package/lib/module/containers/GroupChannelPreviewContainer.js +2 -1
  104. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
  105. package/lib/module/containers/InternalErrorBoundaryContainer.js.map +1 -1
  106. package/lib/module/containers/SendbirdUIKitContainer.js +74 -36
  107. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  108. package/lib/module/contexts/PlatformServiceCtx.js +14 -11
  109. package/lib/module/contexts/PlatformServiceCtx.js.map +1 -1
  110. package/lib/module/contexts/ReactionCtx.js +3 -2
  111. package/lib/module/contexts/ReactionCtx.js.map +1 -1
  112. package/lib/module/contexts/SendbirdChatCtx.js +2 -0
  113. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  114. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +28 -43
  115. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  116. package/lib/module/domain/groupChannel/module/moduleContext.js +111 -7
  117. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  118. package/lib/module/domain/groupChannel/types.js.map +1 -1
  119. package/lib/module/domain/userList/types.js.map +1 -1
  120. package/lib/module/fragments/createGroupChannelFragment.js +32 -6
  121. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  122. package/lib/module/fragments/createMessageSearchFragment.js +1 -1
  123. package/lib/module/fragments/createMessageSearchFragment.js.map +1 -1
  124. package/lib/module/hooks/useChannelInputItems.js +203 -0
  125. package/lib/module/hooks/useChannelInputItems.js.map +1 -0
  126. package/lib/module/hooks/useConnection.js +1 -1
  127. package/lib/module/hooks/useConnection.js.map +1 -1
  128. package/lib/module/hooks/useVoiceMessageInput.js +199 -0
  129. package/lib/module/hooks/useVoiceMessageInput.js.map +1 -0
  130. package/lib/module/index.js +4 -0
  131. package/lib/module/index.js.map +1 -1
  132. package/lib/module/libs/MentionManager.js.map +1 -1
  133. package/lib/module/libs/SBUUtils.js +4 -0
  134. package/lib/module/libs/SBUUtils.js.map +1 -1
  135. package/lib/module/libs/VoiceMessageConfig.js +23 -0
  136. package/lib/module/libs/VoiceMessageConfig.js.map +1 -0
  137. package/lib/module/localization/StringSet.type.js.map +1 -1
  138. package/lib/module/localization/createBaseStringSet.js +25 -10
  139. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  140. package/lib/module/platform/createFileService.expo.js +10 -0
  141. package/lib/module/platform/createFileService.expo.js.map +1 -1
  142. package/lib/module/platform/createFileService.native.js +19 -0
  143. package/lib/module/platform/createFileService.native.js.map +1 -1
  144. package/lib/module/platform/createPlayerService.expo.js +129 -0
  145. package/lib/module/platform/createPlayerService.expo.js.map +1 -0
  146. package/lib/module/platform/createPlayerService.native.js +132 -0
  147. package/lib/module/platform/createPlayerService.native.js.map +1 -0
  148. package/lib/module/platform/createRecorderService.expo.js +150 -0
  149. package/lib/module/platform/createRecorderService.expo.js.map +1 -0
  150. package/lib/module/platform/createRecorderService.native.js +149 -0
  151. package/lib/module/platform/createRecorderService.native.js.map +1 -0
  152. package/lib/module/platform/types.js.map +1 -1
  153. package/lib/module/types.js.map +1 -1
  154. package/lib/module/version.js +1 -1
  155. package/lib/module/version.js.map +1 -1
  156. package/lib/typescript/src/components/ChannelCover.d.ts +2 -1
  157. package/lib/typescript/src/components/ChannelInput/AttachmentsButton.d.ts +2 -1
  158. package/lib/typescript/src/components/ChannelInput/MessageToReplyPreview.d.ts +7 -0
  159. package/lib/typescript/src/components/ChannelInput/VoiceMessageInput.d.ts +11 -0
  160. package/lib/typescript/src/components/ChannelInput/index.d.ts +7 -3
  161. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +1 -1
  162. package/lib/typescript/src/components/FileViewer.d.ts +2 -1
  163. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.d.ts +2 -1
  164. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.d.ts +1 -1
  165. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.d.ts +1 -1
  166. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.d.ts +4 -2
  167. package/lib/typescript/src/components/NewMessagesButton.d.ts +1 -1
  168. package/lib/typescript/src/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.d.ts +2 -1
  169. package/lib/typescript/src/components/ProviderLayout.d.ts +1 -1
  170. package/lib/typescript/src/components/ReactionAddons/BottomSheetReactionAddon.d.ts +2 -1
  171. package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +2 -1
  172. package/lib/typescript/src/components/ReactionAddons/ReactionRoundedButton.d.ts +3 -2
  173. package/lib/typescript/src/components/ReactionAddons/index.d.ts +3 -2
  174. package/lib/typescript/src/components/ReactionBottomSheets/ReactionListBottomSheet.d.ts +2 -1
  175. package/lib/typescript/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.d.ts +2 -1
  176. package/lib/typescript/src/components/ReactionBottomSheets/index.d.ts +4 -4
  177. package/lib/typescript/src/components/ScrollToBottomButton.d.ts +1 -1
  178. package/lib/typescript/src/components/StatusComposition.d.ts +4 -4
  179. package/lib/typescript/src/components/TypedPlaceholder.d.ts +2 -1
  180. package/lib/typescript/src/components/UserActionBar.d.ts +2 -1
  181. package/lib/typescript/src/components/UserSelectableBar.d.ts +2 -1
  182. package/lib/typescript/src/constants.d.ts +2 -0
  183. package/lib/typescript/src/containers/GroupChannelPreviewContainer.d.ts +2 -1
  184. package/lib/typescript/src/containers/InternalErrorBoundaryContainer.d.ts +3 -3
  185. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +19 -8
  186. package/lib/typescript/src/contexts/LocalizationCtx.d.ts +1 -1
  187. package/lib/typescript/src/contexts/PlatformServiceCtx.d.ts +8 -8
  188. package/lib/typescript/src/contexts/ReactionCtx.d.ts +5 -2
  189. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +6 -3
  190. package/lib/typescript/src/contexts/UserProfileCtx.d.ts +1 -1
  191. package/lib/typescript/src/domain/groupChannel/component/GroupChannelHeader.d.ts +2 -1
  192. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput.d.ts +1 -1
  193. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +1 -1
  194. package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusEmpty.d.ts +2 -1
  195. package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusLoading.d.ts +2 -1
  196. package/lib/typescript/src/domain/groupChannel/component/GroupChannelSuggestedMentionList.d.ts +2 -1
  197. package/lib/typescript/src/domain/groupChannel/types.d.ts +45 -0
  198. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersHeader.d.ts +2 -1
  199. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.d.ts +2 -1
  200. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.d.ts +2 -1
  201. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.d.ts +2 -1
  202. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListHeader.d.ts +2 -1
  203. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListList.d.ts +2 -1
  204. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusEmpty.d.ts +2 -1
  205. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusLoading.d.ts +2 -1
  206. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListTypeSelector.d.ts +2 -1
  207. package/lib/typescript/src/domain/groupChannelModeration/component/GroupChannelModerationHeader.d.ts +2 -1
  208. package/lib/typescript/src/domain/groupChannelModeration/component/GroupChannelModerationMenu.d.ts +2 -1
  209. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.d.ts +2 -1
  210. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.d.ts +2 -1
  211. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.d.ts +2 -1
  212. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.d.ts +2 -1
  213. package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.d.ts +2 -1
  214. package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsView.d.ts +2 -1
  215. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.d.ts +2 -1
  216. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsList.d.ts +2 -1
  217. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.d.ts +2 -1
  218. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.d.ts +2 -1
  219. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsHeader.d.ts +2 -1
  220. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.d.ts +2 -1
  221. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.d.ts +2 -1
  222. package/lib/typescript/src/domain/messageSearch/component/MessageSearchHeader.d.ts +2 -1
  223. package/lib/typescript/src/domain/messageSearch/component/MessageSearchList.d.ts +2 -1
  224. package/lib/typescript/src/domain/messageSearch/component/MessageSearchStatusEmpty.d.ts +2 -1
  225. package/lib/typescript/src/domain/messageSearch/component/MessageSearchStatusLoading.d.ts +2 -1
  226. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +2 -2
  227. package/lib/typescript/src/domain/openChannel/component/OpenChannelInput.d.ts +1 -1
  228. package/lib/typescript/src/domain/openChannel/component/OpenChannelMessageList.d.ts +1 -1
  229. package/lib/typescript/src/domain/openChannel/component/OpenChannelStatusEmpty.d.ts +2 -1
  230. package/lib/typescript/src/domain/openChannel/component/OpenChannelStatusLoading.d.ts +2 -1
  231. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersHeader.d.ts +2 -1
  232. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersList.d.ts +2 -1
  233. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusEmpty.d.ts +2 -1
  234. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusLoading.d.ts +2 -1
  235. package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateHeader.d.ts +2 -1
  236. package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateProfileInput.d.ts +2 -1
  237. package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateStatusLoading.d.ts +2 -1
  238. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListHeader.d.ts +2 -1
  239. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListList.d.ts +2 -1
  240. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListStatusEmpty.d.ts +2 -1
  241. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListStatusLoading.d.ts +2 -1
  242. package/lib/typescript/src/domain/openChannelModeration/component/OpenChannelModerationHeader.d.ts +2 -1
  243. package/lib/typescript/src/domain/openChannelModeration/component/OpenChannelModerationMenu.d.ts +2 -1
  244. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsHeader.d.ts +2 -1
  245. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsList.d.ts +2 -1
  246. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusEmpty.d.ts +2 -1
  247. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusLoading.d.ts +2 -1
  248. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsHeader.d.ts +2 -1
  249. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsList.d.ts +2 -1
  250. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusEmpty.d.ts +2 -1
  251. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusLoading.d.ts +2 -1
  252. package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsHeader.d.ts +2 -1
  253. package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsInfo.d.ts +2 -1
  254. package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsMenu.d.ts +2 -1
  255. package/lib/typescript/src/domain/userList/component/UserListHeader.d.ts +3 -3
  256. package/lib/typescript/src/domain/userList/component/UserListList.d.ts +1 -1
  257. package/lib/typescript/src/domain/userList/component/UserListStatusEmpty.d.ts +2 -1
  258. package/lib/typescript/src/domain/userList/component/UserListStatusLoading.d.ts +2 -1
  259. package/lib/typescript/src/domain/userList/types.d.ts +2 -2
  260. package/lib/typescript/src/hooks/useChannelInputItems.d.ts +10 -0
  261. package/lib/typescript/src/hooks/useVoiceMessageInput.d.ts +53 -0
  262. package/lib/typescript/src/index.d.ts +4 -0
  263. package/lib/typescript/src/libs/MentionManager.d.ts +2 -1
  264. package/lib/typescript/src/libs/SBUUtils.d.ts +1 -0
  265. package/lib/typescript/src/libs/VoiceMessageConfig.d.ts +25 -0
  266. package/lib/typescript/src/localization/StringSet.type.d.ts +7 -0
  267. package/lib/typescript/src/platform/createPlayerService.expo.d.ts +7 -0
  268. package/lib/typescript/src/platform/createPlayerService.native.d.ts +9 -0
  269. package/lib/typescript/src/platform/createRecorderService.expo.d.ts +7 -0
  270. package/lib/typescript/src/platform/createRecorderService.native.d.ts +9 -0
  271. package/lib/typescript/src/platform/types.d.ts +100 -1
  272. package/lib/typescript/src/types.d.ts +1 -1
  273. package/lib/typescript/src/version.d.ts +1 -1
  274. package/package.json +9 -11
  275. package/src/components/ChannelInput/MessageToReplyPreview.tsx +133 -0
  276. package/src/components/ChannelInput/SendInput.tsx +129 -320
  277. package/src/components/ChannelInput/VoiceMessageInput.tsx +206 -0
  278. package/src/components/ChannelInput/index.tsx +12 -4
  279. package/src/components/ChannelMessageList/index.tsx +3 -1
  280. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +24 -11
  281. package/src/components/GroupChannelMessageRenderer/index.tsx +80 -3
  282. package/src/components/MessageSearchResultItem.tsx +2 -1
  283. package/src/components/OpenChannelMessageRenderer/index.tsx +1 -0
  284. package/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.tsx +2 -2
  285. package/src/components/ReactionBottomSheets/index.tsx +3 -2
  286. package/src/components/StatusComposition.tsx +3 -3
  287. package/src/constants.ts +2 -0
  288. package/src/containers/GroupChannelPreviewContainer.tsx +2 -0
  289. package/src/containers/InternalErrorBoundaryContainer.tsx +1 -1
  290. package/src/containers/SendbirdUIKitContainer.tsx +103 -59
  291. package/src/contexts/PlatformServiceCtx.tsx +22 -20
  292. package/src/contexts/ReactionCtx.tsx +7 -5
  293. package/src/contexts/SendbirdChatCtx.tsx +10 -2
  294. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +29 -43
  295. package/src/domain/groupChannel/module/moduleContext.tsx +119 -7
  296. package/src/domain/groupChannel/types.ts +41 -0
  297. package/src/domain/userList/types.ts +2 -2
  298. package/src/fragments/createGroupChannelFragment.tsx +32 -5
  299. package/src/fragments/createMessageSearchFragment.tsx +1 -1
  300. package/src/hooks/useChannelInputItems.ts +215 -0
  301. package/src/hooks/useConnection.ts +1 -1
  302. package/src/hooks/useVoiceMessageInput.ts +237 -0
  303. package/src/index.ts +4 -0
  304. package/src/libs/MentionManager.tsx +1 -1
  305. package/src/libs/SBUUtils.ts +5 -0
  306. package/src/libs/VoiceMessageConfig.ts +28 -0
  307. package/src/localization/StringSet.type.ts +8 -0
  308. package/src/localization/createBaseStringSet.ts +27 -11
  309. package/src/platform/createFileService.expo.ts +10 -0
  310. package/src/platform/createFileService.native.ts +19 -0
  311. package/src/platform/createPlayerService.expo.tsx +142 -0
  312. package/src/platform/createPlayerService.native.tsx +148 -0
  313. package/src/platform/createRecorderService.expo.tsx +160 -0
  314. package/src/platform/createRecorderService.native.tsx +170 -0
  315. package/src/platform/types.ts +114 -1
  316. package/src/types.ts +1 -1
  317. package/src/version.ts +1 -1
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useChannelInputItems = void 0;
7
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
8
+ var _uikitUtils = require("@sendbird/uikit-utils");
9
+ var _SBUError = _interopRequireDefault(require("../libs/SBUError"));
10
+ var _SBUUtils = _interopRequireDefault(require("../libs/SBUUtils"));
11
+ var _useContext = require("./useContext");
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ const useChannelInputItems = (channel, sendFileMessage) => {
14
+ const {
15
+ sbOptions,
16
+ imageCompressionConfig
17
+ } = (0, _useContext.useSendbirdChat)();
18
+ const {
19
+ STRINGS
20
+ } = (0, _useContext.useLocalization)();
21
+ const {
22
+ fileService,
23
+ mediaService
24
+ } = (0, _useContext.usePlatformService)();
25
+ const {
26
+ alert
27
+ } = (0, _uikitReactNativeFoundation.useAlert)();
28
+ const toast = (0, _uikitReactNativeFoundation.useToast)();
29
+ const sheetItems = [];
30
+ const input = (0, _uikitUtils.useIIFE)(() => {
31
+ switch (true) {
32
+ case channel.isOpenChannel():
33
+ return sbOptions.uikit.openChannel.channel.input;
34
+ case channel.isGroupChannel():
35
+ return sbOptions.uikit.groupChannel.channel.input;
36
+ default:
37
+ return {
38
+ enableDocument: true,
39
+ camera: {
40
+ enablePhoto: true,
41
+ enableVideo: true
42
+ },
43
+ gallery: {
44
+ enablePhoto: true,
45
+ enableVideo: true
46
+ }
47
+ };
48
+ }
49
+ });
50
+ if (input.camera.enablePhoto) {
51
+ sheetItems.push({
52
+ title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_CAMERA_PHOTO,
53
+ icon: 'camera',
54
+ onPress: async () => {
55
+ const mediaFile = await fileService.openCamera({
56
+ mediaType: 'photo',
57
+ onOpenFailure: error => {
58
+ if (error.code === _SBUError.default.CODE.ERR_PERMISSIONS_DENIED) {
59
+ alert({
60
+ title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
61
+ message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(STRINGS.LABELS.PERMISSION_CAMERA, STRINGS.LABELS.PERMISSION_APP_NAME),
62
+ buttons: [{
63
+ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
64
+ onPress: () => _SBUUtils.default.openSettings()
65
+ }]
66
+ });
67
+ } else {
68
+ toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');
69
+ }
70
+ }
71
+ });
72
+ if (mediaFile) {
73
+ // Image compression
74
+ if ((0, _uikitUtils.isImage)(mediaFile.uri, mediaFile.type) && (0, _uikitUtils.shouldCompressImage)(mediaFile.type, sbOptions.chat.imageCompressionEnabled)) {
75
+ await _SBUUtils.default.safeRun(async () => {
76
+ const compressed = await mediaService.compressImage({
77
+ uri: mediaFile.uri,
78
+ maxWidth: imageCompressionConfig.width,
79
+ maxHeight: imageCompressionConfig.height,
80
+ compressionRate: imageCompressionConfig.compressionRate
81
+ });
82
+ if (compressed) {
83
+ mediaFile.uri = compressed.uri;
84
+ mediaFile.size = compressed.size;
85
+ }
86
+ });
87
+ }
88
+ sendFileMessage(mediaFile);
89
+ }
90
+ }
91
+ });
92
+ }
93
+ if (input.camera.enableVideo) {
94
+ sheetItems.push({
95
+ title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_CAMERA_VIDEO,
96
+ icon: 'camera',
97
+ onPress: async () => {
98
+ const mediaFile = await fileService.openCamera({
99
+ mediaType: 'video',
100
+ onOpenFailure: error => {
101
+ if (error.code === _SBUError.default.CODE.ERR_PERMISSIONS_DENIED) {
102
+ alert({
103
+ title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
104
+ message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(STRINGS.LABELS.PERMISSION_CAMERA, STRINGS.LABELS.PERMISSION_APP_NAME),
105
+ buttons: [{
106
+ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
107
+ onPress: () => _SBUUtils.default.openSettings()
108
+ }]
109
+ });
110
+ } else {
111
+ toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');
112
+ }
113
+ }
114
+ });
115
+ if (mediaFile) {
116
+ sendFileMessage(mediaFile);
117
+ }
118
+ }
119
+ });
120
+ }
121
+ if (input.gallery.enablePhoto || input.gallery.enableVideo) {
122
+ const mediaType = (() => {
123
+ switch (true) {
124
+ case input.gallery.enablePhoto && input.gallery.enableVideo:
125
+ return 'all';
126
+ case input.gallery.enablePhoto && !input.gallery.enableVideo:
127
+ return 'photo';
128
+ case !input.gallery.enablePhoto && input.gallery.enableVideo:
129
+ return 'video';
130
+ default:
131
+ return 'all';
132
+ }
133
+ })();
134
+ sheetItems.push({
135
+ title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY,
136
+ icon: 'photo',
137
+ onPress: async () => {
138
+ const mediaFiles = await fileService.openMediaLibrary({
139
+ selectionLimit: 1,
140
+ mediaType,
141
+ onOpenFailure: error => {
142
+ if (error.code === _SBUError.default.CODE.ERR_PERMISSIONS_DENIED) {
143
+ alert({
144
+ title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
145
+ message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(STRINGS.LABELS.PERMISSION_DEVICE_STORAGE, STRINGS.LABELS.PERMISSION_APP_NAME),
146
+ buttons: [{
147
+ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
148
+ onPress: () => _SBUUtils.default.openSettings()
149
+ }]
150
+ });
151
+ } else {
152
+ toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');
153
+ }
154
+ }
155
+ });
156
+ if (mediaFiles && mediaFiles[0]) {
157
+ const mediaFile = mediaFiles[0];
158
+
159
+ // Image compression
160
+ if ((0, _uikitUtils.isImage)(mediaFile.uri, mediaFile.type) && (0, _uikitUtils.shouldCompressImage)(mediaFile.type, sbOptions.chat.imageCompressionEnabled)) {
161
+ await _SBUUtils.default.safeRun(async () => {
162
+ const compressed = await mediaService.compressImage({
163
+ uri: mediaFile.uri,
164
+ maxWidth: imageCompressionConfig.width,
165
+ maxHeight: imageCompressionConfig.height,
166
+ compressionRate: imageCompressionConfig.compressionRate
167
+ });
168
+ if (compressed) {
169
+ mediaFile.uri = compressed.uri;
170
+ mediaFile.size = compressed.size;
171
+ }
172
+ });
173
+ }
174
+ sendFileMessage(mediaFile);
175
+ }
176
+ }
177
+ });
178
+ }
179
+ if (input.enableDocument) {
180
+ sheetItems.push({
181
+ title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_FILES,
182
+ icon: 'document',
183
+ onPress: async () => {
184
+ const documentFile = await fileService.openDocument({
185
+ onOpenFailure: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error')
186
+ });
187
+ if (documentFile) {
188
+ // Image compression
189
+ if ((0, _uikitUtils.isImage)(documentFile.uri, documentFile.type) && (0, _uikitUtils.shouldCompressImage)(documentFile.type, sbOptions.chat.imageCompressionEnabled)) {
190
+ await _SBUUtils.default.safeRun(async () => {
191
+ const compressed = await mediaService.compressImage({
192
+ uri: documentFile.uri,
193
+ maxWidth: imageCompressionConfig.width,
194
+ maxHeight: imageCompressionConfig.height,
195
+ compressionRate: imageCompressionConfig.compressionRate
196
+ });
197
+ if (compressed) {
198
+ documentFile.uri = compressed.uri;
199
+ documentFile.size = compressed.size;
200
+ }
201
+ });
202
+ }
203
+ sendFileMessage(documentFile);
204
+ }
205
+ }
206
+ });
207
+ }
208
+ return sheetItems;
209
+ };
210
+ exports.useChannelInputItems = useChannelInputItems;
211
+ //# sourceMappingURL=useChannelInputItems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_uikitReactNativeFoundation","require","_uikitUtils","_SBUError","_interopRequireDefault","_SBUUtils","_useContext","obj","__esModule","default","useChannelInputItems","channel","sendFileMessage","sbOptions","imageCompressionConfig","useSendbirdChat","STRINGS","useLocalization","fileService","mediaService","usePlatformService","alert","useAlert","toast","useToast","sheetItems","input","useIIFE","isOpenChannel","uikit","openChannel","isGroupChannel","groupChannel","enableDocument","camera","enablePhoto","enableVideo","gallery","push","title","LABELS","CHANNEL_INPUT_ATTACHMENT_CAMERA_PHOTO","icon","onPress","mediaFile","openCamera","mediaType","onOpenFailure","error","code","SBUError","CODE","ERR_PERMISSIONS_DENIED","DIALOG","ALERT_PERMISSIONS_TITLE","message","ALERT_PERMISSIONS_MESSAGE","PERMISSION_CAMERA","PERMISSION_APP_NAME","buttons","text","ALERT_PERMISSIONS_OK","SBUUtils","openSettings","show","TOAST","OPEN_CAMERA_ERROR","isImage","uri","type","shouldCompressImage","chat","imageCompressionEnabled","safeRun","compressed","compressImage","maxWidth","width","maxHeight","height","compressionRate","size","CHANNEL_INPUT_ATTACHMENT_CAMERA_VIDEO","CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY","mediaFiles","openMediaLibrary","selectionLimit","PERMISSION_DEVICE_STORAGE","OPEN_PHOTO_LIBRARY_ERROR","CHANNEL_INPUT_ATTACHMENT_FILES","documentFile","openDocument","OPEN_FILES_ERROR","exports"],"sources":["useChannelInputItems.ts"],"sourcesContent":["import { BottomSheetItem, useAlert, useToast } from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdChannel, isImage, shouldCompressImage, useIIFE } from '@sendbird/uikit-utils';\n\nimport SBUError from '../libs/SBUError';\nimport SBUUtils from '../libs/SBUUtils';\nimport { FileType } from '../platform/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from './useContext';\n\nexport const useChannelInputItems = (channel: SendbirdChannel, sendFileMessage: (file: FileType) => void) => {\n const { sbOptions, imageCompressionConfig } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { fileService, mediaService } = usePlatformService();\n const { alert } = useAlert();\n const toast = useToast();\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const input = useIIFE(() => {\n switch (true) {\n case channel.isOpenChannel():\n return sbOptions.uikit.openChannel.channel.input;\n case channel.isGroupChannel():\n return sbOptions.uikit.groupChannel.channel.input;\n default:\n return {\n enableDocument: true,\n camera: { enablePhoto: true, enableVideo: true },\n gallery: { enablePhoto: true, enableVideo: true },\n };\n }\n });\n\n if (input.camera.enablePhoto) {\n sheetItems.push({\n title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_CAMERA_PHOTO,\n icon: 'camera',\n onPress: async () => {\n const mediaFile = await fileService.openCamera({\n mediaType: 'photo',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_CAMERA,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');\n }\n },\n });\n\n if (mediaFile) {\n // Image compression\n if (\n isImage(mediaFile.uri, mediaFile.type) &&\n shouldCompressImage(mediaFile.type, sbOptions.chat.imageCompressionEnabled)\n ) {\n await SBUUtils.safeRun(async () => {\n const compressed = await mediaService.compressImage({\n uri: mediaFile.uri,\n maxWidth: imageCompressionConfig.width,\n maxHeight: imageCompressionConfig.height,\n compressionRate: imageCompressionConfig.compressionRate,\n });\n\n if (compressed) {\n mediaFile.uri = compressed.uri;\n mediaFile.size = compressed.size;\n }\n });\n }\n\n sendFileMessage(mediaFile);\n }\n },\n });\n }\n\n if (input.camera.enableVideo) {\n sheetItems.push({\n title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_CAMERA_VIDEO,\n icon: 'camera',\n onPress: async () => {\n const mediaFile = await fileService.openCamera({\n mediaType: 'video',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_CAMERA,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');\n }\n },\n });\n\n if (mediaFile) {\n sendFileMessage(mediaFile);\n }\n },\n });\n }\n\n if (input.gallery.enablePhoto || input.gallery.enableVideo) {\n const mediaType = (() => {\n switch (true) {\n case input.gallery.enablePhoto && input.gallery.enableVideo:\n return 'all';\n case input.gallery.enablePhoto && !input.gallery.enableVideo:\n return 'photo';\n case !input.gallery.enablePhoto && input.gallery.enableVideo:\n return 'video';\n default:\n return 'all';\n }\n })();\n\n sheetItems.push({\n title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY,\n icon: 'photo',\n onPress: async () => {\n const mediaFiles = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType,\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_DEVICE_STORAGE,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');\n }\n },\n });\n\n if (mediaFiles && mediaFiles[0]) {\n const mediaFile = mediaFiles[0];\n\n // Image compression\n if (\n isImage(mediaFile.uri, mediaFile.type) &&\n shouldCompressImage(mediaFile.type, sbOptions.chat.imageCompressionEnabled)\n ) {\n await SBUUtils.safeRun(async () => {\n const compressed = await mediaService.compressImage({\n uri: mediaFile.uri,\n maxWidth: imageCompressionConfig.width,\n maxHeight: imageCompressionConfig.height,\n compressionRate: imageCompressionConfig.compressionRate,\n });\n\n if (compressed) {\n mediaFile.uri = compressed.uri;\n mediaFile.size = compressed.size;\n }\n });\n }\n\n sendFileMessage(mediaFile);\n }\n },\n });\n }\n\n if (input.enableDocument) {\n sheetItems.push({\n title: STRINGS.LABELS.CHANNEL_INPUT_ATTACHMENT_FILES,\n icon: 'document',\n onPress: async () => {\n const documentFile = await fileService.openDocument({\n onOpenFailure: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error'),\n });\n\n if (documentFile) {\n // Image compression\n if (\n isImage(documentFile.uri, documentFile.type) &&\n shouldCompressImage(documentFile.type, sbOptions.chat.imageCompressionEnabled)\n ) {\n await SBUUtils.safeRun(async () => {\n const compressed = await mediaService.compressImage({\n uri: documentFile.uri,\n maxWidth: imageCompressionConfig.width,\n maxHeight: imageCompressionConfig.height,\n compressionRate: imageCompressionConfig.compressionRate,\n });\n\n if (compressed) {\n documentFile.uri = compressed.uri;\n documentFile.size = compressed.size;\n }\n });\n }\n\n sendFileMessage(documentFile);\n }\n },\n });\n }\n\n return sheetItems;\n};\n"],"mappings":"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"}
@@ -70,7 +70,7 @@ const useConnection = () => {
70
70
  _uikitUtils.Logger.warn('[useConnection]', 'clear cached-data');
71
71
  await sdk.clearCachedData().catch(e => _uikitUtils.Logger.warn('[useConnection]', 'clear cached-data failure', e));
72
72
  } else if (sdk.currentUser) {
73
- await initEmoji(sdk, emojiManager);
73
+ await Promise.allSettled([initEmoji(sdk, emojiManager), initDashboardConfigs(sdk)]);
74
74
  _uikitUtils.Logger.debug('[useConnection]', 'connected! (offline)');
75
75
  setCurrentUser(sdk.currentUser);
76
76
  return sdk.currentUser;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_uikitTools","_uikitUtils","_useContext","_usePushTokenRegistration","_interopRequireDefault","obj","__esModule","default","cacheRestrictCodes","isCacheRestrictedError","error","some","code","initEmoji","sdk","emojiManager","_sdk$appInfo","init","appInfo","emojiHash","container","getAllEmoji","useConnection","initDashboardConfigs","useUIKitConfig","setCurrentUser","sbOptions","useSendbirdChat","registerPushTokenForCurrentUser","unregisterPushTokenForCurrentUser","usePushTokenRegistration","connect","useCallback","userId","opts","Logger","debug","user","accessToken","nickname","updateCurrentUserInfo","then","updatedUser","catch","e","warn","chat","useUserIdForNicknameEnabled","autoPushTokenRegistrationEnabled","Promise","allSettled","isCacheEnabled","message","clearCachedData","currentUser","disconnect","undefined","reconnect","_default","exports"],"sources":["useConnection.ts"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { useUIKitConfig } from '@sendbird/uikit-tools';\nimport { Logger, SendbirdChatSDK, SendbirdError, SendbirdUser } from '@sendbird/uikit-utils';\n\nimport type EmojiManager from '../libs/EmojiManager';\nimport { useSendbirdChat } from './useContext';\nimport usePushTokenRegistration from './usePushTokenRegistration';\n\ntype ConnectOptions = { nickname?: string; accessToken?: string };\n\nconst cacheRestrictCodes = [400300, 400301, 400302, 400310];\nfunction isCacheRestrictedError(error: SendbirdError) {\n return cacheRestrictCodes.some((code) => error.code === code);\n}\n\nasync function initEmoji(sdk: SendbirdChatSDK, emojiManager: EmojiManager) {\n await emojiManager.init();\n if (sdk.appInfo?.emojiHash !== emojiManager.emojiHash) {\n try {\n const container = await sdk.getAllEmoji();\n await emojiManager.init(container);\n } catch {}\n }\n}\n\nconst useConnection = () => {\n const { initDashboardConfigs } = useUIKitConfig();\n const { sdk, emojiManager, setCurrentUser, sbOptions } = useSendbirdChat();\n const { registerPushTokenForCurrentUser, unregisterPushTokenForCurrentUser } = usePushTokenRegistration();\n\n const connect = useCallback(\n async (userId: string, opts?: ConnectOptions): Promise<SendbirdUser> => {\n try {\n Logger.debug('[useConnection]', 'connect start:', userId);\n let user = await sdk.connect(userId, opts?.accessToken);\n\n if (opts?.nickname) {\n Logger.debug('[useConnection]', 'nickname-sync start:', opts.nickname);\n await sdk\n .updateCurrentUserInfo({ nickname: opts.nickname })\n .then((updatedUser) => (user = updatedUser))\n .catch((e) => Logger.warn('[useConnection]', 'nickname-sync failure', e));\n } else if (sbOptions.chat.useUserIdForNicknameEnabled) {\n await sdk.updateCurrentUserInfo({ nickname: userId }).then((updatedUser) => (user = updatedUser));\n }\n\n if (sbOptions.chat.autoPushTokenRegistrationEnabled) {\n Logger.debug('[useConnection]', 'autoPushTokenRegistration enabled, register for current user');\n await registerPushTokenForCurrentUser().catch((e) => {\n Logger.warn('[useConnection]', 'autoPushToken Registration failure', e);\n });\n }\n\n await Promise.allSettled([initEmoji(sdk, emojiManager), initDashboardConfigs(sdk)]);\n\n Logger.debug('[useConnection]', 'connected! (online)');\n setCurrentUser(user);\n\n return user;\n } catch (e) {\n const error = e as unknown as SendbirdError;\n\n if (sdk.isCacheEnabled) {\n if (isCacheRestrictedError(error)) {\n Logger.warn('[useConnection]', 'offline connect restricted', error.message, error.code);\n Logger.warn('[useConnection]', 'clear cached-data');\n await sdk.clearCachedData().catch((e) => Logger.warn('[useConnection]', 'clear cached-data failure', e));\n } else if (sdk.currentUser) {\n await initEmoji(sdk, emojiManager);\n\n Logger.debug('[useConnection]', 'connected! (offline)');\n setCurrentUser(sdk.currentUser);\n return sdk.currentUser;\n }\n }\n\n Logger.warn('[useConnection]', 'connect failure', error.message, error.code);\n throw error;\n }\n },\n [sdk, registerPushTokenForCurrentUser, sbOptions.chat.autoPushTokenRegistrationEnabled],\n );\n\n const disconnect = useCallback(async () => {\n Logger.debug('[useConnection]', 'disconnect start');\n\n if (sbOptions.chat.autoPushTokenRegistrationEnabled) {\n Logger.debug('[useConnection]', 'autoPushTokenRegistration enabled, unregister for current user');\n await unregisterPushTokenForCurrentUser().catch((e) => {\n Logger.warn('[useConnection]', 'autoPushToken unregister failure', e);\n });\n }\n\n await sdk.disconnect().then(() => setCurrentUser(undefined));\n Logger.debug('[useConnection]', 'disconnected!');\n }, [sdk, unregisterPushTokenForCurrentUser, sbOptions.chat.autoPushTokenRegistrationEnabled]);\n\n return { connect, disconnect, reconnect: () => sdk.reconnect() };\n};\n\nexport default useConnection;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","require","_uikitTools","_uikitUtils","_useContext","_usePushTokenRegistration","_interopRequireDefault","obj","__esModule","default","cacheRestrictCodes","isCacheRestrictedError","error","some","code","initEmoji","sdk","emojiManager","_sdk$appInfo","init","appInfo","emojiHash","container","getAllEmoji","useConnection","initDashboardConfigs","useUIKitConfig","setCurrentUser","sbOptions","useSendbirdChat","registerPushTokenForCurrentUser","unregisterPushTokenForCurrentUser","usePushTokenRegistration","connect","useCallback","userId","opts","Logger","debug","user","accessToken","nickname","updateCurrentUserInfo","then","updatedUser","catch","e","warn","chat","useUserIdForNicknameEnabled","autoPushTokenRegistrationEnabled","Promise","allSettled","isCacheEnabled","message","clearCachedData","currentUser","disconnect","undefined","reconnect","_default","exports"],"sources":["useConnection.ts"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { useUIKitConfig } from '@sendbird/uikit-tools';\nimport { Logger, SendbirdChatSDK, SendbirdError, SendbirdUser } from '@sendbird/uikit-utils';\n\nimport type EmojiManager from '../libs/EmojiManager';\nimport { useSendbirdChat } from './useContext';\nimport usePushTokenRegistration from './usePushTokenRegistration';\n\ntype ConnectOptions = { nickname?: string; accessToken?: string };\n\nconst cacheRestrictCodes = [400300, 400301, 400302, 400310];\nfunction isCacheRestrictedError(error: SendbirdError) {\n return cacheRestrictCodes.some((code) => error.code === code);\n}\n\nasync function initEmoji(sdk: SendbirdChatSDK, emojiManager: EmojiManager) {\n await emojiManager.init();\n if (sdk.appInfo?.emojiHash !== emojiManager.emojiHash) {\n try {\n const container = await sdk.getAllEmoji();\n await emojiManager.init(container);\n } catch {}\n }\n}\n\nconst useConnection = () => {\n const { initDashboardConfigs } = useUIKitConfig();\n const { sdk, emojiManager, setCurrentUser, sbOptions } = useSendbirdChat();\n const { registerPushTokenForCurrentUser, unregisterPushTokenForCurrentUser } = usePushTokenRegistration();\n\n const connect = useCallback(\n async (userId: string, opts?: ConnectOptions): Promise<SendbirdUser> => {\n try {\n Logger.debug('[useConnection]', 'connect start:', userId);\n let user = await sdk.connect(userId, opts?.accessToken);\n\n if (opts?.nickname) {\n Logger.debug('[useConnection]', 'nickname-sync start:', opts.nickname);\n await sdk\n .updateCurrentUserInfo({ nickname: opts.nickname })\n .then((updatedUser) => (user = updatedUser))\n .catch((e) => Logger.warn('[useConnection]', 'nickname-sync failure', e));\n } else if (sbOptions.chat.useUserIdForNicknameEnabled) {\n await sdk.updateCurrentUserInfo({ nickname: userId }).then((updatedUser) => (user = updatedUser));\n }\n\n if (sbOptions.chat.autoPushTokenRegistrationEnabled) {\n Logger.debug('[useConnection]', 'autoPushTokenRegistration enabled, register for current user');\n await registerPushTokenForCurrentUser().catch((e) => {\n Logger.warn('[useConnection]', 'autoPushToken Registration failure', e);\n });\n }\n\n await Promise.allSettled([initEmoji(sdk, emojiManager), initDashboardConfigs(sdk)]);\n\n Logger.debug('[useConnection]', 'connected! (online)');\n setCurrentUser(user);\n\n return user;\n } catch (e) {\n const error = e as unknown as SendbirdError;\n\n if (sdk.isCacheEnabled) {\n if (isCacheRestrictedError(error)) {\n Logger.warn('[useConnection]', 'offline connect restricted', error.message, error.code);\n Logger.warn('[useConnection]', 'clear cached-data');\n await sdk.clearCachedData().catch((e) => Logger.warn('[useConnection]', 'clear cached-data failure', e));\n } else if (sdk.currentUser) {\n await Promise.allSettled([initEmoji(sdk, emojiManager), initDashboardConfigs(sdk)]);\n\n Logger.debug('[useConnection]', 'connected! (offline)');\n setCurrentUser(sdk.currentUser);\n return sdk.currentUser;\n }\n }\n\n Logger.warn('[useConnection]', 'connect failure', error.message, error.code);\n throw error;\n }\n },\n [sdk, registerPushTokenForCurrentUser, sbOptions.chat.autoPushTokenRegistrationEnabled],\n );\n\n const disconnect = useCallback(async () => {\n Logger.debug('[useConnection]', 'disconnect start');\n\n if (sbOptions.chat.autoPushTokenRegistrationEnabled) {\n Logger.debug('[useConnection]', 'autoPushTokenRegistration enabled, unregister for current user');\n await unregisterPushTokenForCurrentUser().catch((e) => {\n Logger.warn('[useConnection]', 'autoPushToken unregister failure', e);\n });\n }\n\n await sdk.disconnect().then(() => setCurrentUser(undefined));\n Logger.debug('[useConnection]', 'disconnected!');\n }, [sdk, unregisterPushTokenForCurrentUser, sbOptions.chat.autoPushTokenRegistrationEnabled]);\n\n return { connect, disconnect, reconnect: () => sdk.reconnect() };\n};\n\nexport default useConnection;\n"],"mappings":"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"}
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
9
+ var _uikitUtils = require("@sendbird/uikit-utils");
10
+ var _SBUUtils = _interopRequireDefault(require("../libs/SBUUtils"));
11
+ var _useContext = require("./useContext");
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ const useVoiceMessageInput = _ref => {
14
+ let {
15
+ onSend,
16
+ onClose
17
+ } = _ref;
18
+ const {
19
+ alert
20
+ } = (0, _uikitReactNativeFoundation.useAlert)();
21
+ const {
22
+ STRINGS
23
+ } = (0, _useContext.useLocalization)();
24
+ const {
25
+ recorderService,
26
+ playerService,
27
+ fileService
28
+ } = (0, _useContext.usePlatformService)();
29
+ const [status, setStatus] = (0, _react.useState)('idle');
30
+ const [recordingTime, setRecordingTime] = (0, _react.useState)({
31
+ currentTime: 0,
32
+ minDuration: recorderService.options.minDuration,
33
+ maxDuration: recorderService.options.maxDuration
34
+ });
35
+ const [playingTime, setPlayingTime] = (0, _react.useState)({
36
+ currentTime: 0,
37
+ duration: 0
38
+ });
39
+ const recordingPath = (0, _react.useRef)();
40
+ const getVoiceMessageRecordingPath = () => {
41
+ if (!recordingPath.current) throw new Error('No recording path');
42
+ return recordingPath.current;
43
+ };
44
+ const setVoiceMessageRecordingPath = path => {
45
+ recordingPath.current = path;
46
+ };
47
+ const clear = async () => {
48
+ recordingPath.current = undefined;
49
+ await playerService.reset();
50
+ await recorderService.reset();
51
+ setRecordingTime({
52
+ currentTime: 0,
53
+ minDuration: recorderService.options.minDuration,
54
+ maxDuration: recorderService.options.maxDuration
55
+ });
56
+ setPlayingTime({
57
+ currentTime: 0,
58
+ duration: 0
59
+ });
60
+ setStatus('idle');
61
+ };
62
+ return {
63
+ state: {
64
+ status,
65
+ recordingTime,
66
+ playingTime
67
+ },
68
+ actions: {
69
+ async cancel() {
70
+ await clear();
71
+ },
72
+ async startRecording() {
73
+ const granted = await recorderService.requestPermission();
74
+ if (!granted) {
75
+ await onClose();
76
+ alert({
77
+ title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
78
+ message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(STRINGS.LABELS.PERMISSION_MICROPHONE, STRINGS.LABELS.PERMISSION_APP_NAME),
79
+ buttons: [{
80
+ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
81
+ onPress: () => _SBUUtils.default.openSettings()
82
+ }]
83
+ });
84
+ _uikitUtils.Logger.error('Failed to request permission for recorder');
85
+ return;
86
+ }
87
+ if ((0, _uikitUtils.matchesOneOf)(status, ['idle'])) {
88
+ // Before start recording, if player is not idle, reset it.
89
+ if (playerService.state !== 'idle') {
90
+ await playerService.reset();
91
+ }
92
+ const unsubscribeRecording = recorderService.addRecordingListener(_ref2 => {
93
+ let {
94
+ currentTime
95
+ } = _ref2;
96
+ setRecordingTime({
97
+ currentTime,
98
+ maxDuration: recorderService.options.maxDuration,
99
+ minDuration: recorderService.options.minDuration
100
+ });
101
+ setPlayingTime(prev => ({
102
+ ...prev,
103
+ duration: currentTime
104
+ }));
105
+ });
106
+ const unsubscribeState = recorderService.addStateListener(state => {
107
+ switch (state) {
108
+ case 'recording':
109
+ setStatus('recording');
110
+ break;
111
+ case 'completed':
112
+ setStatus('recording_completed');
113
+ unsubscribeRecording();
114
+ unsubscribeState();
115
+ break;
116
+ }
117
+ });
118
+ if (_SBUUtils.default.isExpo()) {
119
+ await recorderService.record();
120
+ if (recorderService.uri) {
121
+ setVoiceMessageRecordingPath({
122
+ recordFilePath: recorderService.uri,
123
+ uri: recorderService.uri
124
+ });
125
+ }
126
+ } else {
127
+ setVoiceMessageRecordingPath(fileService.createRecordFilePath(recorderService.options.extension));
128
+ await recorderService.record(getVoiceMessageRecordingPath().recordFilePath);
129
+ }
130
+ }
131
+ },
132
+ async stopRecording() {
133
+ if ((0, _uikitUtils.matchesOneOf)(status, ['recording'])) {
134
+ await recorderService.stop();
135
+ }
136
+ },
137
+ async playPlayer() {
138
+ const granted = await playerService.requestPermission();
139
+ if (!granted) {
140
+ alert({
141
+ title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
142
+ message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(STRINGS.LABELS.PERMISSION_DEVICE_STORAGE, STRINGS.LABELS.PERMISSION_APP_NAME),
143
+ buttons: [{
144
+ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
145
+ onPress: () => _SBUUtils.default.openSettings()
146
+ }]
147
+ });
148
+ _uikitUtils.Logger.error('Failed to request permission for player');
149
+ return;
150
+ }
151
+ if ((0, _uikitUtils.matchesOneOf)(status, ['recording_completed', 'playing_paused'])) {
152
+ const unsubscribePlayback = playerService.addPlaybackListener(_ref3 => {
153
+ let {
154
+ currentTime,
155
+ duration
156
+ } = _ref3;
157
+ setPlayingTime({
158
+ currentTime,
159
+ duration
160
+ });
161
+ });
162
+ const unsubscribeState = playerService.addStateListener(state => {
163
+ switch (state) {
164
+ case 'playing':
165
+ setStatus('playing');
166
+ break;
167
+ case 'paused':
168
+ {
169
+ setStatus('playing_paused');
170
+ unsubscribeState();
171
+ unsubscribePlayback();
172
+ break;
173
+ }
174
+ case 'stopped':
175
+ {
176
+ setStatus('playing_paused');
177
+ unsubscribeState();
178
+ unsubscribePlayback();
179
+ setPlayingTime(prev => ({
180
+ ...prev,
181
+ currentTime: 0
182
+ }));
183
+ break;
184
+ }
185
+ }
186
+ });
187
+ await playerService.play(getVoiceMessageRecordingPath().recordFilePath);
188
+ }
189
+ },
190
+ async pausePlayer() {
191
+ if ((0, _uikitUtils.matchesOneOf)(status, ['playing'])) {
192
+ await playerService.pause();
193
+ }
194
+ },
195
+ async send() {
196
+ if ((0, _uikitUtils.matchesOneOf)(status, ['recording', 'recording_completed', 'playing', 'playing_paused']) && recordingPath.current) {
197
+ const voiceFile = (0, _uikitUtils.getVoiceMessageFileObject)(recordingPath.current.uri, recorderService.options.extension);
198
+ onSend(voiceFile, Math.floor(recordingTime.currentTime));
199
+ await clear();
200
+ }
201
+ }
202
+ }
203
+ };
204
+ };
205
+ var _default = useVoiceMessageInput;
206
+ exports.default = _default;
207
+ //# sourceMappingURL=useVoiceMessageInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_uikitReactNativeFoundation","_uikitUtils","_SBUUtils","_interopRequireDefault","_useContext","obj","__esModule","default","useVoiceMessageInput","_ref","onSend","onClose","alert","useAlert","STRINGS","useLocalization","recorderService","playerService","fileService","usePlatformService","status","setStatus","useState","recordingTime","setRecordingTime","currentTime","minDuration","options","maxDuration","playingTime","setPlayingTime","duration","recordingPath","useRef","getVoiceMessageRecordingPath","current","Error","setVoiceMessageRecordingPath","path","clear","undefined","reset","state","actions","cancel","startRecording","granted","requestPermission","title","DIALOG","ALERT_PERMISSIONS_TITLE","message","ALERT_PERMISSIONS_MESSAGE","LABELS","PERMISSION_MICROPHONE","PERMISSION_APP_NAME","buttons","text","ALERT_PERMISSIONS_OK","onPress","SBUUtils","openSettings","Logger","error","matchesOneOf","unsubscribeRecording","addRecordingListener","_ref2","prev","unsubscribeState","addStateListener","isExpo","record","uri","recordFilePath","createRecordFilePath","extension","stopRecording","stop","playPlayer","PERMISSION_DEVICE_STORAGE","unsubscribePlayback","addPlaybackListener","_ref3","play","pausePlayer","pause","send","voiceFile","getVoiceMessageFileObject","Math","floor","_default","exports"],"sources":["useVoiceMessageInput.ts"],"sourcesContent":["import { useRef, useState } from 'react';\n\nimport { useAlert } from '@sendbird/uikit-react-native-foundation';\nimport { Logger, getVoiceMessageFileObject, matchesOneOf } from '@sendbird/uikit-utils';\n\nimport SBUUtils from '../libs/SBUUtils';\nimport { FileType } from '../platform/types';\nimport { useLocalization, usePlatformService } from './useContext';\n\ntype State = {\n /**\n * Status\n *\n * idle:\n * - cancel(): idle\n * - startRecording(): recording\n * recording:\n * - cancel(): idle\n * - stopRecording(): recording_completed\n * - send(): recording_completed > idle\n * recording_completed:\n * - cancel(): idle\n * - playPlayer(): playing\n * - send(): idle\n * playing:\n * - cancel(): idle\n * - pausePlayer(): playing_paused\n * - send(): idle\n * playing_paused:\n * - cancel(): idle\n * - playPlayer(): playing\n * - send(): idle\n * */\n status: 'idle' | 'recording' | 'recording_completed' | 'playing' | 'playing_paused';\n recordingTime: {\n currentTime: number;\n minDuration: number;\n maxDuration: number;\n };\n playingTime: {\n currentTime: number;\n duration: number;\n };\n};\n\nexport interface VoiceMessageInputResult {\n actions: {\n cancel: () => Promise<void>;\n startRecording: () => Promise<void>;\n stopRecording: () => Promise<void>;\n playPlayer: () => Promise<void>;\n pausePlayer: () => Promise<void>;\n send: () => Promise<void>;\n };\n state: State;\n}\n\ntype Props = {\n onClose: () => Promise<void>;\n onSend: (voiceFile: FileType, duration: number) => void;\n};\n\nconst useVoiceMessageInput = ({ onSend, onClose }: Props): VoiceMessageInputResult => {\n const { alert } = useAlert();\n const { STRINGS } = useLocalization();\n const { recorderService, playerService, fileService } = usePlatformService();\n const [status, setStatus] = useState<State['status']>('idle');\n\n const [recordingTime, setRecordingTime] = useState({\n currentTime: 0,\n minDuration: recorderService.options.minDuration,\n maxDuration: recorderService.options.maxDuration,\n });\n const [playingTime, setPlayingTime] = useState({\n currentTime: 0,\n duration: 0,\n });\n\n const recordingPath = useRef<{ recordFilePath: string; uri: string }>();\n const getVoiceMessageRecordingPath = () => {\n if (!recordingPath.current) throw new Error('No recording path');\n return recordingPath.current;\n };\n const setVoiceMessageRecordingPath = (path: { recordFilePath: string; uri: string }) => {\n recordingPath.current = path;\n };\n\n const clear = async () => {\n recordingPath.current = undefined;\n await playerService.reset();\n await recorderService.reset();\n setRecordingTime({\n currentTime: 0,\n minDuration: recorderService.options.minDuration,\n maxDuration: recorderService.options.maxDuration,\n });\n setPlayingTime({\n currentTime: 0,\n duration: 0,\n });\n setStatus('idle');\n };\n\n return {\n state: {\n status,\n recordingTime,\n playingTime,\n },\n actions: {\n async cancel() {\n await clear();\n },\n async startRecording() {\n const granted = await recorderService.requestPermission();\n if (!granted) {\n await onClose();\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_MICROPHONE,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n Logger.error('Failed to request permission for recorder');\n return;\n }\n\n if (matchesOneOf(status, ['idle'])) {\n // Before start recording, if player is not idle, reset it.\n if (playerService.state !== 'idle') {\n await playerService.reset();\n }\n\n const unsubscribeRecording = recorderService.addRecordingListener(({ currentTime }) => {\n setRecordingTime({\n currentTime,\n maxDuration: recorderService.options.maxDuration,\n minDuration: recorderService.options.minDuration,\n });\n setPlayingTime((prev) => ({ ...prev, duration: currentTime }));\n });\n\n const unsubscribeState = recorderService.addStateListener((state) => {\n switch (state) {\n case 'recording':\n setStatus('recording');\n break;\n case 'completed':\n setStatus('recording_completed');\n unsubscribeRecording();\n unsubscribeState();\n break;\n }\n });\n\n if (SBUUtils.isExpo()) {\n await recorderService.record();\n if (recorderService.uri) {\n setVoiceMessageRecordingPath({ recordFilePath: recorderService.uri, uri: recorderService.uri });\n }\n } else {\n setVoiceMessageRecordingPath(fileService.createRecordFilePath(recorderService.options.extension));\n await recorderService.record(getVoiceMessageRecordingPath().recordFilePath);\n }\n }\n },\n async stopRecording() {\n if (matchesOneOf(status, ['recording'])) {\n await recorderService.stop();\n }\n },\n async playPlayer() {\n const granted = await playerService.requestPermission();\n if (!granted) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_DEVICE_STORAGE,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n Logger.error('Failed to request permission for player');\n return;\n }\n\n if (matchesOneOf(status, ['recording_completed', 'playing_paused'])) {\n const unsubscribePlayback = playerService.addPlaybackListener(({ currentTime, duration }) => {\n setPlayingTime({ currentTime, duration });\n });\n\n const unsubscribeState = playerService.addStateListener((state) => {\n switch (state) {\n case 'playing':\n setStatus('playing');\n break;\n case 'paused': {\n setStatus('playing_paused');\n unsubscribeState();\n unsubscribePlayback();\n break;\n }\n case 'stopped': {\n setStatus('playing_paused');\n unsubscribeState();\n unsubscribePlayback();\n setPlayingTime((prev) => ({ ...prev, currentTime: 0 }));\n break;\n }\n }\n });\n\n await playerService.play(getVoiceMessageRecordingPath().recordFilePath);\n }\n },\n async pausePlayer() {\n if (matchesOneOf(status, ['playing'])) {\n await playerService.pause();\n }\n },\n async send() {\n if (\n matchesOneOf(status, ['recording', 'recording_completed', 'playing', 'playing_paused']) &&\n recordingPath.current\n ) {\n const voiceFile = getVoiceMessageFileObject(recordingPath.current.uri, recorderService.options.extension);\n onSend(voiceFile, Math.floor(recordingTime.currentTime));\n await clear();\n }\n },\n },\n };\n};\n\nexport default useVoiceMessageInput;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,2BAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAEA,IAAAG,SAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAEA,IAAAK,WAAA,GAAAL,OAAA;AAAmE,SAAAI,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAuDnE,MAAMG,oBAAoB,GAAGC,IAAA,IAAyD;EAAA,IAAxD;IAAEC,MAAM;IAAEC;EAAe,CAAC,GAAAF,IAAA;EACtD,MAAM;IAAEG;EAAM,CAAC,GAAG,IAAAC,oCAAQ,GAAE;EAC5B,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,2BAAe,GAAE;EACrC,MAAM;IAAEC,eAAe;IAAEC,aAAa;IAAEC;EAAY,CAAC,GAAG,IAAAC,8BAAkB,GAAE;EAC5E,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAC,eAAQ,EAAkB,MAAM,CAAC;EAE7D,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAG,IAAAF,eAAQ,EAAC;IACjDG,WAAW,EAAE,CAAC;IACdC,WAAW,EAAEV,eAAe,CAACW,OAAO,CAACD,WAAW;IAChDE,WAAW,EAAEZ,eAAe,CAACW,OAAO,CAACC;EACvC,CAAC,CAAC;EACF,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAAR,eAAQ,EAAC;IAC7CG,WAAW,EAAE,CAAC;IACdM,QAAQ,EAAE;EACZ,CAAC,CAAC;EAEF,MAAMC,aAAa,GAAG,IAAAC,aAAM,GAA2C;EACvE,MAAMC,4BAA4B,GAAGA,CAAA,KAAM;IACzC,IAAI,CAACF,aAAa,CAACG,OAAO,EAAE,MAAM,IAAIC,KAAK,CAAC,mBAAmB,CAAC;IAChE,OAAOJ,aAAa,CAACG,OAAO;EAC9B,CAAC;EACD,MAAME,4BAA4B,GAAIC,IAA6C,IAAK;IACtFN,aAAa,CAACG,OAAO,GAAGG,IAAI;EAC9B,CAAC;EAED,MAAMC,KAAK,GAAG,MAAAA,CAAA,KAAY;IACxBP,aAAa,CAACG,OAAO,GAAGK,SAAS;IACjC,MAAMvB,aAAa,CAACwB,KAAK,EAAE;IAC3B,MAAMzB,eAAe,CAACyB,KAAK,EAAE;IAC7BjB,gBAAgB,CAAC;MACfC,WAAW,EAAE,CAAC;MACdC,WAAW,EAAEV,eAAe,CAACW,OAAO,CAACD,WAAW;MAChDE,WAAW,EAAEZ,eAAe,CAACW,OAAO,CAACC;IACvC,CAAC,CAAC;IACFE,cAAc,CAAC;MACbL,WAAW,EAAE,CAAC;MACdM,QAAQ,EAAE;IACZ,CAAC,CAAC;IACFV,SAAS,CAAC,MAAM,CAAC;EACnB,CAAC;EAED,OAAO;IACLqB,KAAK,EAAE;MACLtB,MAAM;MACNG,aAAa;MACbM;IACF,CAAC;IACDc,OAAO,EAAE;MACP,MAAMC,MAAMA,CAAA,EAAG;QACb,MAAML,KAAK,EAAE;MACf,CAAC;MACD,MAAMM,cAAcA,CAAA,EAAG;QACrB,MAAMC,OAAO,GAAG,MAAM9B,eAAe,CAAC+B,iBAAiB,EAAE;QACzD,IAAI,CAACD,OAAO,EAAE;UACZ,MAAMnC,OAAO,EAAE;UACfC,KAAK,CAAC;YACJoC,KAAK,EAAElC,OAAO,CAACmC,MAAM,CAACC,uBAAuB;YAC7CC,OAAO,EAAErC,OAAO,CAACmC,MAAM,CAACG,yBAAyB,CAC/CtC,OAAO,CAACuC,MAAM,CAACC,qBAAqB,EACpCxC,OAAO,CAACuC,MAAM,CAACE,mBAAmB,CACnC;YACDC,OAAO,EAAE,CAAC;cAAEC,IAAI,EAAE3C,OAAO,CAACmC,MAAM,CAACS,oBAAoB;cAAEC,OAAO,EAAEA,CAAA,KAAMC,iBAAQ,CAACC,YAAY;YAAG,CAAC;UACjG,CAAC,CAAC;UACFC,kBAAM,CAACC,KAAK,CAAC,2CAA2C,CAAC;UACzD;QACF;QAEA,IAAI,IAAAC,wBAAY,EAAC5C,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;UAClC;UACA,IAAIH,aAAa,CAACyB,KAAK,KAAK,MAAM,EAAE;YAClC,MAAMzB,aAAa,CAACwB,KAAK,EAAE;UAC7B;UAEA,MAAMwB,oBAAoB,GAAGjD,eAAe,CAACkD,oBAAoB,CAACC,KAAA,IAAqB;YAAA,IAApB;cAAE1C;YAAY,CAAC,GAAA0C,KAAA;YAChF3C,gBAAgB,CAAC;cACfC,WAAW;cACXG,WAAW,EAAEZ,eAAe,CAACW,OAAO,CAACC,WAAW;cAChDF,WAAW,EAAEV,eAAe,CAACW,OAAO,CAACD;YACvC,CAAC,CAAC;YACFI,cAAc,CAAEsC,IAAI,KAAM;cAAE,GAAGA,IAAI;cAAErC,QAAQ,EAAEN;YAAY,CAAC,CAAC,CAAC;UAChE,CAAC,CAAC;UAEF,MAAM4C,gBAAgB,GAAGrD,eAAe,CAACsD,gBAAgB,CAAE5B,KAAK,IAAK;YACnE,QAAQA,KAAK;cACX,KAAK,WAAW;gBACdrB,SAAS,CAAC,WAAW,CAAC;gBACtB;cACF,KAAK,WAAW;gBACdA,SAAS,CAAC,qBAAqB,CAAC;gBAChC4C,oBAAoB,EAAE;gBACtBI,gBAAgB,EAAE;gBAClB;YAAM;UAEZ,CAAC,CAAC;UAEF,IAAIT,iBAAQ,CAACW,MAAM,EAAE,EAAE;YACrB,MAAMvD,eAAe,CAACwD,MAAM,EAAE;YAC9B,IAAIxD,eAAe,CAACyD,GAAG,EAAE;cACvBpC,4BAA4B,CAAC;gBAAEqC,cAAc,EAAE1D,eAAe,CAACyD,GAAG;gBAAEA,GAAG,EAAEzD,eAAe,CAACyD;cAAI,CAAC,CAAC;YACjG;UACF,CAAC,MAAM;YACLpC,4BAA4B,CAACnB,WAAW,CAACyD,oBAAoB,CAAC3D,eAAe,CAACW,OAAO,CAACiD,SAAS,CAAC,CAAC;YACjG,MAAM5D,eAAe,CAACwD,MAAM,CAACtC,4BAA4B,EAAE,CAACwC,cAAc,CAAC;UAC7E;QACF;MACF,CAAC;MACD,MAAMG,aAAaA,CAAA,EAAG;QACpB,IAAI,IAAAb,wBAAY,EAAC5C,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE;UACvC,MAAMJ,eAAe,CAAC8D,IAAI,EAAE;QAC9B;MACF,CAAC;MACD,MAAMC,UAAUA,CAAA,EAAG;QACjB,MAAMjC,OAAO,GAAG,MAAM7B,aAAa,CAAC8B,iBAAiB,EAAE;QACvD,IAAI,CAACD,OAAO,EAAE;UACZlC,KAAK,CAAC;YACJoC,KAAK,EAAElC,OAAO,CAACmC,MAAM,CAACC,uBAAuB;YAC7CC,OAAO,EAAErC,OAAO,CAACmC,MAAM,CAACG,yBAAyB,CAC/CtC,OAAO,CAACuC,MAAM,CAAC2B,yBAAyB,EACxClE,OAAO,CAACuC,MAAM,CAACE,mBAAmB,CACnC;YACDC,OAAO,EAAE,CAAC;cAAEC,IAAI,EAAE3C,OAAO,CAACmC,MAAM,CAACS,oBAAoB;cAAEC,OAAO,EAAEA,CAAA,KAAMC,iBAAQ,CAACC,YAAY;YAAG,CAAC;UACjG,CAAC,CAAC;UACFC,kBAAM,CAACC,KAAK,CAAC,yCAAyC,CAAC;UACvD;QACF;QAEA,IAAI,IAAAC,wBAAY,EAAC5C,MAAM,EAAE,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC,EAAE;UACnE,MAAM6D,mBAAmB,GAAGhE,aAAa,CAACiE,mBAAmB,CAACC,KAAA,IAA+B;YAAA,IAA9B;cAAE1D,WAAW;cAAEM;YAAS,CAAC,GAAAoD,KAAA;YACtFrD,cAAc,CAAC;cAAEL,WAAW;cAAEM;YAAS,CAAC,CAAC;UAC3C,CAAC,CAAC;UAEF,MAAMsC,gBAAgB,GAAGpD,aAAa,CAACqD,gBAAgB,CAAE5B,KAAK,IAAK;YACjE,QAAQA,KAAK;cACX,KAAK,SAAS;gBACZrB,SAAS,CAAC,SAAS,CAAC;gBACpB;cACF,KAAK,QAAQ;gBAAE;kBACbA,SAAS,CAAC,gBAAgB,CAAC;kBAC3BgD,gBAAgB,EAAE;kBAClBY,mBAAmB,EAAE;kBACrB;gBACF;cACA,KAAK,SAAS;gBAAE;kBACd5D,SAAS,CAAC,gBAAgB,CAAC;kBAC3BgD,gBAAgB,EAAE;kBAClBY,mBAAmB,EAAE;kBACrBnD,cAAc,CAAEsC,IAAI,KAAM;oBAAE,GAAGA,IAAI;oBAAE3C,WAAW,EAAE;kBAAE,CAAC,CAAC,CAAC;kBACvD;gBACF;YAAC;UAEL,CAAC,CAAC;UAEF,MAAMR,aAAa,CAACmE,IAAI,CAAClD,4BAA4B,EAAE,CAACwC,cAAc,CAAC;QACzE;MACF,CAAC;MACD,MAAMW,WAAWA,CAAA,EAAG;QAClB,IAAI,IAAArB,wBAAY,EAAC5C,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE;UACrC,MAAMH,aAAa,CAACqE,KAAK,EAAE;QAC7B;MACF,CAAC;MACD,MAAMC,IAAIA,CAAA,EAAG;QACX,IACE,IAAAvB,wBAAY,EAAC5C,MAAM,EAAE,CAAC,WAAW,EAAE,qBAAqB,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,IACvFY,aAAa,CAACG,OAAO,EACrB;UACA,MAAMqD,SAAS,GAAG,IAAAC,qCAAyB,EAACzD,aAAa,CAACG,OAAO,CAACsC,GAAG,EAAEzD,eAAe,CAACW,OAAO,CAACiD,SAAS,CAAC;UACzGlE,MAAM,CAAC8E,SAAS,EAAEE,IAAI,CAACC,KAAK,CAACpE,aAAa,CAACE,WAAW,CAAC,CAAC;UACxD,MAAMc,KAAK,EAAE;QACf;MACF;IACF;EACF,CAAC;AACH,CAAC;AAAC,IAAAqD,QAAA,GAEapF,oBAAoB;AAAAqF,OAAA,CAAAtF,OAAA,GAAAqF,QAAA"}
@@ -60,10 +60,14 @@ var _exportNames = {
60
60
  createNativeClipboardService: true,
61
61
  createNativeNotificationService: true,
62
62
  createNativeMediaService: true,
63
+ createNativePlayerService: true,
64
+ createNativeRecorderService: true,
63
65
  createExpoFileService: true,
64
66
  createExpoClipboardService: true,
65
67
  createExpoNotificationService: true,
66
68
  createExpoMediaService: true,
69
+ createExpoPlayerService: true,
70
+ createExpoRecorderService: true,
67
71
  SendbirdUIKitContainer: true,
68
72
  SendbirdUIKit: true,
69
73
  SBUError: true,
@@ -279,6 +283,18 @@ Object.defineProperty(exports, "createExpoNotificationService", {
279
283
  return _createNotificationService2.default;
280
284
  }
281
285
  });
286
+ Object.defineProperty(exports, "createExpoPlayerService", {
287
+ enumerable: true,
288
+ get: function () {
289
+ return _createPlayerService2.default;
290
+ }
291
+ });
292
+ Object.defineProperty(exports, "createExpoRecorderService", {
293
+ enumerable: true,
294
+ get: function () {
295
+ return _createRecorderService2.default;
296
+ }
297
+ });
282
298
  Object.defineProperty(exports, "createGroupChannelBannedUsersFragment", {
283
299
  enumerable: true,
284
300
  get: function () {
@@ -381,6 +397,18 @@ Object.defineProperty(exports, "createNativeNotificationService", {
381
397
  return _createNotificationService.default;
382
398
  }
383
399
  });
400
+ Object.defineProperty(exports, "createNativePlayerService", {
401
+ enumerable: true,
402
+ get: function () {
403
+ return _createPlayerService.default;
404
+ }
405
+ });
406
+ Object.defineProperty(exports, "createNativeRecorderService", {
407
+ enumerable: true,
408
+ get: function () {
409
+ return _createRecorderService.default;
410
+ }
411
+ });
384
412
  Object.defineProperty(exports, "createOpenChannelBannedUsersFragment", {
385
413
  enumerable: true,
386
414
  get: function () {
@@ -531,10 +559,14 @@ var _createFileService = _interopRequireDefault(require("./platform/createFileSe
531
559
  var _createClipboardService = _interopRequireDefault(require("./platform/createClipboardService.native"));
532
560
  var _createNotificationService = _interopRequireDefault(require("./platform/createNotificationService.native"));
533
561
  var _createMediaService = _interopRequireDefault(require("./platform/createMediaService.native"));
562
+ var _createPlayerService = _interopRequireDefault(require("./platform/createPlayerService.native"));
563
+ var _createRecorderService = _interopRequireDefault(require("./platform/createRecorderService.native"));
534
564
  var _createFileService2 = _interopRequireDefault(require("./platform/createFileService.expo"));
535
565
  var _createClipboardService2 = _interopRequireDefault(require("./platform/createClipboardService.expo"));
536
566
  var _createNotificationService2 = _interopRequireDefault(require("./platform/createNotificationService.expo"));
537
567
  var _createMediaService2 = _interopRequireDefault(require("./platform/createMediaService.expo"));
568
+ var _createPlayerService2 = _interopRequireDefault(require("./platform/createPlayerService.expo"));
569
+ var _createRecorderService2 = _interopRequireDefault(require("./platform/createRecorderService.expo"));
538
570
  var _types = require("./platform/types");
539
571
  Object.keys(_types).forEach(function (key) {
540
572
  if (key === "default" || key === "__esModule") return;