@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
package/README.md CHANGED
@@ -78,6 +78,7 @@ Add the following permissions to your `android/app/src/main/AndroidManifest.xml`
78
78
  package="com.your.app">
79
79
 
80
80
  <uses-permission android:name="android.permission.CAMERA" />
81
+ <uses-permission android:name="android.permission.RECORD_AUDIO" />
81
82
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
82
83
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" />
83
84
  <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
@@ -123,6 +124,8 @@ const App = () => {
123
124
  notification: NotificationService,
124
125
  clipboard: ClipboardService,
125
126
  media: MediaService,
127
+ recorder: RecorderService,
128
+ player: PlayerService,
126
129
  }}
127
130
  >
128
131
  {/* ... */}
@@ -134,7 +137,7 @@ const App = () => {
134
137
  In order to implement the interfaces to your React Native app more easily, we provide various helper functions for each interface.
135
138
 
136
139
  > **NOTE**: Helper function is not required! You can implement it with native modules you're using.
137
- > More details about PlatformService interfaces, please see [here](https://sendbird.com/docs/uikit/v3/react-native/core-components/provider/platformserviceprovider)
140
+ > More details about PlatformService interfaces, please see [here](https://sendbird.com/docs/chat/uikit/v3/react-native/core-components/provider/platformserviceprovider)
138
141
 
139
142
  **Using React Native CLI**
140
143
 
@@ -147,6 +150,7 @@ npm install react-native-video \
147
150
  react-native-image-picker \
148
151
  react-native-document-picker \
149
152
  react-native-create-thumbnail \
153
+ react-native-audio-recorder-player \
150
154
  @react-native-clipboard/clipboard \
151
155
  @react-native-camera-roll/camera-roll \
152
156
  @react-native-firebase/app \
@@ -157,34 +161,45 @@ npx pod-install
157
161
  ```
158
162
 
159
163
  ```ts
160
- import * as ImageResizer from '@bam.tech/react-native-image-resizer';
161
- import { CameraRoll } from '@react-native-camera-roll/camera-roll';
162
164
  import Clipboard from '@react-native-clipboard/clipboard';
165
+ import { CameraRoll } from '@react-native-camera-roll/camera-roll';
163
166
  import RNFBMessaging from '@react-native-firebase/messaging';
164
- import * as CreateThumbnail from 'react-native-create-thumbnail';
167
+ import Video from 'react-native-video';
165
168
  import * as DocumentPicker from 'react-native-document-picker';
166
169
  import * as FileAccess from 'react-native-file-access';
167
170
  import * as ImagePicker from 'react-native-image-picker';
168
171
  import * as Permissions from 'react-native-permissions';
169
- import Video from 'react-native-video';
170
-
171
- const NativeClipboardService = createNativeClipboardService(Clipboard);
172
- const NativeNotificationService = createNativeNotificationService({
173
- messagingModule: RNFBMessaging,
174
- permissionModule: Permissions,
175
- });
176
- const NativeFileService = createNativeFileService({
177
- fsModule: FileAccess,
178
- permissionModule: Permissions,
179
- imagePickerModule: ImagePicker,
180
- mediaLibraryModule: CameraRoll,
181
- documentPickerModule: DocumentPicker,
182
- });
183
- const NativeMediaService = createNativeMediaService({
184
- VideoComponent: Video,
185
- thumbnailModule: CreateThumbnail,
186
- imageResizerModule: ImageResizer,
187
- });
172
+ import * as CreateThumbnail from 'react-native-create-thumbnail';
173
+ import * as ImageResizer from '@bam.tech/react-native-image-resizer';
174
+ import * as AudioRecorderPlayer from 'react-native-audio-recorder-player';
175
+
176
+ const nativePlatformServices = {
177
+ clipboard: createNativeClipboardService(Clipboard),
178
+ notification: createNativeNotificationService({
179
+ messagingModule: RNFBMessaging,
180
+ permissionModule: Permissions,
181
+ }),
182
+ file: createNativeFileService({
183
+ imagePickerModule: ImagePicker,
184
+ documentPickerModule: DocumentPicker,
185
+ permissionModule: Permissions,
186
+ fsModule: FileAccess,
187
+ mediaLibraryModule: CameraRoll,
188
+ }),
189
+ media: createNativeMediaService({
190
+ VideoComponent: Video,
191
+ thumbnailModule: CreateThumbnail,
192
+ imageResizerModule: ImageResizer,
193
+ }),
194
+ player: createNativePlayerService({
195
+ audioRecorderModule: AudioRecorderPlayer,
196
+ permissionModule: Permissions,
197
+ }),
198
+ recorder: createNativeRecorderService({
199
+ audioRecorderModule: AudioRecorderPlayer,
200
+ permissionModule: Permissions,
201
+ }),
202
+ };
188
203
  ```
189
204
 
190
205
  **Using Expo CLI**
@@ -204,30 +219,38 @@ expo install expo-image-picker \
204
219
  ```
205
220
 
206
221
  ```ts
207
- import * as ExpoAV from 'expo-av';
208
222
  import * as ExpoClipboard from 'expo-clipboard';
209
223
  import * as ExpoDocumentPicker from 'expo-document-picker';
210
224
  import * as ExpoFS from 'expo-file-system';
211
- import * as ExpoImageManipulator from 'expo-image-manipulator';
212
225
  import * as ExpoImagePicker from 'expo-image-picker';
213
226
  import * as ExpoMediaLibrary from 'expo-media-library';
214
227
  import * as ExpoNotifications from 'expo-notifications';
228
+ import * as ExpoAV from 'expo-av';
215
229
  import * as ExpoVideoThumbnail from 'expo-video-thumbnails';
230
+ import * as ExpoImageManipulator from 'expo-image-manipulator';
216
231
 
217
- const ExpoNotificationService = createExpoNotificationService(ExpoNotifications);
218
- const ExpoClipboardService = createExpoClipboardService(ExpoClipboard);
219
- const ExpoFileService = createExpoFileService({
220
- fsModule: ExpoFS,
221
- imagePickerModule: ExpoImagePicker,
222
- mediaLibraryModule: ExpoMediaLibrary,
223
- documentPickerModule: ExpoDocumentPicker,
224
- });
225
- const ExpoMediaService = createExpoMediaService({
226
- avModule: ExpoAV,
227
- thumbnailModule: ExpoVideoThumbnail,
228
- imageManipulator: ExpoImageManipulator,
229
- fsModule: ExpoFS,
230
- });
232
+ const expoPlatformServices = {
233
+ clipboard: createExpoClipboardService(ExpoClipboard),
234
+ notification: createExpoNotificationService(ExpoNotifications),
235
+ file: createExpoFileService({
236
+ fsModule: ExpoFS,
237
+ imagePickerModule: ExpoImagePicker,
238
+ mediaLibraryModule: ExpoMediaLibrary,
239
+ documentPickerModule: ExpoDocumentPicker,
240
+ }),
241
+ media: createExpoMediaService({
242
+ avModule: ExpoAV,
243
+ thumbnailModule: ExpoVideoThumbnail,
244
+ imageManipulator: ExpoImageManipulator,
245
+ fsModule: ExpoFS,
246
+ }),
247
+ player: createExpoPlayerService({
248
+ avModule: ExpoAV,
249
+ }),
250
+ recorder: createExpoRecorderService({
251
+ avModule: ExpoAV,
252
+ }),
253
+ };
231
254
  ```
232
255
 
233
256
  ### Local caching (required)
@@ -236,7 +259,7 @@ You can implement Local caching easily.
236
259
 
237
260
  ```shell
238
261
  npm i @react-native-async-storage/async-storage
239
- npx pod-isntall
262
+ npx pod-install
240
263
  ```
241
264
 
242
265
  ```tsx
@@ -280,7 +303,7 @@ const App = () => {
280
303
  ### Integration with navigation library
281
304
 
282
305
  Now you can create a screen and integrate it with a navigation library like [`react-navigation`](https://reactnavigation.org/).
283
- See more details on [here](https://st.sendbird.com/docs/uikit/v3/react-native/introduction/screen-navigation)
306
+ See more details on [here](https://sendbird.com/docs/chat/uikit/v3/react-native/introduction/screen-navigation)
284
307
 
285
308
  The example below shows how to integrate using `react-navigation`.
286
309
 
@@ -420,6 +443,8 @@ const App = () => {
420
443
  notification: NotificationService,
421
444
  clipboard: ClipboardService,
422
445
  media: MediaService,
446
+ recorder: RecorderService,
447
+ player: PlayerService,
423
448
  }}
424
449
  >
425
450
  <Navigation />
@@ -429,4 +454,4 @@ const App = () => {
429
454
  ```
430
455
 
431
456
  > You can use sendbird sdk using `useSendbirdChat()` hook, and you can connect or disconnect using `useConnection()` hook.
432
- > for more details about hooks, please refer to our [docs](https://sendbird.com/docs/uikit/v3/react-native/core-components/hooks)
457
+ > for more details about hooks, please refer to our [docs](https://sendbird.com/docs/chat/uikit/v3/react-native/core-components/hooks)
@@ -13,6 +13,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
13
13
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
14
  const EditInput = /*#__PURE__*/(0, _react.forwardRef)(function EditInput(_ref, ref) {
15
15
  let {
16
+ style,
16
17
  text,
17
18
  onChangeText,
18
19
  messageToEdit,
@@ -62,7 +63,7 @@ const EditInput = /*#__PURE__*/(0, _react.forwardRef)(function EditInput(_ref, r
62
63
  editable: !inputDisabled,
63
64
  autoFocus: autoFocus,
64
65
  onChangeText: onChangeText,
65
- style: styles.input,
66
+ style: style,
66
67
  placeholder: STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_ACTIVE,
67
68
  onSelectionChange: onSelectionChange
68
69
  }, mentionManager.textToMentionedComponents(text, mentionedUsers, sbOptions.uikit.groupChannel.channel.enableMention))), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
@@ -87,16 +88,6 @@ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
87
88
  flexDirection: 'column',
88
89
  alignItems: 'center'
89
90
  },
90
- input: {
91
- flex: 1,
92
- marginRight: 4,
93
- minHeight: 36,
94
- maxHeight: 36 * _reactNative.Platform.select({
95
- ios: 2.5,
96
- default: 2
97
- }),
98
- borderRadius: 20
99
- },
100
91
  inputWrapper: {
101
92
  flexDirection: 'row'
102
93
  },
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_message","_uikitReactNativeFoundation","_useContext","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","EditInput","forwardRef","_ref","ref","text","onChangeText","messageToEdit","setMessageToEdit","onPressUpdateUserMessage","onSelectionChange","autoFocus","mentionedUsers","inputDisabled","mentionManager","sbOptions","useSendbirdChat","STRINGS","useLocalization","toast","useToast","onPressCancel","onPressSave","isUserMessage","mentionType","MentionType","USERS","mentionedUserIds","map","it","user","userId","mentionedMessageTemplate","textToMentionedMessageTemplate","uikit","groupChannel","channel","enableMention","message","catch","onFailureToUpdate","show","TOAST","UPDATE_MSG_ERROR","createElement","View","style","styles","editInputContainer","inputWrapper","TextInput","multiline","disableFullscreenUI","editable","input","placeholder","LABELS","CHANNEL_INPUT_PLACEHOLDER_ACTIVE","textToMentionedComponents","marginTop","flexDirection","Button","variant","onPress","CHANNEL_INPUT_EDIT_CANCEL","space","CHANNEL_INPUT_EDIT_OK","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flex","marginRight","minHeight","maxHeight","Platform","select","ios","borderRadius","_default","exports"],"sources":["EditInput.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport {\n NativeSyntheticEvent,\n Platform,\n TextInput as RNTextInput,\n TextInputSelectionChangeEventData,\n View,\n} from 'react-native';\n\nimport { MentionType } from '@sendbird/chat/message';\nimport { Button, TextInput, createStyleSheet, useToast } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdFileMessage, SendbirdUserMessage } from '@sendbird/uikit-utils';\n\nimport { useLocalization, useSendbirdChat } from '../../hooks/useContext';\nimport type { MentionedUser } from '../../types';\nimport type { ChannelInputProps } from './index';\n\ninterface EditInputProps extends ChannelInputProps {\n text: string;\n onChangeText: (val: string) => void;\n messageToEdit: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n onSelectionChange: (e: NativeSyntheticEvent<TextInputSelectionChangeEventData>) => void;\n autoFocus: boolean;\n mentionedUsers: MentionedUser[];\n}\n\nconst EditInput = forwardRef<RNTextInput, EditInputProps>(function EditInput(\n {\n text,\n onChangeText,\n messageToEdit,\n setMessageToEdit,\n onPressUpdateUserMessage,\n onSelectionChange,\n autoFocus,\n mentionedUsers,\n inputDisabled,\n },\n ref,\n) {\n const { mentionManager, sbOptions } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n\n const onPressCancel = () => {\n setMessageToEdit();\n onChangeText('');\n };\n\n const onPressSave = () => {\n if (messageToEdit.isUserMessage()) {\n const mentionType = MentionType.USERS;\n const mentionedUserIds = mentionedUsers.map((it) => it.user.userId);\n const mentionedMessageTemplate = mentionManager.textToMentionedMessageTemplate(\n text,\n mentionedUsers,\n sbOptions.uikit.groupChannel.channel.enableMention,\n );\n\n onPressUpdateUserMessage(messageToEdit, {\n message: text,\n mentionType,\n mentionedUserIds,\n mentionedMessageTemplate,\n }).catch(onFailureToUpdate);\n }\n setMessageToEdit();\n onChangeText('');\n };\n\n const onFailureToUpdate = () => toast.show(STRINGS.TOAST.UPDATE_MSG_ERROR, 'error');\n\n return (\n <View style={styles.editInputContainer}>\n <View style={styles.inputWrapper}>\n <TextInput\n ref={ref}\n multiline\n disableFullscreenUI\n editable={!inputDisabled}\n autoFocus={autoFocus}\n onChangeText={onChangeText}\n style={styles.input}\n placeholder={STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_ACTIVE}\n onSelectionChange={onSelectionChange}\n >\n {mentionManager.textToMentionedComponents(\n text,\n mentionedUsers,\n sbOptions.uikit.groupChannel.channel.enableMention,\n )}\n </TextInput>\n </View>\n <View style={{ marginTop: 8, flexDirection: 'row' }}>\n <Button variant={'text'} onPress={onPressCancel}>\n {STRINGS.LABELS.CHANNEL_INPUT_EDIT_CANCEL}\n </Button>\n <View style={styles.space} />\n <Button variant={'contained'} onPress={onPressSave}>\n {STRINGS.LABELS.CHANNEL_INPUT_EDIT_OK}\n </Button>\n </View>\n </View>\n );\n});\n\nconst styles = createStyleSheet({\n editInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 16,\n flexDirection: 'column',\n alignItems: 'center',\n },\n input: {\n flex: 1,\n marginRight: 4,\n minHeight: 36,\n maxHeight: 36 * Platform.select({ ios: 2.5, default: 2 }),\n borderRadius: 20,\n },\n inputWrapper: {\n flexDirection: 'row',\n },\n space: {\n flex: 1,\n },\n});\n\nexport default EditInput;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_message","_uikitReactNativeFoundation","_useContext","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","EditInput","forwardRef","_ref","ref","style","text","onChangeText","messageToEdit","setMessageToEdit","onPressUpdateUserMessage","onSelectionChange","autoFocus","mentionedUsers","inputDisabled","mentionManager","sbOptions","useSendbirdChat","STRINGS","useLocalization","toast","useToast","onPressCancel","onPressSave","isUserMessage","mentionType","MentionType","USERS","mentionedUserIds","map","it","user","userId","mentionedMessageTemplate","textToMentionedMessageTemplate","uikit","groupChannel","channel","enableMention","message","catch","onFailureToUpdate","show","TOAST","UPDATE_MSG_ERROR","createElement","View","styles","editInputContainer","inputWrapper","TextInput","multiline","disableFullscreenUI","editable","placeholder","LABELS","CHANNEL_INPUT_PLACEHOLDER_ACTIVE","textToMentionedComponents","marginTop","flexDirection","Button","variant","onPress","CHANNEL_INPUT_EDIT_CANCEL","space","CHANNEL_INPUT_EDIT_OK","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flex","_default","exports"],"sources":["EditInput.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { NativeSyntheticEvent, TextInput as RNTextInput, TextInputSelectionChangeEventData, View } from 'react-native';\n\nimport { MentionType } from '@sendbird/chat/message';\nimport { Button, TextInput, createStyleSheet, useToast } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdFileMessage, SendbirdUserMessage } from '@sendbird/uikit-utils';\n\nimport { useLocalization, useSendbirdChat } from '../../hooks/useContext';\nimport type { MentionedUser } from '../../types';\nimport type { ChannelInputProps } from './index';\n\ninterface EditInputProps extends ChannelInputProps {\n text: string;\n onChangeText: (val: string) => void;\n messageToEdit: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n onSelectionChange: (e: NativeSyntheticEvent<TextInputSelectionChangeEventData>) => void;\n autoFocus: boolean;\n mentionedUsers: MentionedUser[];\n}\n\nconst EditInput = forwardRef<RNTextInput, EditInputProps>(function EditInput(\n {\n style,\n text,\n onChangeText,\n messageToEdit,\n setMessageToEdit,\n onPressUpdateUserMessage,\n onSelectionChange,\n autoFocus,\n mentionedUsers,\n inputDisabled,\n },\n ref,\n) {\n const { mentionManager, sbOptions } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n\n const onPressCancel = () => {\n setMessageToEdit();\n onChangeText('');\n };\n\n const onPressSave = () => {\n if (messageToEdit.isUserMessage()) {\n const mentionType = MentionType.USERS;\n const mentionedUserIds = mentionedUsers.map((it) => it.user.userId);\n const mentionedMessageTemplate = mentionManager.textToMentionedMessageTemplate(\n text,\n mentionedUsers,\n sbOptions.uikit.groupChannel.channel.enableMention,\n );\n\n onPressUpdateUserMessage(messageToEdit, {\n message: text,\n mentionType,\n mentionedUserIds,\n mentionedMessageTemplate,\n }).catch(onFailureToUpdate);\n }\n setMessageToEdit();\n onChangeText('');\n };\n\n const onFailureToUpdate = () => toast.show(STRINGS.TOAST.UPDATE_MSG_ERROR, 'error');\n\n return (\n <View style={styles.editInputContainer}>\n <View style={styles.inputWrapper}>\n <TextInput\n ref={ref}\n multiline\n disableFullscreenUI\n editable={!inputDisabled}\n autoFocus={autoFocus}\n onChangeText={onChangeText}\n style={style}\n placeholder={STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_ACTIVE}\n onSelectionChange={onSelectionChange}\n >\n {mentionManager.textToMentionedComponents(\n text,\n mentionedUsers,\n sbOptions.uikit.groupChannel.channel.enableMention,\n )}\n </TextInput>\n </View>\n <View style={{ marginTop: 8, flexDirection: 'row' }}>\n <Button variant={'text'} onPress={onPressCancel}>\n {STRINGS.LABELS.CHANNEL_INPUT_EDIT_CANCEL}\n </Button>\n <View style={styles.space} />\n <Button variant={'contained'} onPress={onPressSave}>\n {STRINGS.LABELS.CHANNEL_INPUT_EDIT_OK}\n </Button>\n </View>\n </View>\n );\n});\n\nconst styles = createStyleSheet({\n editInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 16,\n flexDirection: 'column',\n alignItems: 'center',\n },\n inputWrapper: {\n flexDirection: 'row',\n },\n space: {\n flex: 1,\n },\n});\n\nexport default EditInput;\n"],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MessageToReplyPreview = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
10
+ var _uikitUtils = require("@sendbird/uikit-utils");
11
+ var _useContext = require("../../hooks/useContext");
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ const MessageToReplyPreview = _ref => {
14
+ let {
15
+ messageToReply,
16
+ setMessageToReply
17
+ } = _ref;
18
+ const {
19
+ colors,
20
+ select,
21
+ palette
22
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
23
+ const {
24
+ mediaService
25
+ } = (0, _useContext.usePlatformService)();
26
+ const {
27
+ STRINGS
28
+ } = (0, _useContext.useLocalization)();
29
+ const getFileIconAsImage = url => {
30
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.ImageWithPlaceholder, {
31
+ source: {
32
+ uri: url
33
+ },
34
+ style: styles.previewImage
35
+ });
36
+ };
37
+ const getFileIconAsVideoThumbnail = url => {
38
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.VideoThumbnail, {
39
+ style: styles.previewImage,
40
+ iconSize: 0,
41
+ source: url,
42
+ fetchThumbnailFromVideoSource: uri => mediaService.getVideoThumbnail({
43
+ url: uri,
44
+ timeMills: 1000
45
+ })
46
+ });
47
+ };
48
+ const getFileIconAsSymbol = icon => {
49
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
50
+ icon: icon,
51
+ size: 20,
52
+ color: colors.onBackground02,
53
+ containerStyle: [styles.fileIcon, {
54
+ backgroundColor: select({
55
+ light: palette.background100,
56
+ dark: palette.background500
57
+ })
58
+ }]
59
+ });
60
+ };
61
+ const getFileIcon = messageToReply => {
62
+ if (messageToReply !== null && messageToReply !== void 0 && messageToReply.isFileMessage()) {
63
+ const messageType = (0, _uikitUtils.getMessageType)(messageToReply);
64
+ switch (messageType) {
65
+ case 'file.image':
66
+ return getFileIconAsImage((0, _uikitUtils.getThumbnailUriFromFileMessage)(messageToReply));
67
+ case 'file.video':
68
+ return getFileIconAsVideoThumbnail((0, _uikitUtils.getThumbnailUriFromFileMessage)(messageToReply));
69
+ case 'file.voice':
70
+ return null;
71
+ default:
72
+ return getFileIconAsSymbol((0, _uikitUtils.getFileIconFromMessageType)(messageType));
73
+ }
74
+ }
75
+ return null;
76
+ };
77
+ if (!messageToReply) return null;
78
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
79
+ style: [styles.messageToReplyContainer, {
80
+ borderColor: colors.onBackground04
81
+ }]
82
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
83
+ style: {
84
+ flex: 1,
85
+ flexDirection: 'row'
86
+ }
87
+ }, getFileIcon(messageToReply), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
88
+ style: {
89
+ flex: 1,
90
+ flexDirection: 'column'
91
+ }
92
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
93
+ numberOfLines: 1,
94
+ style: {
95
+ fontSize: 13,
96
+ fontWeight: '900',
97
+ marginBottom: 4
98
+ }
99
+ }, STRINGS.LABELS.CHANNEL_INPUT_REPLY_PREVIEW_TITLE(messageToReply.sender)), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
100
+ numberOfLines: 1,
101
+ style: {
102
+ fontSize: 13,
103
+ color: colors.onBackground03
104
+ }
105
+ }, STRINGS.LABELS.CHANNEL_INPUT_REPLY_PREVIEW_BODY(messageToReply)))), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
106
+ onPress: () => setMessageToReply === null || setMessageToReply === void 0 ? void 0 : setMessageToReply(undefined)
107
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
108
+ icon: 'close',
109
+ size: 24,
110
+ color: colors.onBackground01,
111
+ containerStyle: styles.closeIcon
112
+ })));
113
+ };
114
+ exports.MessageToReplyPreview = MessageToReplyPreview;
115
+ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
116
+ previewImage: {
117
+ width: 36,
118
+ height: 36,
119
+ borderRadius: 10,
120
+ marginTop: 2,
121
+ marginRight: 10,
122
+ overflow: 'hidden'
123
+ },
124
+ messageToReplyContainer: {
125
+ flexDirection: 'row',
126
+ paddingLeft: 18,
127
+ paddingRight: 16,
128
+ paddingTop: 10,
129
+ paddingBottom: 8,
130
+ alignItems: 'center',
131
+ borderTopWidth: 1
132
+ },
133
+ fileIcon: {
134
+ width: 36,
135
+ height: 36,
136
+ borderRadius: 10,
137
+ marginRight: 10,
138
+ marginTop: 2
139
+ },
140
+ closeIcon: {
141
+ marginLeft: 4,
142
+ padding: 4
143
+ }
144
+ });
145
+ //# sourceMappingURL=MessageToReplyPreview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_uikitReactNativeFoundation","_uikitUtils","_useContext","obj","__esModule","default","MessageToReplyPreview","_ref","messageToReply","setMessageToReply","colors","select","palette","useUIKitTheme","mediaService","usePlatformService","STRINGS","useLocalization","getFileIconAsImage","url","createElement","ImageWithPlaceholder","source","uri","style","styles","previewImage","getFileIconAsVideoThumbnail","VideoThumbnail","iconSize","fetchThumbnailFromVideoSource","getVideoThumbnail","timeMills","getFileIconAsSymbol","icon","Icon","size","color","onBackground02","containerStyle","fileIcon","backgroundColor","light","background100","dark","background500","getFileIcon","isFileMessage","messageType","getMessageType","getThumbnailUriFromFileMessage","getFileIconFromMessageType","View","messageToReplyContainer","borderColor","onBackground04","flex","flexDirection","Text","numberOfLines","fontSize","fontWeight","marginBottom","LABELS","CHANNEL_INPUT_REPLY_PREVIEW_TITLE","sender","onBackground03","CHANNEL_INPUT_REPLY_PREVIEW_BODY","TouchableOpacity","onPress","undefined","onBackground01","closeIcon","exports","createStyleSheet","width","height","borderRadius","marginTop","marginRight","overflow","paddingLeft","paddingRight","paddingTop","paddingBottom","alignItems","borderTopWidth","marginLeft","padding"],"sources":["MessageToReplyPreview.tsx"],"sourcesContent":["import React from 'react';\nimport { TouchableOpacity, View } from 'react-native';\n\nimport {\n Icon,\n ImageWithPlaceholder,\n Text,\n VideoThumbnail,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n FileIcon,\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdUserMessage,\n getFileIconFromMessageType,\n getMessageType,\n getThumbnailUriFromFileMessage,\n} from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService } from '../../hooks/useContext';\n\nexport type MessageToReplyPreviewProps = {\n messageToReply?: SendbirdFileMessage | SendbirdUserMessage;\n setMessageToReply?: (message?: undefined | SendbirdFileMessage | SendbirdUserMessage) => void;\n};\n\nexport const MessageToReplyPreview = ({ messageToReply, setMessageToReply }: MessageToReplyPreviewProps) => {\n const { colors, select, palette } = useUIKitTheme();\n const { mediaService } = usePlatformService();\n const { STRINGS } = useLocalization();\n\n const getFileIconAsImage = (url: string) => {\n return <ImageWithPlaceholder source={{ uri: url }} style={styles.previewImage} />;\n };\n\n const getFileIconAsVideoThumbnail = (url: string) => {\n return (\n <VideoThumbnail\n style={styles.previewImage}\n iconSize={0}\n source={url}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n />\n );\n };\n\n const getFileIconAsSymbol = (icon: FileIcon) => {\n return (\n <Icon\n icon={icon}\n size={20}\n color={colors.onBackground02}\n containerStyle={[\n styles.fileIcon,\n {\n backgroundColor: select({ light: palette.background100, dark: palette.background500 }),\n },\n ]}\n />\n );\n };\n\n const getFileIcon = (messageToReply: SendbirdBaseMessage) => {\n if (messageToReply?.isFileMessage()) {\n const messageType = getMessageType(messageToReply);\n switch (messageType) {\n case 'file.image':\n return getFileIconAsImage(getThumbnailUriFromFileMessage(messageToReply));\n case 'file.video':\n return getFileIconAsVideoThumbnail(getThumbnailUriFromFileMessage(messageToReply));\n case 'file.voice':\n return null;\n default:\n return getFileIconAsSymbol(getFileIconFromMessageType(messageType));\n }\n }\n return null;\n };\n\n if (!messageToReply) return null;\n\n return (\n <View style={[styles.messageToReplyContainer, { borderColor: colors.onBackground04 }]}>\n <View style={{ flex: 1, flexDirection: 'row' }}>\n {getFileIcon(messageToReply)}\n <View style={{ flex: 1, flexDirection: 'column' }}>\n <Text numberOfLines={1} style={{ fontSize: 13, fontWeight: '900', marginBottom: 4 }}>\n {STRINGS.LABELS.CHANNEL_INPUT_REPLY_PREVIEW_TITLE(messageToReply.sender)}\n </Text>\n <Text numberOfLines={1} style={{ fontSize: 13, color: colors.onBackground03 }}>\n {STRINGS.LABELS.CHANNEL_INPUT_REPLY_PREVIEW_BODY(messageToReply)}\n </Text>\n </View>\n </View>\n <TouchableOpacity onPress={() => setMessageToReply?.(undefined)}>\n <Icon icon={'close'} size={24} color={colors.onBackground01} containerStyle={styles.closeIcon} />\n </TouchableOpacity>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n previewImage: {\n width: 36,\n height: 36,\n borderRadius: 10,\n marginTop: 2,\n marginRight: 10,\n overflow: 'hidden',\n },\n messageToReplyContainer: {\n flexDirection: 'row',\n paddingLeft: 18,\n paddingRight: 16,\n paddingTop: 10,\n paddingBottom: 8,\n alignItems: 'center',\n borderTopWidth: 1,\n },\n fileIcon: {\n width: 36,\n height: 36,\n borderRadius: 10,\n marginRight: 10,\n marginTop: 2,\n },\n closeIcon: {\n marginLeft: 4,\n padding: 4,\n },\n});\n"],"mappings":"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"}