@sendbird/uikit-react-native 3.1.2 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/README.md +67 -42
  2. package/lib/commonjs/components/ChannelInput/EditInput.js +2 -11
  3. package/lib/commonjs/components/ChannelInput/EditInput.js.map +1 -1
  4. package/lib/commonjs/components/ChannelInput/MessageToReplyPreview.js +145 -0
  5. package/lib/commonjs/components/ChannelInput/MessageToReplyPreview.js.map +1 -0
  6. package/lib/commonjs/components/ChannelInput/SendInput.js +149 -323
  7. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  8. package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js +238 -0
  9. package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js.map +1 -0
  10. package/lib/commonjs/components/ChannelInput/index.js +34 -3
  11. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  12. package/lib/commonjs/components/ChannelMessageList/index.js +148 -116
  13. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  14. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +24 -13
  15. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  16. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +134 -6
  17. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  18. package/lib/commonjs/components/MessageSearchResultItem.js +1 -0
  19. package/lib/commonjs/components/MessageSearchResultItem.js.map +1 -1
  20. package/lib/commonjs/components/OpenChannelMessageRenderer/index.js +1 -0
  21. package/lib/commonjs/components/OpenChannelMessageRenderer/index.js.map +1 -1
  22. package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +2 -2
  23. package/lib/commonjs/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -1
  24. package/lib/commonjs/components/ReactionBottomSheets/index.js.map +1 -1
  25. package/lib/commonjs/components/StatusComposition.js.map +1 -1
  26. package/lib/commonjs/constants.js +5 -1
  27. package/lib/commonjs/constants.js.map +1 -1
  28. package/lib/commonjs/containers/GroupChannelPreviewContainer.js +1 -0
  29. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
  30. package/lib/commonjs/containers/InternalErrorBoundaryContainer.js.map +1 -1
  31. package/lib/commonjs/containers/SendbirdUIKitContainer.js +72 -34
  32. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  33. package/lib/commonjs/contexts/PlatformServiceCtx.js +16 -12
  34. package/lib/commonjs/contexts/PlatformServiceCtx.js.map +1 -1
  35. package/lib/commonjs/contexts/ReactionCtx.js +3 -2
  36. package/lib/commonjs/contexts/ReactionCtx.js.map +1 -1
  37. package/lib/commonjs/contexts/SendbirdChatCtx.js +2 -0
  38. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  39. package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js +14 -4
  40. package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
  41. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +28 -42
  42. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  43. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +109 -5
  44. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  45. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  46. package/lib/commonjs/domain/userList/types.js.map +1 -1
  47. package/lib/commonjs/fragments/createGroupChannelFragment.js +34 -7
  48. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  49. package/lib/commonjs/fragments/createMessageSearchFragment.js +1 -1
  50. package/lib/commonjs/fragments/createMessageSearchFragment.js.map +1 -1
  51. package/lib/commonjs/hooks/useChannelInputItems.js +211 -0
  52. package/lib/commonjs/hooks/useChannelInputItems.js.map +1 -0
  53. package/lib/commonjs/hooks/useConnection.js +1 -1
  54. package/lib/commonjs/hooks/useConnection.js.map +1 -1
  55. package/lib/commonjs/hooks/useVoiceMessageInput.js +207 -0
  56. package/lib/commonjs/hooks/useVoiceMessageInput.js.map +1 -0
  57. package/lib/commonjs/index.js +36 -0
  58. package/lib/commonjs/index.js.map +1 -1
  59. package/lib/commonjs/libs/MentionManager.js.map +1 -1
  60. package/lib/commonjs/libs/SBUUtils.js +4 -0
  61. package/lib/commonjs/libs/SBUUtils.js.map +1 -1
  62. package/lib/commonjs/libs/VoiceMessageConfig.js +30 -0
  63. package/lib/commonjs/libs/VoiceMessageConfig.js.map +1 -0
  64. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  65. package/lib/commonjs/localization/createBaseStringSet.js +24 -9
  66. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  67. package/lib/commonjs/platform/createFileService.expo.js +10 -0
  68. package/lib/commonjs/platform/createFileService.expo.js.map +1 -1
  69. package/lib/commonjs/platform/createFileService.native.js +19 -0
  70. package/lib/commonjs/platform/createFileService.native.js.map +1 -1
  71. package/lib/commonjs/platform/createPlayerService.expo.js +137 -0
  72. package/lib/commonjs/platform/createPlayerService.expo.js.map +1 -0
  73. package/lib/commonjs/platform/createPlayerService.native.js +139 -0
  74. package/lib/commonjs/platform/createPlayerService.native.js.map +1 -0
  75. package/lib/commonjs/platform/createRecorderService.expo.js +158 -0
  76. package/lib/commonjs/platform/createRecorderService.expo.js.map +1 -0
  77. package/lib/commonjs/platform/createRecorderService.native.js +157 -0
  78. package/lib/commonjs/platform/createRecorderService.native.js.map +1 -0
  79. package/lib/commonjs/platform/types.js.map +1 -1
  80. package/lib/commonjs/types.js +7 -0
  81. package/lib/commonjs/types.js.map +1 -1
  82. package/lib/commonjs/utils/promise.js +138 -0
  83. package/lib/commonjs/utils/promise.js.map +1 -0
  84. package/lib/commonjs/version.js +1 -1
  85. package/lib/commonjs/version.js.map +1 -1
  86. package/lib/module/components/ChannelInput/EditInput.js +3 -12
  87. package/lib/module/components/ChannelInput/EditInput.js.map +1 -1
  88. package/lib/module/components/ChannelInput/MessageToReplyPreview.js +137 -0
  89. package/lib/module/components/ChannelInput/MessageToReplyPreview.js.map +1 -0
  90. package/lib/module/components/ChannelInput/SendInput.js +152 -326
  91. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  92. package/lib/module/components/ChannelInput/VoiceMessageInput.js +228 -0
  93. package/lib/module/components/ChannelInput/VoiceMessageInput.js.map +1 -0
  94. package/lib/module/components/ChannelInput/index.js +36 -5
  95. package/lib/module/components/ChannelInput/index.js.map +1 -1
  96. package/lib/module/components/ChannelMessageList/index.js +149 -117
  97. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  98. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +24 -13
  99. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  100. package/lib/module/components/GroupChannelMessageRenderer/index.js +132 -7
  101. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  102. package/lib/module/components/MessageSearchResultItem.js +2 -1
  103. package/lib/module/components/MessageSearchResultItem.js.map +1 -1
  104. package/lib/module/components/OpenChannelMessageRenderer/index.js +1 -0
  105. package/lib/module/components/OpenChannelMessageRenderer/index.js.map +1 -1
  106. package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js +2 -2
  107. package/lib/module/components/ReactionBottomSheets/ReactionUserListBottomSheet.js.map +1 -1
  108. package/lib/module/components/ReactionBottomSheets/index.js.map +1 -1
  109. package/lib/module/components/StatusComposition.js.map +1 -1
  110. package/lib/module/constants.js +2 -0
  111. package/lib/module/constants.js.map +1 -1
  112. package/lib/module/containers/GroupChannelPreviewContainer.js +2 -1
  113. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
  114. package/lib/module/containers/InternalErrorBoundaryContainer.js.map +1 -1
  115. package/lib/module/containers/SendbirdUIKitContainer.js +74 -36
  116. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  117. package/lib/module/contexts/PlatformServiceCtx.js +14 -11
  118. package/lib/module/contexts/PlatformServiceCtx.js.map +1 -1
  119. package/lib/module/contexts/ReactionCtx.js +3 -2
  120. package/lib/module/contexts/ReactionCtx.js.map +1 -1
  121. package/lib/module/contexts/SendbirdChatCtx.js +2 -0
  122. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  123. package/lib/module/domain/groupChannel/component/GroupChannelHeader.js +15 -5
  124. package/lib/module/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
  125. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +29 -43
  126. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  127. package/lib/module/domain/groupChannel/module/moduleContext.js +111 -7
  128. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  129. package/lib/module/domain/groupChannel/types.js.map +1 -1
  130. package/lib/module/domain/userList/types.js.map +1 -1
  131. package/lib/module/fragments/createGroupChannelFragment.js +36 -9
  132. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  133. package/lib/module/fragments/createMessageSearchFragment.js +1 -1
  134. package/lib/module/fragments/createMessageSearchFragment.js.map +1 -1
  135. package/lib/module/hooks/useChannelInputItems.js +203 -0
  136. package/lib/module/hooks/useChannelInputItems.js.map +1 -0
  137. package/lib/module/hooks/useConnection.js +1 -1
  138. package/lib/module/hooks/useConnection.js.map +1 -1
  139. package/lib/module/hooks/useVoiceMessageInput.js +199 -0
  140. package/lib/module/hooks/useVoiceMessageInput.js.map +1 -0
  141. package/lib/module/index.js +8 -0
  142. package/lib/module/index.js.map +1 -1
  143. package/lib/module/libs/MentionManager.js.map +1 -1
  144. package/lib/module/libs/SBUUtils.js +4 -0
  145. package/lib/module/libs/SBUUtils.js.map +1 -1
  146. package/lib/module/libs/VoiceMessageConfig.js +23 -0
  147. package/lib/module/libs/VoiceMessageConfig.js.map +1 -0
  148. package/lib/module/localization/StringSet.type.js.map +1 -1
  149. package/lib/module/localization/createBaseStringSet.js +25 -10
  150. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  151. package/lib/module/platform/createFileService.expo.js +10 -0
  152. package/lib/module/platform/createFileService.expo.js.map +1 -1
  153. package/lib/module/platform/createFileService.native.js +19 -0
  154. package/lib/module/platform/createFileService.native.js.map +1 -1
  155. package/lib/module/platform/createPlayerService.expo.js +129 -0
  156. package/lib/module/platform/createPlayerService.expo.js.map +1 -0
  157. package/lib/module/platform/createPlayerService.native.js +132 -0
  158. package/lib/module/platform/createPlayerService.native.js.map +1 -0
  159. package/lib/module/platform/createRecorderService.expo.js +150 -0
  160. package/lib/module/platform/createRecorderService.expo.js.map +1 -0
  161. package/lib/module/platform/createRecorderService.native.js +149 -0
  162. package/lib/module/platform/createRecorderService.native.js.map +1 -0
  163. package/lib/module/platform/types.js.map +1 -1
  164. package/lib/module/types.js +5 -1
  165. package/lib/module/types.js.map +1 -1
  166. package/lib/module/utils/promise.js +132 -0
  167. package/lib/module/utils/promise.js.map +1 -0
  168. package/lib/module/version.js +1 -1
  169. package/lib/module/version.js.map +1 -1
  170. package/lib/typescript/src/components/ChannelCover.d.ts +2 -1
  171. package/lib/typescript/src/components/ChannelInput/AttachmentsButton.d.ts +2 -1
  172. package/lib/typescript/src/components/ChannelInput/MessageToReplyPreview.d.ts +7 -0
  173. package/lib/typescript/src/components/ChannelInput/VoiceMessageInput.d.ts +11 -0
  174. package/lib/typescript/src/components/ChannelInput/index.d.ts +9 -3
  175. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +4 -1
  176. package/lib/typescript/src/components/FileViewer.d.ts +2 -1
  177. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.d.ts +2 -1
  178. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageFocusAnimation.d.ts +1 -1
  179. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageOutgoingStatus.d.ts +1 -1
  180. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.d.ts +4 -2
  181. package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +3 -0
  182. package/lib/typescript/src/components/NewMessagesButton.d.ts +1 -1
  183. package/lib/typescript/src/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.d.ts +2 -1
  184. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +2 -0
  185. package/lib/typescript/src/components/ProviderLayout.d.ts +1 -1
  186. package/lib/typescript/src/components/ReactionAddons/BottomSheetReactionAddon.d.ts +2 -1
  187. package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +2 -1
  188. package/lib/typescript/src/components/ReactionAddons/ReactionRoundedButton.d.ts +3 -2
  189. package/lib/typescript/src/components/ReactionAddons/index.d.ts +3 -2
  190. package/lib/typescript/src/components/ReactionBottomSheets/ReactionListBottomSheet.d.ts +2 -1
  191. package/lib/typescript/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.d.ts +2 -1
  192. package/lib/typescript/src/components/ReactionBottomSheets/index.d.ts +4 -4
  193. package/lib/typescript/src/components/ScrollToBottomButton.d.ts +1 -1
  194. package/lib/typescript/src/components/StatusComposition.d.ts +4 -4
  195. package/lib/typescript/src/components/TypedPlaceholder.d.ts +2 -1
  196. package/lib/typescript/src/components/UserActionBar.d.ts +2 -1
  197. package/lib/typescript/src/components/UserSelectableBar.d.ts +2 -1
  198. package/lib/typescript/src/constants.d.ts +2 -0
  199. package/lib/typescript/src/containers/GroupChannelPreviewContainer.d.ts +2 -1
  200. package/lib/typescript/src/containers/InternalErrorBoundaryContainer.d.ts +3 -3
  201. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +19 -8
  202. package/lib/typescript/src/contexts/LocalizationCtx.d.ts +1 -1
  203. package/lib/typescript/src/contexts/PlatformServiceCtx.d.ts +8 -8
  204. package/lib/typescript/src/contexts/ReactionCtx.d.ts +5 -2
  205. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +6 -3
  206. package/lib/typescript/src/contexts/UserProfileCtx.d.ts +1 -1
  207. package/lib/typescript/src/domain/groupChannel/component/GroupChannelHeader.d.ts +2 -1
  208. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput.d.ts +1 -1
  209. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +1 -1
  210. package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusEmpty.d.ts +2 -1
  211. package/lib/typescript/src/domain/groupChannel/component/GroupChannelStatusLoading.d.ts +2 -1
  212. package/lib/typescript/src/domain/groupChannel/component/GroupChannelSuggestedMentionList.d.ts +2 -1
  213. package/lib/typescript/src/domain/groupChannel/types.d.ts +48 -0
  214. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersHeader.d.ts +2 -1
  215. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersList.d.ts +2 -1
  216. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusEmpty.d.ts +2 -1
  217. package/lib/typescript/src/domain/groupChannelBannedUsers/component/GroupChannelBannedUsersStatusLoading.d.ts +2 -1
  218. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListHeader.d.ts +2 -1
  219. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListList.d.ts +2 -1
  220. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusEmpty.d.ts +2 -1
  221. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListStatusLoading.d.ts +2 -1
  222. package/lib/typescript/src/domain/groupChannelList/component/GroupChannelListTypeSelector.d.ts +2 -1
  223. package/lib/typescript/src/domain/groupChannelModeration/component/GroupChannelModerationHeader.d.ts +2 -1
  224. package/lib/typescript/src/domain/groupChannelModeration/component/GroupChannelModerationMenu.d.ts +2 -1
  225. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersHeader.d.ts +2 -1
  226. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersList.d.ts +2 -1
  227. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusEmpty.d.ts +2 -1
  228. package/lib/typescript/src/domain/groupChannelMutedMembers/component/GroupChannelMutedMembersStatusLoading.d.ts +2 -1
  229. package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsHeader.d.ts +2 -1
  230. package/lib/typescript/src/domain/groupChannelNotifications/component/GroupChannelNotificationsView.d.ts +2 -1
  231. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsHeader.d.ts +2 -1
  232. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsList.d.ts +2 -1
  233. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusEmpty.d.ts +2 -1
  234. package/lib/typescript/src/domain/groupChannelOperators/component/GroupChannelOperatorsStatusLoading.d.ts +2 -1
  235. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsHeader.d.ts +2 -1
  236. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.d.ts +2 -1
  237. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.d.ts +2 -1
  238. package/lib/typescript/src/domain/messageSearch/component/MessageSearchHeader.d.ts +2 -1
  239. package/lib/typescript/src/domain/messageSearch/component/MessageSearchList.d.ts +2 -1
  240. package/lib/typescript/src/domain/messageSearch/component/MessageSearchStatusEmpty.d.ts +2 -1
  241. package/lib/typescript/src/domain/messageSearch/component/MessageSearchStatusLoading.d.ts +2 -1
  242. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +2 -2
  243. package/lib/typescript/src/domain/openChannel/component/OpenChannelInput.d.ts +1 -1
  244. package/lib/typescript/src/domain/openChannel/component/OpenChannelMessageList.d.ts +1 -1
  245. package/lib/typescript/src/domain/openChannel/component/OpenChannelStatusEmpty.d.ts +2 -1
  246. package/lib/typescript/src/domain/openChannel/component/OpenChannelStatusLoading.d.ts +2 -1
  247. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersHeader.d.ts +2 -1
  248. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersList.d.ts +2 -1
  249. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusEmpty.d.ts +2 -1
  250. package/lib/typescript/src/domain/openChannelBannedUsers/component/OpenChannelBannedUsersStatusLoading.d.ts +2 -1
  251. package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateHeader.d.ts +2 -1
  252. package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateProfileInput.d.ts +2 -1
  253. package/lib/typescript/src/domain/openChannelCreate/component/OpenChannelCreateStatusLoading.d.ts +2 -1
  254. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListHeader.d.ts +2 -1
  255. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListList.d.ts +2 -1
  256. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListStatusEmpty.d.ts +2 -1
  257. package/lib/typescript/src/domain/openChannelList/component/OpenChannelListStatusLoading.d.ts +2 -1
  258. package/lib/typescript/src/domain/openChannelModeration/component/OpenChannelModerationHeader.d.ts +2 -1
  259. package/lib/typescript/src/domain/openChannelModeration/component/OpenChannelModerationMenu.d.ts +2 -1
  260. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsHeader.d.ts +2 -1
  261. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsList.d.ts +2 -1
  262. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusEmpty.d.ts +2 -1
  263. package/lib/typescript/src/domain/openChannelMutedParticipants/component/OpenChannelMutedParticipantsStatusLoading.d.ts +2 -1
  264. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsHeader.d.ts +2 -1
  265. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsList.d.ts +2 -1
  266. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusEmpty.d.ts +2 -1
  267. package/lib/typescript/src/domain/openChannelOperators/component/OpenChannelOperatorsStatusLoading.d.ts +2 -1
  268. package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsHeader.d.ts +2 -1
  269. package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsInfo.d.ts +2 -1
  270. package/lib/typescript/src/domain/openChannelSettings/component/OpenChannelSettingsMenu.d.ts +2 -1
  271. package/lib/typescript/src/domain/userList/component/UserListHeader.d.ts +3 -3
  272. package/lib/typescript/src/domain/userList/component/UserListList.d.ts +1 -1
  273. package/lib/typescript/src/domain/userList/component/UserListStatusEmpty.d.ts +2 -1
  274. package/lib/typescript/src/domain/userList/component/UserListStatusLoading.d.ts +2 -1
  275. package/lib/typescript/src/domain/userList/types.d.ts +2 -2
  276. package/lib/typescript/src/hooks/useChannelInputItems.d.ts +10 -0
  277. package/lib/typescript/src/hooks/useVoiceMessageInput.d.ts +53 -0
  278. package/lib/typescript/src/index.d.ts +4 -0
  279. package/lib/typescript/src/libs/MentionManager.d.ts +2 -1
  280. package/lib/typescript/src/libs/SBUUtils.d.ts +1 -0
  281. package/lib/typescript/src/libs/VoiceMessageConfig.d.ts +25 -0
  282. package/lib/typescript/src/localization/StringSet.type.d.ts +7 -0
  283. package/lib/typescript/src/platform/createPlayerService.expo.d.ts +7 -0
  284. package/lib/typescript/src/platform/createPlayerService.native.d.ts +9 -0
  285. package/lib/typescript/src/platform/createRecorderService.expo.d.ts +7 -0
  286. package/lib/typescript/src/platform/createRecorderService.native.d.ts +9 -0
  287. package/lib/typescript/src/platform/types.d.ts +100 -1
  288. package/lib/typescript/src/types.d.ts +5 -1
  289. package/lib/typescript/src/utils/promise.d.ts +7 -0
  290. package/lib/typescript/src/version.d.ts +1 -1
  291. package/package.json +10 -12
  292. package/src/components/ChannelInput/EditInput.tsx +3 -15
  293. package/src/components/ChannelInput/MessageToReplyPreview.tsx +133 -0
  294. package/src/components/ChannelInput/SendInput.tsx +131 -329
  295. package/src/components/ChannelInput/VoiceMessageInput.tsx +206 -0
  296. package/src/components/ChannelInput/index.tsx +37 -6
  297. package/src/components/ChannelMessageList/index.tsx +145 -113
  298. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +24 -11
  299. package/src/components/GroupChannelMessageRenderer/index.tsx +113 -4
  300. package/src/components/MessageSearchResultItem.tsx +2 -1
  301. package/src/components/OpenChannelMessageRenderer/index.tsx +1 -0
  302. package/src/components/ReactionBottomSheets/ReactionUserListBottomSheet.tsx +2 -2
  303. package/src/components/ReactionBottomSheets/index.tsx +3 -2
  304. package/src/components/StatusComposition.tsx +3 -3
  305. package/src/constants.ts +2 -0
  306. package/src/containers/GroupChannelPreviewContainer.tsx +2 -0
  307. package/src/containers/InternalErrorBoundaryContainer.tsx +1 -1
  308. package/src/containers/SendbirdUIKitContainer.tsx +103 -59
  309. package/src/contexts/PlatformServiceCtx.tsx +22 -20
  310. package/src/contexts/ReactionCtx.tsx +7 -5
  311. package/src/contexts/SendbirdChatCtx.tsx +10 -2
  312. package/src/domain/groupChannel/component/GroupChannelHeader.tsx +14 -3
  313. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +30 -43
  314. package/src/domain/groupChannel/module/moduleContext.tsx +119 -7
  315. package/src/domain/groupChannel/types.ts +45 -0
  316. package/src/domain/userList/types.ts +2 -2
  317. package/src/fragments/createGroupChannelFragment.tsx +43 -8
  318. package/src/fragments/createMessageSearchFragment.tsx +1 -1
  319. package/src/hooks/useChannelInputItems.ts +215 -0
  320. package/src/hooks/useConnection.ts +1 -1
  321. package/src/hooks/useVoiceMessageInput.ts +237 -0
  322. package/src/index.ts +9 -1
  323. package/src/libs/MentionManager.tsx +1 -1
  324. package/src/libs/SBUUtils.ts +5 -0
  325. package/src/libs/VoiceMessageConfig.ts +28 -0
  326. package/src/localization/StringSet.type.ts +8 -0
  327. package/src/localization/createBaseStringSet.ts +27 -11
  328. package/src/platform/createFileService.expo.ts +10 -0
  329. package/src/platform/createFileService.native.ts +19 -0
  330. package/src/platform/createPlayerService.expo.tsx +142 -0
  331. package/src/platform/createPlayerService.native.tsx +148 -0
  332. package/src/platform/createRecorderService.expo.tsx +160 -0
  333. package/src/platform/createRecorderService.native.tsx +170 -0
  334. package/src/platform/types.ts +114 -1
  335. package/src/types.ts +6 -1
  336. package/src/utils/promise.ts +139 -0
  337. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["StringSet.type.ts"],"sourcesContent":["import type { Locale } from 'date-fns';\n\nimport type {\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMember,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdParticipant,\n SendbirdUser,\n SendbirdUserMessage,\n} from '@sendbird/uikit-utils';\n\n/**\n * StringSet interface\n * Do not configure over 3 depths (for overrides easy)\n * */\nexport interface StringSet {\n OPEN_CHANNEL: {\n /** OpenChannel > Header */\n HEADER_TITLE: (channel: SendbirdOpenChannel) => string;\n HEADER_SUBTITLE: (channel: SendbirdOpenChannel) => string;\n\n /** OpenChannel > List */\n LIST_DATE_SEPARATOR: (date: Date, locale?: Locale) => string;\n\n /** OpenChannel > Message bubble */\n MESSAGE_BUBBLE_TIME: (message: SendbirdMessage, locale?: Locale) => string;\n MESSAGE_BUBBLE_FILE_TITLE: (message: SendbirdFileMessage) => string;\n MESSAGE_BUBBLE_EDITED_POSTFIX: string;\n MESSAGE_BUBBLE_UNKNOWN_TITLE: (message: SendbirdMessage) => string;\n MESSAGE_BUBBLE_UNKNOWN_DESC: (message: SendbirdMessage) => string;\n };\n OPEN_CHANNEL_PARTICIPANTS: {\n /** OpenChannelParticipants > Header */\n HEADER_TITLE: string;\n };\n OPEN_CHANNEL_SETTINGS: {\n /** OpenChannelSettings > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: string;\n\n /** OpenChannelSettings > Info */\n INFO_URL: string;\n\n /** OpenChannelSettings > Menu */\n MENU_MODERATION: string;\n MENU_PARTICIPANTS: string;\n MENU_DELETE_CHANNEL: string;\n\n /** OpenChannelSettings > Dialog */\n DIALOG_CHANNEL_DELETE_CONFIRM_TITLE: string;\n DIALOG_CHANNEL_DELETE_CONFIRM_OK: string;\n DIALOG_CHANNEL_DELETE_CONFIRM_CANCEL: string;\n DIALOG_CHANGE_NAME: string;\n DIALOG_CHANGE_IMAGE: string;\n DIALOG_CHANGE_NAME_PROMPT_TITLE: string;\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: string;\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: string;\n DIALOG_CHANGE_NAME_PROMPT_OK: string;\n DIALOG_CHANGE_IMAGE_MENU_TITLE: string;\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: string;\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: string;\n };\n OPEN_CHANNEL_LIST: {\n /** OpenChannelList > Header */\n HEADER_TITLE: string;\n\n /** OpenChannelList > Channel preview */\n CHANNEL_PREVIEW_TITLE: (channel: SendbirdOpenChannel) => string;\n };\n OPEN_CHANNEL_CREATE: {\n /** OpenChannelCreate > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: string;\n\n /** OpenChannelCreate > ProfileInput */\n PLACEHOLDER: string;\n\n /** OpenChannelCreate > Dialog */\n DIALOG_IMAGE_MENU_REMOVE: string;\n DIALOG_IMAGE_MENU_CAMERA: string;\n DIALOG_IMAGE_MENU_PHOTO_LIBRARY: string;\n };\n OPEN_CHANNEL_MODERATION: {\n /** OpenChannelModeration > Header */\n HEADER_TITLE: string;\n\n /** OpenChannelModeration > Menu */\n MENU_OPERATORS: string;\n MENU_MUTED_PARTICIPANTS: string;\n MENU_BANNED_USERS: string;\n };\n OPEN_CHANNEL_BANNED_USERS: {\n /** OpenChannelBannedUsers > Header */\n HEADER_TITLE: string;\n };\n OPEN_CHANNEL_MUTED_PARTICIPANTS: {\n /** OpenChannelMutedMembers > Header */\n HEADER_TITLE: string;\n };\n OPEN_CHANNEL_OPERATORS: {\n /** OpenChannelOperators > Header */\n HEADER_TITLE: string;\n };\n OPEN_CHANNEL_REGISTER_OPERATOR: {\n /** OpenChannelRegisterOperator > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: (params: { selectedUsers: Array<SendbirdParticipant> }) => string;\n };\n GROUP_CHANNEL: {\n /** GroupChannel > Header */\n HEADER_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n\n /** GroupChannel > List */\n LIST_DATE_SEPARATOR: (date: Date, locale?: Locale) => string;\n LIST_BUTTON_NEW_MSG: (newMessages: SendbirdMessage[]) => string;\n\n /** GroupChannel > Message bubble */\n MESSAGE_BUBBLE_TIME: (message: SendbirdMessage, locale?: Locale) => string;\n MESSAGE_BUBBLE_FILE_TITLE: (message: SendbirdFileMessage) => string;\n MESSAGE_BUBBLE_EDITED_POSTFIX: string;\n MESSAGE_BUBBLE_UNKNOWN_TITLE: (message: SendbirdMessage) => string;\n MESSAGE_BUBBLE_UNKNOWN_DESC: (message: SendbirdMessage) => string;\n\n /** GroupChannel > Suggested mention list */\n MENTION_LIMITED: (mentionLimit: number) => string;\n };\n GROUP_CHANNEL_SETTINGS: {\n /** GroupChannelSettings > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: string;\n\n /** GroupChannelSettings > Menu */\n MENU_MODERATION: string;\n MENU_MEMBERS: string;\n MENU_SEARCH: string;\n MENU_LEAVE_CHANNEL: string;\n MENU_NOTIFICATION: string;\n MENU_NOTIFICATION_LABEL_ON: string;\n MENU_NOTIFICATION_LABEL_OFF: string;\n MENU_NOTIFICATION_LABEL_MENTION_ONLY: string;\n\n /** GroupChannelSettings > Dialog */\n DIALOG_CHANGE_NAME: string;\n DIALOG_CHANGE_IMAGE: string;\n DIALOG_CHANGE_NAME_PROMPT_TITLE: string;\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: string;\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: string;\n DIALOG_CHANGE_NAME_PROMPT_OK: string;\n DIALOG_CHANGE_IMAGE_MENU_TITLE: string;\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: string;\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: string;\n };\n GROUP_CHANNEL_NOTIFICATIONS: {\n /** GroupChannelNotifications > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelNotifications > Menu */\n MENU_NOTIFICATIONS: string;\n MENU_NOTIFICATIONS_DESC: string;\n MENU_NOTIFICATIONS_OPTION_ALL: string;\n MENU_NOTIFICATIONS_OPTION_MENTION_ONLY: string;\n };\n GROUP_CHANNEL_MODERATION: {\n /** GroupChannelModeration > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelModeration > Menu */\n MENU_OPERATORS: string;\n MENU_MUTED_MEMBERS: string;\n MENU_BANNED_USERS: string;\n MENU_FREEZE_CHANNEL: string;\n };\n GROUP_CHANNEL_OPERATORS: {\n /** GroupChannelOperators > Header */\n HEADER_TITLE: string;\n };\n GROUP_CHANNEL_REGISTER_OPERATOR: {\n /** GroupChannelRegisterOperator > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: (params: { selectedUsers: Array<SendbirdMember> }) => string;\n };\n GROUP_CHANNEL_MUTED_MEMBERS: {\n /** GroupChannelMutedMembers > Header */\n HEADER_TITLE: string;\n };\n GROUP_CHANNEL_BANNED_USERS: {\n /** GroupChannelBannedUsers > Header */\n HEADER_TITLE: string;\n };\n GROUP_CHANNEL_LIST: {\n /** GroupChannelList > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelList > Channel preview */\n CHANNEL_PREVIEW_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n CHANNEL_PREVIEW_TITLE_CAPTION: (channel: SendbirdGroupChannel, locale?: Locale) => string;\n CHANNEL_PREVIEW_BODY: (channel: SendbirdGroupChannel) => string;\n\n /** GroupChannelList > TypeSelector > Header */\n TYPE_SELECTOR_HEADER_TITLE: string;\n /** GroupChannelList > TypeSelector > Type string */\n TYPE_SELECTOR_GROUP: string;\n TYPE_SELECTOR_SUPER_GROUP: string;\n TYPE_SELECTOR_BROADCAST: string;\n\n /** GroupChannelList > Dialog > Channel */\n DIALOG_CHANNEL_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n DIALOG_CHANNEL_NOTIFICATION: (channel?: SendbirdGroupChannel) => string;\n DIALOG_CHANNEL_LEAVE: string;\n };\n GROUP_CHANNEL_MEMBERS: {\n /** GroupChannelMembers > Header */\n HEADER_TITLE: string;\n };\n GROUP_CHANNEL_INVITE: {\n /** GroupChannelInvite > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: <T>(params: { selectedUsers: Array<T> }) => string;\n };\n GROUP_CHANNEL_CREATE: {\n /** GroupChannelCreate > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: <T>(params: { selectedUsers: Array<T> }) => string;\n };\n MESSAGE_SEARCH: {\n /** MessageSearch > Header */\n HEADER_INPUT_PLACEHOLDER: string;\n HEADER_RIGHT: string;\n\n /** MessageSearch > Search result item */\n SEARCH_RESULT_ITEM_TITLE: (message: SendbirdBaseMessage) => string;\n SEARCH_RESULT_ITEM_TITLE_CAPTION: (message: SendbirdBaseMessage, locale?: Locale) => string;\n SEARCH_RESULT_ITEM_BODY: (message: SendbirdBaseMessage) => string;\n };\n // UI\n LABELS: {\n PERMISSION_APP_NAME: string;\n PERMISSION_CAMERA: string;\n PERMISSION_DEVICE_STORAGE: string;\n\n USER_NO_NAME: string;\n CHANNEL_NO_MEMBERS: string;\n TYPING_INDICATOR_TYPINGS: (users: SendbirdUser[]) => string | undefined;\n REPLY_FROM_SENDER_TO_RECEIVER: (\n replyMessage: SendbirdUserMessage | SendbirdFileMessage,\n parentMessage: SendbirdUserMessage | SendbirdFileMessage,\n currentUserId?: string,\n ) => string;\n\n USER_BAR_ME_POSTFIX: string;\n USER_BAR_OPERATOR: string;\n\n REGISTER_AS_OPERATOR: string;\n UNREGISTER_OPERATOR: string;\n MUTE: string;\n UNMUTE: string;\n BAN: string;\n UNBAN: string;\n\n /** ChannelMessageList **/\n CHANNEL_MESSAGE_LIST_FROZEN: string;\n\n /** ChannelInput **/\n CHANNEL_INPUT_PLACEHOLDER_ACTIVE: string;\n CHANNEL_INPUT_PLACEHOLDER_DISABLED: string;\n CHANNEL_INPUT_PLACEHOLDER_MUTED: string;\n CHANNEL_INPUT_PLACEHOLDER_REPLY: string;\n CHANNEL_INPUT_EDIT_OK: string;\n CHANNEL_INPUT_EDIT_CANCEL: string;\n /** ChannelInput > Attachments **/\n CHANNEL_INPUT_ATTACHMENT_CAMERA_PHOTO: string;\n CHANNEL_INPUT_ATTACHMENT_CAMERA_VIDEO: string;\n CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY: string;\n CHANNEL_INPUT_ATTACHMENT_FILES: string;\n CHANNEL_INPUT_REPLY_PREVIEW_TITLE: (user: SendbirdUser) => string;\n CHANNEL_INPUT_REPLY_PREVIEW_BODY: (message: SendbirdUserMessage | SendbirdFileMessage) => string;\n\n /** Channel > Message **/\n CHANNEL_MESSAGE_COPY: string;\n CHANNEL_MESSAGE_EDIT: string;\n CHANNEL_MESSAGE_SAVE: string;\n CHANNEL_MESSAGE_DELETE: string;\n CHANNEL_MESSAGE_REPLY: string;\n /** Channel > Message > Delete confirm **/\n CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE: string;\n CHANNEL_MESSAGE_DELETE_CONFIRM_OK: string;\n CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL: string;\n /** Channel > Message > Failed **/\n CHANNEL_MESSAGE_FAILED_RETRY: string;\n CHANNEL_MESSAGE_FAILED_REMOVE: string;\n };\n FILE_VIEWER: {\n TITLE: (message: SendbirdFileMessage) => string;\n SUBTITLE: (message: SendbirdFileMessage) => string;\n };\n PLACEHOLDER: {\n NO_BANNED_USERS: string;\n NO_USERS: string;\n NO_CHANNELS: string;\n NO_MESSAGES: string;\n NO_MUTED_MEMBERS: string;\n NO_MUTED_PARTICIPANTS: string;\n NO_RESULTS_FOUND: string;\n ERROR: {\n MESSAGE: string;\n RETRY_LABEL: string;\n };\n };\n DIALOG: {\n ALERT_DEFAULT_OK: string;\n\n ALERT_PERMISSIONS_TITLE: string;\n ALERT_PERMISSIONS_MESSAGE: (permission: string, appName: string) => string;\n ALERT_PERMISSIONS_OK: string;\n\n PROMPT_DEFAULT_OK: string;\n PROMPT_DEFAULT_CANCEL: string;\n PROMPT_DEFAULT_PLACEHOLDER: string;\n };\n TOAST: {\n COPY_OK: string;\n DOWNLOAD_START: string;\n DOWNLOAD_OK: string;\n DOWNLOAD_ERROR: string;\n OPEN_CAMERA_ERROR: string;\n OPEN_PHOTO_LIBRARY_ERROR: string;\n OPEN_FILES_ERROR: string;\n RESEND_MSG_ERROR: string;\n DELETE_MSG_ERROR: string;\n SEND_MSG_ERROR: string;\n UPDATE_MSG_ERROR: string;\n TURN_ON_NOTIFICATIONS_ERROR: string;\n TURN_OFF_NOTIFICATIONS_ERROR: string;\n LEAVE_CHANNEL_ERROR: string;\n UNKNOWN_ERROR: string;\n GET_CHANNEL_ERROR: string;\n FIND_PARENT_MSG_ERROR: string;\n };\n PROFILE_CARD: {\n BUTTON_MESSAGE: string;\n BODY_LABEL: string;\n BODY: (user: SendbirdUser | SendbirdMember) => string;\n };\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["StringSet.type.ts"],"sourcesContent":["import type { Locale } from 'date-fns';\n\nimport type {\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMember,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdParticipant,\n SendbirdUser,\n SendbirdUserMessage,\n} from '@sendbird/uikit-utils';\n\n/**\n * StringSet interface\n * Do not configure over 3 depths (for overrides easy)\n * */\nexport interface StringSet {\n OPEN_CHANNEL: {\n /** OpenChannel > Header */\n HEADER_TITLE: (channel: SendbirdOpenChannel) => string;\n HEADER_SUBTITLE: (channel: SendbirdOpenChannel) => string;\n\n /** OpenChannel > List */\n LIST_DATE_SEPARATOR: (date: Date, locale?: Locale) => string;\n\n /** OpenChannel > Message bubble */\n MESSAGE_BUBBLE_TIME: (message: SendbirdMessage, locale?: Locale) => string;\n MESSAGE_BUBBLE_FILE_TITLE: (message: SendbirdFileMessage) => string;\n MESSAGE_BUBBLE_EDITED_POSTFIX: string;\n MESSAGE_BUBBLE_UNKNOWN_TITLE: (message: SendbirdMessage) => string;\n MESSAGE_BUBBLE_UNKNOWN_DESC: (message: SendbirdMessage) => string;\n };\n OPEN_CHANNEL_PARTICIPANTS: {\n /** OpenChannelParticipants > Header */\n HEADER_TITLE: string;\n };\n OPEN_CHANNEL_SETTINGS: {\n /** OpenChannelSettings > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: string;\n\n /** OpenChannelSettings > Info */\n INFO_URL: string;\n\n /** OpenChannelSettings > Menu */\n MENU_MODERATION: string;\n MENU_PARTICIPANTS: string;\n MENU_DELETE_CHANNEL: string;\n\n /** OpenChannelSettings > Dialog */\n DIALOG_CHANNEL_DELETE_CONFIRM_TITLE: string;\n DIALOG_CHANNEL_DELETE_CONFIRM_OK: string;\n DIALOG_CHANNEL_DELETE_CONFIRM_CANCEL: string;\n DIALOG_CHANGE_NAME: string;\n DIALOG_CHANGE_IMAGE: string;\n DIALOG_CHANGE_NAME_PROMPT_TITLE: string;\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: string;\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: string;\n DIALOG_CHANGE_NAME_PROMPT_OK: string;\n DIALOG_CHANGE_IMAGE_MENU_TITLE: string;\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: string;\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: string;\n };\n OPEN_CHANNEL_LIST: {\n /** OpenChannelList > Header */\n HEADER_TITLE: string;\n\n /** OpenChannelList > Channel preview */\n CHANNEL_PREVIEW_TITLE: (channel: SendbirdOpenChannel) => string;\n };\n OPEN_CHANNEL_CREATE: {\n /** OpenChannelCreate > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: string;\n\n /** OpenChannelCreate > ProfileInput */\n PLACEHOLDER: string;\n\n /** OpenChannelCreate > Dialog */\n DIALOG_IMAGE_MENU_REMOVE: string;\n DIALOG_IMAGE_MENU_CAMERA: string;\n DIALOG_IMAGE_MENU_PHOTO_LIBRARY: string;\n };\n OPEN_CHANNEL_MODERATION: {\n /** OpenChannelModeration > Header */\n HEADER_TITLE: string;\n\n /** OpenChannelModeration > Menu */\n MENU_OPERATORS: string;\n MENU_MUTED_PARTICIPANTS: string;\n MENU_BANNED_USERS: string;\n };\n OPEN_CHANNEL_BANNED_USERS: {\n /** OpenChannelBannedUsers > Header */\n HEADER_TITLE: string;\n };\n OPEN_CHANNEL_MUTED_PARTICIPANTS: {\n /** OpenChannelMutedMembers > Header */\n HEADER_TITLE: string;\n };\n OPEN_CHANNEL_OPERATORS: {\n /** OpenChannelOperators > Header */\n HEADER_TITLE: string;\n };\n OPEN_CHANNEL_REGISTER_OPERATOR: {\n /** OpenChannelRegisterOperator > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: (params: { selectedUsers: Array<SendbirdParticipant> }) => string;\n };\n GROUP_CHANNEL: {\n /** GroupChannel > Header */\n HEADER_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n\n /** GroupChannel > List */\n LIST_DATE_SEPARATOR: (date: Date, locale?: Locale) => string;\n LIST_BUTTON_NEW_MSG: (newMessages: SendbirdMessage[]) => string;\n\n /** GroupChannel > Message bubble */\n MESSAGE_BUBBLE_TIME: (message: SendbirdMessage, locale?: Locale) => string;\n MESSAGE_BUBBLE_FILE_TITLE: (message: SendbirdFileMessage) => string;\n MESSAGE_BUBBLE_EDITED_POSTFIX: string;\n MESSAGE_BUBBLE_UNKNOWN_TITLE: (message: SendbirdMessage) => string;\n MESSAGE_BUBBLE_UNKNOWN_DESC: (message: SendbirdMessage) => string;\n\n /** GroupChannel > Suggested mention list */\n MENTION_LIMITED: (mentionLimit: number) => string;\n };\n GROUP_CHANNEL_SETTINGS: {\n /** GroupChannelSettings > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: string;\n\n /** GroupChannelSettings > Menu */\n MENU_MODERATION: string;\n MENU_MEMBERS: string;\n MENU_SEARCH: string;\n MENU_LEAVE_CHANNEL: string;\n MENU_NOTIFICATION: string;\n MENU_NOTIFICATION_LABEL_ON: string;\n MENU_NOTIFICATION_LABEL_OFF: string;\n MENU_NOTIFICATION_LABEL_MENTION_ONLY: string;\n\n /** GroupChannelSettings > Dialog */\n DIALOG_CHANGE_NAME: string;\n DIALOG_CHANGE_IMAGE: string;\n DIALOG_CHANGE_NAME_PROMPT_TITLE: string;\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: string;\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: string;\n DIALOG_CHANGE_NAME_PROMPT_OK: string;\n DIALOG_CHANGE_IMAGE_MENU_TITLE: string;\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: string;\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: string;\n };\n GROUP_CHANNEL_NOTIFICATIONS: {\n /** GroupChannelNotifications > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelNotifications > Menu */\n MENU_NOTIFICATIONS: string;\n MENU_NOTIFICATIONS_DESC: string;\n MENU_NOTIFICATIONS_OPTION_ALL: string;\n MENU_NOTIFICATIONS_OPTION_MENTION_ONLY: string;\n };\n GROUP_CHANNEL_MODERATION: {\n /** GroupChannelModeration > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelModeration > Menu */\n MENU_OPERATORS: string;\n MENU_MUTED_MEMBERS: string;\n MENU_BANNED_USERS: string;\n MENU_FREEZE_CHANNEL: string;\n };\n GROUP_CHANNEL_OPERATORS: {\n /** GroupChannelOperators > Header */\n HEADER_TITLE: string;\n };\n GROUP_CHANNEL_REGISTER_OPERATOR: {\n /** GroupChannelRegisterOperator > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: (params: { selectedUsers: Array<SendbirdMember> }) => string;\n };\n GROUP_CHANNEL_MUTED_MEMBERS: {\n /** GroupChannelMutedMembers > Header */\n HEADER_TITLE: string;\n };\n GROUP_CHANNEL_BANNED_USERS: {\n /** GroupChannelBannedUsers > Header */\n HEADER_TITLE: string;\n };\n GROUP_CHANNEL_LIST: {\n /** GroupChannelList > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelList > Channel preview */\n CHANNEL_PREVIEW_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n CHANNEL_PREVIEW_TITLE_CAPTION: (channel: SendbirdGroupChannel, locale?: Locale) => string;\n CHANNEL_PREVIEW_BODY: (channel: SendbirdGroupChannel) => string;\n\n /** GroupChannelList > TypeSelector > Header */\n TYPE_SELECTOR_HEADER_TITLE: string;\n /** GroupChannelList > TypeSelector > Type string */\n TYPE_SELECTOR_GROUP: string;\n TYPE_SELECTOR_SUPER_GROUP: string;\n TYPE_SELECTOR_BROADCAST: string;\n\n /** GroupChannelList > Dialog > Channel */\n DIALOG_CHANNEL_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n DIALOG_CHANNEL_NOTIFICATION: (channel?: SendbirdGroupChannel) => string;\n DIALOG_CHANNEL_LEAVE: string;\n };\n GROUP_CHANNEL_MEMBERS: {\n /** GroupChannelMembers > Header */\n HEADER_TITLE: string;\n };\n GROUP_CHANNEL_INVITE: {\n /** GroupChannelInvite > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: <T>(params: { selectedUsers: Array<T> }) => string;\n };\n GROUP_CHANNEL_CREATE: {\n /** GroupChannelCreate > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: <T>(params: { selectedUsers: Array<T> }) => string;\n };\n MESSAGE_SEARCH: {\n /** MessageSearch > Header */\n HEADER_INPUT_PLACEHOLDER: string;\n HEADER_RIGHT: string;\n\n /** MessageSearch > Search result item */\n SEARCH_RESULT_ITEM_TITLE: (message: SendbirdBaseMessage) => string;\n SEARCH_RESULT_ITEM_TITLE_CAPTION: (message: SendbirdBaseMessage, locale?: Locale) => string;\n SEARCH_RESULT_ITEM_BODY: (message: SendbirdBaseMessage) => string;\n };\n // UI\n LABELS: {\n PERMISSION_APP_NAME: string;\n PERMISSION_CAMERA: string;\n PERMISSION_DEVICE_STORAGE: string;\n PERMISSION_MICROPHONE: string;\n\n USER_NO_NAME: string;\n CHANNEL_NO_MEMBERS: string;\n TYPING_INDICATOR_TYPINGS: (users: SendbirdUser[]) => string | undefined;\n REPLY_FROM_SENDER_TO_RECEIVER: (\n replyMessage: SendbirdUserMessage | SendbirdFileMessage,\n parentMessage: SendbirdUserMessage | SendbirdFileMessage,\n currentUserId?: string,\n ) => string;\n MESSAGE_UNAVAILABLE: string;\n\n USER_BAR_ME_POSTFIX: string;\n USER_BAR_OPERATOR: string;\n\n REGISTER_AS_OPERATOR: string;\n UNREGISTER_OPERATOR: string;\n MUTE: string;\n UNMUTE: string;\n BAN: string;\n UNBAN: string;\n\n /** ChannelMessageList **/\n CHANNEL_MESSAGE_LIST_FROZEN: string;\n\n /** ChannelInput **/\n CHANNEL_INPUT_PLACEHOLDER_ACTIVE: string;\n CHANNEL_INPUT_PLACEHOLDER_DISABLED: string;\n CHANNEL_INPUT_PLACEHOLDER_MUTED: string;\n CHANNEL_INPUT_PLACEHOLDER_REPLY: string;\n CHANNEL_INPUT_EDIT_OK: string;\n CHANNEL_INPUT_EDIT_CANCEL: string;\n /** ChannelInput > Attachments **/\n CHANNEL_INPUT_ATTACHMENT_CAMERA_PHOTO: string;\n CHANNEL_INPUT_ATTACHMENT_CAMERA_VIDEO: string;\n CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY: string;\n CHANNEL_INPUT_ATTACHMENT_FILES: string;\n CHANNEL_INPUT_REPLY_PREVIEW_TITLE: (user: SendbirdUser) => string;\n CHANNEL_INPUT_REPLY_PREVIEW_BODY: (message: SendbirdUserMessage | SendbirdFileMessage) => string;\n\n /** Channel > Message **/\n CHANNEL_MESSAGE_COPY: string;\n CHANNEL_MESSAGE_EDIT: string;\n CHANNEL_MESSAGE_SAVE: string;\n CHANNEL_MESSAGE_DELETE: string;\n CHANNEL_MESSAGE_REPLY: string;\n /** Channel > Message > Delete confirm **/\n CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE: string;\n CHANNEL_MESSAGE_DELETE_CONFIRM_OK: string;\n CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL: string;\n /** Channel > Message > Failed **/\n CHANNEL_MESSAGE_FAILED_RETRY: string;\n CHANNEL_MESSAGE_FAILED_REMOVE: string;\n\n /** Voice message **/\n VOICE_MESSAGE: string;\n VOICE_MESSAGE_INPUT_CANCEL: string;\n };\n FILE_VIEWER: {\n TITLE: (message: SendbirdFileMessage) => string;\n SUBTITLE: (message: SendbirdFileMessage) => string;\n };\n PLACEHOLDER: {\n NO_BANNED_USERS: string;\n NO_USERS: string;\n NO_CHANNELS: string;\n NO_MESSAGES: string;\n NO_MUTED_MEMBERS: string;\n NO_MUTED_PARTICIPANTS: string;\n NO_RESULTS_FOUND: string;\n ERROR: {\n MESSAGE: string;\n RETRY_LABEL: string;\n };\n };\n DIALOG: {\n ALERT_DEFAULT_OK: string;\n\n ALERT_PERMISSIONS_TITLE: string;\n ALERT_PERMISSIONS_MESSAGE: (permission: string, appName: string) => string;\n ALERT_PERMISSIONS_OK: string;\n\n PROMPT_DEFAULT_OK: string;\n PROMPT_DEFAULT_CANCEL: string;\n PROMPT_DEFAULT_PLACEHOLDER: string;\n };\n TOAST: {\n COPY_OK: string;\n DOWNLOAD_START: string;\n DOWNLOAD_OK: string;\n DOWNLOAD_ERROR: string;\n OPEN_CAMERA_ERROR: string;\n OPEN_PHOTO_LIBRARY_ERROR: string;\n OPEN_FILES_ERROR: string;\n RESEND_MSG_ERROR: string;\n DELETE_MSG_ERROR: string;\n SEND_MSG_ERROR: string;\n USER_MUTED_ERROR: string;\n CHANNEL_FROZEN_ERROR: string;\n UPDATE_MSG_ERROR: string;\n TURN_ON_NOTIFICATIONS_ERROR: string;\n TURN_OFF_NOTIFICATIONS_ERROR: string;\n LEAVE_CHANNEL_ERROR: string;\n UNKNOWN_ERROR: string;\n GET_CHANNEL_ERROR: string;\n FIND_PARENT_MSG_ERROR: string;\n };\n PROFILE_CARD: {\n BUTTON_MESSAGE: string;\n BODY_LABEL: string;\n BODY: (user: SendbirdUser | SendbirdMember) => string;\n };\n}\n"],"mappings":""}
@@ -181,7 +181,11 @@ const createBaseStringSet = _ref => {
181
181
  HEADER_TITLE: 'Channels',
182
182
  CHANNEL_PREVIEW_TITLE: (currentUserId, channel) => (0, _uikitUtils.getGroupChannelTitle)(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),
183
183
  CHANNEL_PREVIEW_TITLE_CAPTION: (channel, locale) => (0, _uikitUtils.getGroupChannelPreviewTime)(channel, locale ?? dateLocale),
184
- CHANNEL_PREVIEW_BODY: channel => (0, _uikitUtils.getGroupChannelLastMessage)(channel),
184
+ CHANNEL_PREVIEW_BODY: channel => {
185
+ if (!channel.lastMessage) return '';
186
+ if ((0, _uikitUtils.isVoiceMessage)(channel.lastMessage)) return 'Voice message';
187
+ return (0, _uikitUtils.getMessagePreviewBody)(channel.lastMessage);
188
+ },
185
189
  TYPE_SELECTOR_HEADER_TITLE: 'Channel type',
186
190
  TYPE_SELECTOR_GROUP: 'Group',
187
191
  TYPE_SELECTOR_SUPER_GROUP: 'Super group',
@@ -227,7 +231,10 @@ const createBaseStringSet = _ref => {
227
231
  HEADER_INPUT_PLACEHOLDER: 'Search',
228
232
  HEADER_RIGHT: 'Search',
229
233
  SEARCH_RESULT_ITEM_TITLE: message => (0, _uikitUtils.getMessagePreviewTitle)(message),
230
- SEARCH_RESULT_ITEM_BODY: message => (0, _uikitUtils.getMessagePreviewBody)(message),
234
+ SEARCH_RESULT_ITEM_BODY: message => {
235
+ if ((0, _uikitUtils.isVoiceMessage)(message)) return 'Voice message';
236
+ return (0, _uikitUtils.getMessagePreviewBody)(message);
237
+ },
231
238
  SEARCH_RESULT_ITEM_TITLE_CAPTION: (message, locale) => {
232
239
  return (0, _uikitUtils.getMessagePreviewTime)(message.createdAt, locale ?? dateLocale);
233
240
  }
@@ -236,6 +243,7 @@ const createBaseStringSet = _ref => {
236
243
  PERMISSION_APP_NAME: 'Application',
237
244
  PERMISSION_CAMERA: 'camera',
238
245
  PERMISSION_DEVICE_STORAGE: 'device storage',
246
+ PERMISSION_MICROPHONE: 'microphone',
239
247
  USER_NO_NAME,
240
248
  CHANNEL_NO_MEMBERS,
241
249
  TYPING_INDICATOR_TYPINGS: function (users) {
@@ -252,6 +260,7 @@ const createBaseStringSet = _ref => {
252
260
  const receiverNickname = parent.sender.nickname || USER_NO_NAME;
253
261
  return `${reply.sender.userId !== currentUserId ? senderNickname : 'You'} replied to ${receiverNickname}`;
254
262
  },
263
+ MESSAGE_UNAVAILABLE: 'Message unavailable',
255
264
  USER_BAR_ME_POSTFIX: ' (You)',
256
265
  USER_BAR_OPERATOR: 'Operator',
257
266
  REGISTER_AS_OPERATOR: 'Register as operator',
@@ -284,22 +293,26 @@ const createBaseStringSet = _ref => {
284
293
  CHANNEL_INPUT_REPLY_PREVIEW_TITLE: user => `Reply to ${user.nickname || USER_NO_NAME}`,
285
294
  CHANNEL_INPUT_REPLY_PREVIEW_BODY: message => {
286
295
  if (message.isFileMessage()) {
287
- const fileType = (0, _uikitUtils.getFileTypeFromMessage)(message);
288
- switch (fileType) {
289
- case 'image':
296
+ const messageType = (0, _uikitUtils.getMessageType)(message);
297
+ switch (messageType) {
298
+ case 'file.image':
290
299
  return message.type.toLowerCase().includes('gif') ? 'GIF' : 'Photo';
291
- case 'video':
300
+ case 'file.video':
292
301
  return 'Video';
293
- case 'audio':
302
+ case 'file.audio':
294
303
  return 'Audio';
304
+ case 'file.voice':
305
+ return 'Voice message';
295
306
  default:
296
307
  return message.name;
297
308
  }
298
309
  } else if (message.isUserMessage()) {
299
310
  return message.message;
300
311
  }
301
- return 'Unknown message type.';
312
+ return 'Unknown message';
302
313
  },
314
+ VOICE_MESSAGE: 'Voice message',
315
+ VOICE_MESSAGE_INPUT_CANCEL: 'Cancel',
303
316
  ...(overrides === null || overrides === void 0 ? void 0 : overrides.LABELS)
304
317
  },
305
318
  FILE_VIEWER: {
@@ -329,7 +342,7 @@ const createBaseStringSet = _ref => {
329
342
  ALERT_PERMISSIONS_TITLE: 'Allow access?',
330
343
  ALERT_PERMISSIONS_MESSAGE: function (permission) {
331
344
  let appName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Application';
332
- return `${appName} need permission to access your ${permission}.`;
345
+ return `${appName} needs permission to access your ${permission}.`;
333
346
  },
334
347
  ALERT_PERMISSIONS_OK: 'Go to settings',
335
348
  PROMPT_DEFAULT_OK: 'Submit',
@@ -348,6 +361,8 @@ const createBaseStringSet = _ref => {
348
361
  DELETE_MSG_ERROR: "Couldn't delete message.",
349
362
  RESEND_MSG_ERROR: "Couldn't send message.",
350
363
  SEND_MSG_ERROR: "Couldn't send message.",
364
+ USER_MUTED_ERROR: "You're muted by the operator.",
365
+ CHANNEL_FROZEN_ERROR: 'Channel is frozen.',
351
366
  UPDATE_MSG_ERROR: "Couldn't edit message.",
352
367
  TURN_ON_NOTIFICATIONS_ERROR: "Couldn't turn on notifications.",
353
368
  TURN_OFF_NOTIFICATIONS_ERROR: "Couldn't turn off notifications.",
@@ -1 +1 @@
1
- {"version":3,"names":["_uikitUtils","require","_constants","createBaseStringSet","_ref","_overrides$LABELS","_overrides$LABELS2","_overrides$PLACEHOLDE","dateLocale","overrides","USER_NO_NAME","LABELS","CHANNEL_NO_MEMBERS","OPEN_CHANNEL","HEADER_TITLE","channel","getOpenChannelTitle","HEADER_SUBTITLE","getOpenChannelParticipants","LIST_DATE_SEPARATOR","date","locale","getDateSeparatorFormat","MESSAGE_BUBBLE_TIME","message","getMessageTimeFormat","Date","createdAt","MESSAGE_BUBBLE_FILE_TITLE","name","MESSAGE_BUBBLE_EDITED_POSTFIX","MESSAGE_BUBBLE_UNKNOWN_TITLE","MESSAGE_BUBBLE_UNKNOWN_DESC","OPEN_CHANNEL_PARTICIPANTS","OPEN_CHANNEL_SETTINGS","HEADER_RIGHT","INFO_URL","MENU_MODERATION","MENU_PARTICIPANTS","MENU_DELETE_CHANNEL","DIALOG_CHANNEL_DELETE_CONFIRM_TITLE","DIALOG_CHANNEL_DELETE_CONFIRM_OK","DIALOG_CHANNEL_DELETE_CONFIRM_CANCEL","DIALOG_CHANGE_NAME","DIALOG_CHANGE_NAME_PROMPT_TITLE","DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER","DIALOG_CHANGE_NAME_PROMPT_OK","DIALOG_CHANGE_NAME_PROMPT_CANCEL","DIALOG_CHANGE_IMAGE","DIALOG_CHANGE_IMAGE_MENU_TITLE","DIALOG_CHANGE_IMAGE_MENU_CAMERA","DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY","OPEN_CHANNEL_LIST","CHANNEL_PREVIEW_TITLE","OPEN_CHANNEL_CREATE","PLACEHOLDER","DIALOG_IMAGE_MENU_REMOVE","DIALOG_IMAGE_MENU_CAMERA","DIALOG_IMAGE_MENU_PHOTO_LIBRARY","OPEN_CHANNEL_MODERATION","MENU_OPERATORS","MENU_MUTED_PARTICIPANTS","MENU_BANNED_USERS","OPEN_CHANNEL_BANNED_USERS","OPEN_CHANNEL_MUTED_PARTICIPANTS","OPEN_CHANNEL_OPERATORS","OPEN_CHANNEL_REGISTER_OPERATOR","_ref2","selectedUsers","len","length","GROUP_CHANNEL","uid","getGroupChannelTitle","LIST_BUTTON_NEW_MSG","newMessages","MENTION_LIMITED","mentionLimit","GROUP_CHANNEL_SETTINGS","MENU_MEMBERS","MENU_SEARCH","MENU_LEAVE_CHANNEL","MENU_NOTIFICATION","MENU_NOTIFICATION_LABEL_ON","MENU_NOTIFICATION_LABEL_OFF","MENU_NOTIFICATION_LABEL_MENTION_ONLY","GROUP_CHANNEL_NOTIFICATIONS","MENU_NOTIFICATIONS","MENU_NOTIFICATIONS_DESC","MENU_NOTIFICATIONS_OPTION_ALL","MENU_NOTIFICATIONS_OPTION_MENTION_ONLY","GROUP_CHANNEL_MODERATION","MENU_MUTED_MEMBERS","MENU_FREEZE_CHANNEL","GROUP_CHANNEL_OPERATORS","GROUP_CHANNEL_REGISTER_OPERATOR","_ref3","GROUP_CHANNEL_MUTED_MEMBERS","GROUP_CHANNEL_BANNED_USERS","GROUP_CHANNEL_LIST","currentUserId","CHANNEL_PREVIEW_TITLE_CAPTION","getGroupChannelPreviewTime","CHANNEL_PREVIEW_BODY","getGroupChannelLastMessage","TYPE_SELECTOR_HEADER_TITLE","TYPE_SELECTOR_GROUP","TYPE_SELECTOR_SUPER_GROUP","TYPE_SELECTOR_BROADCAST","DIALOG_CHANNEL_TITLE","DIALOG_CHANNEL_NOTIFICATION","myPushTriggerOption","DIALOG_CHANNEL_LEAVE","GROUP_CHANNEL_MEMBERS","GROUP_CHANNEL_CREATE","_ref4","GROUP_CHANNEL_INVITE","_ref5","MESSAGE_SEARCH","HEADER_INPUT_PLACEHOLDER","SEARCH_RESULT_ITEM_TITLE","getMessagePreviewTitle","SEARCH_RESULT_ITEM_BODY","getMessagePreviewBody","SEARCH_RESULT_ITEM_TITLE_CAPTION","getMessagePreviewTime","PERMISSION_APP_NAME","PERMISSION_CAMERA","PERMISSION_DEVICE_STORAGE","TYPING_INDICATOR_TYPINGS","users","NO_NAME","arguments","undefined","userNames","map","u","nickname","join","REPLY_FROM_SENDER_TO_RECEIVER","reply","parent","UNKNOWN_USER_ID","senderNickname","sender","receiverNickname","userId","USER_BAR_ME_POSTFIX","USER_BAR_OPERATOR","REGISTER_AS_OPERATOR","UNREGISTER_OPERATOR","MUTE","UNMUTE","BAN","UNBAN","CHANNEL_MESSAGE_LIST_FROZEN","CHANNEL_MESSAGE_COPY","CHANNEL_MESSAGE_EDIT","CHANNEL_MESSAGE_SAVE","CHANNEL_MESSAGE_DELETE","CHANNEL_MESSAGE_REPLY","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_FAILED_RETRY","CHANNEL_MESSAGE_FAILED_REMOVE","CHANNEL_INPUT_ATTACHMENT_CAMERA_PHOTO","CHANNEL_INPUT_ATTACHMENT_CAMERA_VIDEO","CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY","CHANNEL_INPUT_ATTACHMENT_FILES","CHANNEL_INPUT_PLACEHOLDER_ACTIVE","CHANNEL_INPUT_PLACEHOLDER_DISABLED","CHANNEL_INPUT_PLACEHOLDER_MUTED","CHANNEL_INPUT_PLACEHOLDER_REPLY","CHANNEL_INPUT_EDIT_OK","CHANNEL_INPUT_EDIT_CANCEL","CHANNEL_INPUT_REPLY_PREVIEW_TITLE","user","CHANNEL_INPUT_REPLY_PREVIEW_BODY","isFileMessage","fileType","getFileTypeFromMessage","type","toLowerCase","includes","isUserMessage","FILE_VIEWER","TITLE","_message$sender","SUBTITLE","NO_BANNED_USERS","NO_USERS","NO_CHANNELS","NO_MESSAGES","NO_MUTED_MEMBERS","NO_MUTED_PARTICIPANTS","NO_RESULTS_FOUND","ERROR","MESSAGE","RETRY_LABEL","DIALOG","ALERT_DEFAULT_OK","ALERT_PERMISSIONS_TITLE","ALERT_PERMISSIONS_MESSAGE","permission","appName","ALERT_PERMISSIONS_OK","PROMPT_DEFAULT_OK","PROMPT_DEFAULT_CANCEL","PROMPT_DEFAULT_PLACEHOLDER","TOAST","COPY_OK","DOWNLOAD_START","DOWNLOAD_OK","DOWNLOAD_ERROR","OPEN_CAMERA_ERROR","OPEN_FILES_ERROR","OPEN_PHOTO_LIBRARY_ERROR","DELETE_MSG_ERROR","RESEND_MSG_ERROR","SEND_MSG_ERROR","UPDATE_MSG_ERROR","TURN_ON_NOTIFICATIONS_ERROR","TURN_OFF_NOTIFICATIONS_ERROR","LEAVE_CHANNEL_ERROR","UNKNOWN_ERROR","GET_CHANNEL_ERROR","FIND_PARENT_MSG_ERROR","PROFILE_CARD","BUTTON_MESSAGE","BODY_LABEL","BODY","exports"],"sources":["createBaseStringSet.ts"],"sourcesContent":["import type { Locale } from 'date-fns';\n\nimport type { PartialDeep } from '@sendbird/uikit-utils';\nimport {\n getDateSeparatorFormat,\n getFileTypeFromMessage,\n getGroupChannelLastMessage,\n getGroupChannelPreviewTime,\n getGroupChannelTitle,\n getMessagePreviewBody,\n getMessagePreviewTime,\n getMessagePreviewTitle,\n getMessageTimeFormat,\n getOpenChannelParticipants,\n getOpenChannelTitle,\n} from '@sendbird/uikit-utils';\n\nimport { UNKNOWN_USER_ID } from '../constants';\nimport type { StringSet } from './StringSet.type';\n\ntype StringSetCreateOptions = {\n dateLocale: Locale;\n overrides?: PartialDeep<StringSet>;\n};\n\n/**\n * Create string set\n * You can create localized String set, you should provide locale for date and string as a parameters\n *\n * @param {StringSetCreateOptions.dateLocale} dateLocale Date locale (from date-fns)\n * @param {StringSetCreateOptions.overrides} [overrides] Localized strings\n * */\nexport const createBaseStringSet = ({ dateLocale, overrides }: StringSetCreateOptions): StringSet => {\n const USER_NO_NAME = overrides?.LABELS?.USER_NO_NAME ?? '(No name)';\n const CHANNEL_NO_MEMBERS = overrides?.LABELS?.CHANNEL_NO_MEMBERS ?? '(No members)';\n return {\n OPEN_CHANNEL: {\n HEADER_TITLE: (channel) => getOpenChannelTitle(channel),\n HEADER_SUBTITLE: (channel) => getOpenChannelParticipants(channel),\n LIST_DATE_SEPARATOR: (date, locale) => getDateSeparatorFormat(date, locale ?? dateLocale),\n MESSAGE_BUBBLE_TIME: (message, locale) => getMessageTimeFormat(new Date(message.createdAt), locale ?? dateLocale),\n MESSAGE_BUBBLE_FILE_TITLE: (message) => message.name,\n MESSAGE_BUBBLE_EDITED_POSTFIX: ' (edited)',\n MESSAGE_BUBBLE_UNKNOWN_TITLE: () => '(Unknown message type)',\n MESSAGE_BUBBLE_UNKNOWN_DESC: () => 'Cannot read this message.',\n ...overrides?.OPEN_CHANNEL,\n },\n OPEN_CHANNEL_PARTICIPANTS: {\n HEADER_TITLE: 'Participants',\n ...overrides?.OPEN_CHANNEL_PARTICIPANTS,\n },\n OPEN_CHANNEL_SETTINGS: {\n HEADER_TITLE: 'Channel information',\n HEADER_RIGHT: 'Edit',\n INFO_URL: 'URL',\n MENU_MODERATION: 'Moderation',\n MENU_PARTICIPANTS: 'Participants',\n MENU_DELETE_CHANNEL: 'Delete channel',\n DIALOG_CHANNEL_DELETE_CONFIRM_TITLE: 'Delete channel?',\n DIALOG_CHANNEL_DELETE_CONFIRM_OK: 'Delete',\n DIALOG_CHANNEL_DELETE_CONFIRM_CANCEL: 'Cancel',\n DIALOG_CHANGE_NAME: 'Change channel name',\n DIALOG_CHANGE_NAME_PROMPT_TITLE: 'Change channel name',\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: 'Enter name',\n DIALOG_CHANGE_NAME_PROMPT_OK: 'Save',\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: 'Cancel',\n DIALOG_CHANGE_IMAGE: 'Change channel image',\n DIALOG_CHANGE_IMAGE_MENU_TITLE: 'Change channel image',\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: 'Take photo',\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: 'Choose photo',\n ...overrides?.OPEN_CHANNEL_SETTINGS,\n },\n OPEN_CHANNEL_LIST: {\n HEADER_TITLE: 'Channels',\n CHANNEL_PREVIEW_TITLE: (channel) => getOpenChannelTitle(channel),\n ...overrides?.OPEN_CHANNEL_LIST,\n },\n OPEN_CHANNEL_CREATE: {\n HEADER_TITLE: 'New channel',\n HEADER_RIGHT: 'Create',\n PLACEHOLDER: 'Enter channel name',\n DIALOG_IMAGE_MENU_REMOVE: 'Remove photo',\n DIALOG_IMAGE_MENU_CAMERA: 'Take photo',\n DIALOG_IMAGE_MENU_PHOTO_LIBRARY: 'Choose photo',\n ...overrides?.OPEN_CHANNEL_CREATE,\n },\n OPEN_CHANNEL_MODERATION: {\n HEADER_TITLE: 'Moderation',\n MENU_OPERATORS: 'Operators',\n MENU_MUTED_PARTICIPANTS: 'Muted participants',\n MENU_BANNED_USERS: 'Banned users',\n ...overrides?.OPEN_CHANNEL_MODERATION,\n },\n OPEN_CHANNEL_BANNED_USERS: {\n HEADER_TITLE: 'Banned users',\n ...overrides?.OPEN_CHANNEL_BANNED_USERS,\n },\n OPEN_CHANNEL_MUTED_PARTICIPANTS: {\n HEADER_TITLE: 'Muted participants',\n ...overrides?.OPEN_CHANNEL_MUTED_PARTICIPANTS,\n },\n OPEN_CHANNEL_OPERATORS: {\n HEADER_TITLE: 'Operators',\n ...overrides?.OPEN_CHANNEL_OPERATORS,\n },\n OPEN_CHANNEL_REGISTER_OPERATOR: {\n HEADER_TITLE: 'Set as operators',\n HEADER_RIGHT: ({ selectedUsers }) => {\n const len = selectedUsers.length;\n if (len === 0) return 'Add';\n return `Add (${len})`;\n },\n ...overrides?.OPEN_CHANNEL_REGISTER_OPERATOR,\n },\n GROUP_CHANNEL: {\n HEADER_TITLE: (uid, channel) => getGroupChannelTitle(uid, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n LIST_DATE_SEPARATOR: (date, locale) => getDateSeparatorFormat(date, locale ?? dateLocale),\n LIST_BUTTON_NEW_MSG: (newMessages) => `${newMessages.length} new messages`,\n\n MESSAGE_BUBBLE_TIME: (message, locale) => getMessageTimeFormat(new Date(message.createdAt), locale ?? dateLocale),\n MESSAGE_BUBBLE_FILE_TITLE: (message) => message.name,\n MESSAGE_BUBBLE_EDITED_POSTFIX: ' (edited)',\n MESSAGE_BUBBLE_UNKNOWN_TITLE: () => '(Unknown message type)',\n MESSAGE_BUBBLE_UNKNOWN_DESC: () => 'Cannot read this message.',\n\n MENTION_LIMITED: (mentionLimit) => `You can have up to ${mentionLimit} mentions per message.`,\n ...overrides?.GROUP_CHANNEL,\n },\n GROUP_CHANNEL_SETTINGS: {\n HEADER_TITLE: 'Channel information',\n HEADER_RIGHT: 'Edit',\n MENU_MODERATION: 'Moderation',\n MENU_MEMBERS: 'Members',\n MENU_SEARCH: 'Search in channel',\n MENU_LEAVE_CHANNEL: 'Leave channel',\n MENU_NOTIFICATION: 'Notifications',\n MENU_NOTIFICATION_LABEL_ON: 'On',\n MENU_NOTIFICATION_LABEL_OFF: 'Off',\n MENU_NOTIFICATION_LABEL_MENTION_ONLY: 'Mentions only',\n DIALOG_CHANGE_NAME: 'Change channel name',\n DIALOG_CHANGE_NAME_PROMPT_TITLE: 'Change channel name',\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: 'Enter name',\n DIALOG_CHANGE_NAME_PROMPT_OK: 'Save',\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: 'Cancel',\n DIALOG_CHANGE_IMAGE: 'Change channel image',\n DIALOG_CHANGE_IMAGE_MENU_TITLE: 'Change channel image',\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: 'Take photo',\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: 'Choose photo',\n ...overrides?.GROUP_CHANNEL_SETTINGS,\n },\n GROUP_CHANNEL_NOTIFICATIONS: {\n HEADER_TITLE: 'Notifications',\n MENU_NOTIFICATIONS: 'Notifications',\n MENU_NOTIFICATIONS_DESC:\n 'Turn on push notifications if you wish to be notified when messages are delivered to this channel.',\n MENU_NOTIFICATIONS_OPTION_ALL: 'All new messages',\n MENU_NOTIFICATIONS_OPTION_MENTION_ONLY: 'Mentions only',\n ...overrides?.GROUP_CHANNEL_NOTIFICATIONS,\n },\n GROUP_CHANNEL_MODERATION: {\n HEADER_TITLE: 'Moderation',\n MENU_OPERATORS: 'Operators',\n MENU_MUTED_MEMBERS: 'Muted members',\n MENU_BANNED_USERS: 'Banned users',\n MENU_FREEZE_CHANNEL: 'Freeze channel',\n ...overrides?.GROUP_CHANNEL_MODERATION,\n },\n GROUP_CHANNEL_OPERATORS: {\n HEADER_TITLE: 'Operators',\n ...overrides?.GROUP_CHANNEL_OPERATORS,\n },\n GROUP_CHANNEL_REGISTER_OPERATOR: {\n HEADER_TITLE: 'Set as operators',\n HEADER_RIGHT: ({ selectedUsers }) => {\n const len = selectedUsers.length;\n if (len === 0) return 'Add';\n return `Add (${len})`;\n },\n ...overrides?.GROUP_CHANNEL_OPERATORS,\n },\n GROUP_CHANNEL_MUTED_MEMBERS: {\n HEADER_TITLE: 'Muted members',\n ...overrides?.GROUP_CHANNEL_MUTED_MEMBERS,\n },\n GROUP_CHANNEL_BANNED_USERS: {\n HEADER_TITLE: 'Banned users',\n ...overrides?.GROUP_CHANNEL_BANNED_USERS,\n },\n GROUP_CHANNEL_LIST: {\n HEADER_TITLE: 'Channels',\n CHANNEL_PREVIEW_TITLE: (currentUserId, channel) =>\n getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n CHANNEL_PREVIEW_TITLE_CAPTION: (channel, locale) => getGroupChannelPreviewTime(channel, locale ?? dateLocale),\n CHANNEL_PREVIEW_BODY: (channel) => getGroupChannelLastMessage(channel),\n TYPE_SELECTOR_HEADER_TITLE: 'Channel type',\n TYPE_SELECTOR_GROUP: 'Group',\n TYPE_SELECTOR_SUPER_GROUP: 'Super group',\n TYPE_SELECTOR_BROADCAST: 'Broadcast',\n DIALOG_CHANNEL_TITLE: (currentUserId, channel) =>\n getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n DIALOG_CHANNEL_NOTIFICATION: (channel) => {\n if (!channel) return '';\n if (channel.myPushTriggerOption === 'off') return 'Turn on notifications';\n return 'Turn off notifications';\n },\n DIALOG_CHANNEL_LEAVE: 'Leave channel',\n ...overrides?.GROUP_CHANNEL_LIST,\n },\n GROUP_CHANNEL_MEMBERS: {\n HEADER_TITLE: 'Members',\n ...overrides?.GROUP_CHANNEL_MEMBERS,\n },\n GROUP_CHANNEL_CREATE: {\n HEADER_TITLE: 'New channel',\n HEADER_RIGHT: ({ selectedUsers }) => {\n const len = selectedUsers.length;\n if (len === 0) return 'Create';\n return `Create (${len})`;\n },\n ...overrides?.GROUP_CHANNEL_CREATE,\n },\n GROUP_CHANNEL_INVITE: {\n HEADER_TITLE: 'Invite users',\n HEADER_RIGHT: ({ selectedUsers }) => {\n const len = selectedUsers.length;\n if (len === 0) return 'Invite';\n return `Invite (${len})`;\n },\n ...overrides?.GROUP_CHANNEL_INVITE,\n },\n MESSAGE_SEARCH: {\n HEADER_INPUT_PLACEHOLDER: 'Search',\n HEADER_RIGHT: 'Search',\n SEARCH_RESULT_ITEM_TITLE: (message) => getMessagePreviewTitle(message),\n SEARCH_RESULT_ITEM_BODY: (message) => getMessagePreviewBody(message),\n SEARCH_RESULT_ITEM_TITLE_CAPTION: (message, locale) => {\n return getMessagePreviewTime(message.createdAt, locale ?? dateLocale);\n },\n },\n LABELS: {\n PERMISSION_APP_NAME: 'Application',\n PERMISSION_CAMERA: 'camera',\n PERMISSION_DEVICE_STORAGE: 'device storage',\n USER_NO_NAME,\n CHANNEL_NO_MEMBERS,\n TYPING_INDICATOR_TYPINGS: (users, NO_NAME = USER_NO_NAME) => {\n const userNames = users.map((u) => u.nickname || NO_NAME);\n if (userNames.length === 0) return;\n if (userNames.length === 1) return `${userNames[0]} is typing...`;\n if (users.length === 2) return `${userNames.join(' and ')} are typing...`;\n return 'Several people are typing...';\n },\n REPLY_FROM_SENDER_TO_RECEIVER: (reply, parent, currentUserId = UNKNOWN_USER_ID) => {\n const senderNickname = reply.sender.nickname || USER_NO_NAME;\n const receiverNickname = parent.sender.nickname || USER_NO_NAME;\n return `${reply.sender.userId !== currentUserId ? senderNickname : 'You'} replied to ${receiverNickname}`;\n },\n\n USER_BAR_ME_POSTFIX: ' (You)',\n USER_BAR_OPERATOR: 'Operator',\n REGISTER_AS_OPERATOR: 'Register as operator',\n UNREGISTER_OPERATOR: 'Unregister operator',\n MUTE: 'Mute',\n UNMUTE: 'Unmute',\n BAN: 'Ban',\n UNBAN: 'Unban',\n CHANNEL_MESSAGE_LIST_FROZEN: 'Channel is frozen',\n CHANNEL_MESSAGE_COPY: 'Copy',\n CHANNEL_MESSAGE_EDIT: 'Edit',\n CHANNEL_MESSAGE_SAVE: 'Save',\n CHANNEL_MESSAGE_DELETE: 'Delete',\n CHANNEL_MESSAGE_REPLY: 'Reply',\n CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE: 'Delete message?',\n CHANNEL_MESSAGE_DELETE_CONFIRM_OK: 'Delete',\n CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL: 'Cancel',\n CHANNEL_MESSAGE_FAILED_RETRY: 'Retry',\n CHANNEL_MESSAGE_FAILED_REMOVE: 'Remove',\n CHANNEL_INPUT_ATTACHMENT_CAMERA_PHOTO: 'Take a photo',\n CHANNEL_INPUT_ATTACHMENT_CAMERA_VIDEO: 'Take a video',\n CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY: 'Photo library',\n CHANNEL_INPUT_ATTACHMENT_FILES: 'Files',\n CHANNEL_INPUT_PLACEHOLDER_ACTIVE: 'Enter message',\n CHANNEL_INPUT_PLACEHOLDER_DISABLED: 'Chat not available in this channel.',\n CHANNEL_INPUT_PLACEHOLDER_MUTED: \"You're muted by the operator.\",\n CHANNEL_INPUT_PLACEHOLDER_REPLY: 'Reply to message',\n CHANNEL_INPUT_EDIT_OK: 'Save',\n CHANNEL_INPUT_EDIT_CANCEL: 'Cancel',\n CHANNEL_INPUT_REPLY_PREVIEW_TITLE: (user) => `Reply to ${user.nickname || USER_NO_NAME}`,\n CHANNEL_INPUT_REPLY_PREVIEW_BODY: (message) => {\n if (message.isFileMessage()) {\n const fileType = getFileTypeFromMessage(message);\n switch (fileType) {\n case 'image':\n return message.type.toLowerCase().includes('gif') ? 'GIF' : 'Photo';\n case 'video':\n return 'Video';\n case 'audio':\n return 'Audio';\n default:\n return message.name;\n }\n } else if (message.isUserMessage()) {\n return message.message;\n }\n return 'Unknown message type.';\n },\n ...overrides?.LABELS,\n },\n FILE_VIEWER: {\n TITLE: (message) => message.sender?.nickname || USER_NO_NAME,\n SUBTITLE: (message) => getMessageTimeFormat(new Date(message.createdAt), dateLocale),\n },\n PLACEHOLDER: {\n NO_BANNED_USERS: 'No banned users',\n NO_USERS: 'No users',\n NO_CHANNELS: 'No channels',\n NO_MESSAGES: 'No messages',\n NO_MUTED_MEMBERS: 'No muted members',\n NO_MUTED_PARTICIPANTS: 'No muted participants',\n NO_RESULTS_FOUND: 'No results found',\n ...overrides?.PLACEHOLDER,\n ERROR: {\n MESSAGE: 'Something went wrong',\n RETRY_LABEL: 'Retry',\n ...overrides?.PLACEHOLDER?.ERROR,\n },\n },\n DIALOG: {\n ALERT_DEFAULT_OK: 'OK',\n ALERT_PERMISSIONS_TITLE: 'Allow access?',\n ALERT_PERMISSIONS_MESSAGE: (permission, appName = 'Application') => {\n return `${appName} need permission to access your ${permission}.`;\n },\n ALERT_PERMISSIONS_OK: 'Go to settings',\n PROMPT_DEFAULT_OK: 'Submit',\n PROMPT_DEFAULT_CANCEL: 'Cancel',\n PROMPT_DEFAULT_PLACEHOLDER: 'Enter',\n ...overrides?.DIALOG,\n },\n TOAST: {\n COPY_OK: 'Copied',\n DOWNLOAD_START: 'Downloading...',\n DOWNLOAD_OK: 'File saved',\n DOWNLOAD_ERROR: \"Couldn't download file.\",\n OPEN_CAMERA_ERROR: \"Couldn't open camera.\",\n OPEN_FILES_ERROR: \"Couldn't open files.\",\n OPEN_PHOTO_LIBRARY_ERROR: \"Couldn't open photo library.\",\n DELETE_MSG_ERROR: \"Couldn't delete message.\",\n RESEND_MSG_ERROR: \"Couldn't send message.\",\n SEND_MSG_ERROR: \"Couldn't send message.\",\n UPDATE_MSG_ERROR: \"Couldn't edit message.\",\n TURN_ON_NOTIFICATIONS_ERROR: \"Couldn't turn on notifications.\",\n TURN_OFF_NOTIFICATIONS_ERROR: \"Couldn't turn off notifications.\",\n LEAVE_CHANNEL_ERROR: \"Couldn't leave channel.\",\n UNKNOWN_ERROR: 'Something went wrong.',\n GET_CHANNEL_ERROR: \"Couldn't retrieve channel.\",\n FIND_PARENT_MSG_ERROR: \"Couldn't find the original message for this reply.\",\n ...overrides?.TOAST,\n },\n PROFILE_CARD: {\n BUTTON_MESSAGE: 'Message',\n BODY_LABEL: 'User ID',\n BODY: (user) => user.userId,\n ...overrides?.PROFILE_CARD,\n },\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_uikitUtils","require","_constants","createBaseStringSet","_ref","_overrides$LABELS","_overrides$LABELS2","_overrides$PLACEHOLDE","dateLocale","overrides","USER_NO_NAME","LABELS","CHANNEL_NO_MEMBERS","OPEN_CHANNEL","HEADER_TITLE","channel","getOpenChannelTitle","HEADER_SUBTITLE","getOpenChannelParticipants","LIST_DATE_SEPARATOR","date","locale","getDateSeparatorFormat","MESSAGE_BUBBLE_TIME","message","getMessageTimeFormat","Date","createdAt","MESSAGE_BUBBLE_FILE_TITLE","name","MESSAGE_BUBBLE_EDITED_POSTFIX","MESSAGE_BUBBLE_UNKNOWN_TITLE","MESSAGE_BUBBLE_UNKNOWN_DESC","OPEN_CHANNEL_PARTICIPANTS","OPEN_CHANNEL_SETTINGS","HEADER_RIGHT","INFO_URL","MENU_MODERATION","MENU_PARTICIPANTS","MENU_DELETE_CHANNEL","DIALOG_CHANNEL_DELETE_CONFIRM_TITLE","DIALOG_CHANNEL_DELETE_CONFIRM_OK","DIALOG_CHANNEL_DELETE_CONFIRM_CANCEL","DIALOG_CHANGE_NAME","DIALOG_CHANGE_NAME_PROMPT_TITLE","DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER","DIALOG_CHANGE_NAME_PROMPT_OK","DIALOG_CHANGE_NAME_PROMPT_CANCEL","DIALOG_CHANGE_IMAGE","DIALOG_CHANGE_IMAGE_MENU_TITLE","DIALOG_CHANGE_IMAGE_MENU_CAMERA","DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY","OPEN_CHANNEL_LIST","CHANNEL_PREVIEW_TITLE","OPEN_CHANNEL_CREATE","PLACEHOLDER","DIALOG_IMAGE_MENU_REMOVE","DIALOG_IMAGE_MENU_CAMERA","DIALOG_IMAGE_MENU_PHOTO_LIBRARY","OPEN_CHANNEL_MODERATION","MENU_OPERATORS","MENU_MUTED_PARTICIPANTS","MENU_BANNED_USERS","OPEN_CHANNEL_BANNED_USERS","OPEN_CHANNEL_MUTED_PARTICIPANTS","OPEN_CHANNEL_OPERATORS","OPEN_CHANNEL_REGISTER_OPERATOR","_ref2","selectedUsers","len","length","GROUP_CHANNEL","uid","getGroupChannelTitle","LIST_BUTTON_NEW_MSG","newMessages","MENTION_LIMITED","mentionLimit","GROUP_CHANNEL_SETTINGS","MENU_MEMBERS","MENU_SEARCH","MENU_LEAVE_CHANNEL","MENU_NOTIFICATION","MENU_NOTIFICATION_LABEL_ON","MENU_NOTIFICATION_LABEL_OFF","MENU_NOTIFICATION_LABEL_MENTION_ONLY","GROUP_CHANNEL_NOTIFICATIONS","MENU_NOTIFICATIONS","MENU_NOTIFICATIONS_DESC","MENU_NOTIFICATIONS_OPTION_ALL","MENU_NOTIFICATIONS_OPTION_MENTION_ONLY","GROUP_CHANNEL_MODERATION","MENU_MUTED_MEMBERS","MENU_FREEZE_CHANNEL","GROUP_CHANNEL_OPERATORS","GROUP_CHANNEL_REGISTER_OPERATOR","_ref3","GROUP_CHANNEL_MUTED_MEMBERS","GROUP_CHANNEL_BANNED_USERS","GROUP_CHANNEL_LIST","currentUserId","CHANNEL_PREVIEW_TITLE_CAPTION","getGroupChannelPreviewTime","CHANNEL_PREVIEW_BODY","lastMessage","isVoiceMessage","getMessagePreviewBody","TYPE_SELECTOR_HEADER_TITLE","TYPE_SELECTOR_GROUP","TYPE_SELECTOR_SUPER_GROUP","TYPE_SELECTOR_BROADCAST","DIALOG_CHANNEL_TITLE","DIALOG_CHANNEL_NOTIFICATION","myPushTriggerOption","DIALOG_CHANNEL_LEAVE","GROUP_CHANNEL_MEMBERS","GROUP_CHANNEL_CREATE","_ref4","GROUP_CHANNEL_INVITE","_ref5","MESSAGE_SEARCH","HEADER_INPUT_PLACEHOLDER","SEARCH_RESULT_ITEM_TITLE","getMessagePreviewTitle","SEARCH_RESULT_ITEM_BODY","SEARCH_RESULT_ITEM_TITLE_CAPTION","getMessagePreviewTime","PERMISSION_APP_NAME","PERMISSION_CAMERA","PERMISSION_DEVICE_STORAGE","PERMISSION_MICROPHONE","TYPING_INDICATOR_TYPINGS","users","NO_NAME","arguments","undefined","userNames","map","u","nickname","join","REPLY_FROM_SENDER_TO_RECEIVER","reply","parent","UNKNOWN_USER_ID","senderNickname","sender","receiverNickname","userId","MESSAGE_UNAVAILABLE","USER_BAR_ME_POSTFIX","USER_BAR_OPERATOR","REGISTER_AS_OPERATOR","UNREGISTER_OPERATOR","MUTE","UNMUTE","BAN","UNBAN","CHANNEL_MESSAGE_LIST_FROZEN","CHANNEL_MESSAGE_COPY","CHANNEL_MESSAGE_EDIT","CHANNEL_MESSAGE_SAVE","CHANNEL_MESSAGE_DELETE","CHANNEL_MESSAGE_REPLY","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_FAILED_RETRY","CHANNEL_MESSAGE_FAILED_REMOVE","CHANNEL_INPUT_ATTACHMENT_CAMERA_PHOTO","CHANNEL_INPUT_ATTACHMENT_CAMERA_VIDEO","CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY","CHANNEL_INPUT_ATTACHMENT_FILES","CHANNEL_INPUT_PLACEHOLDER_ACTIVE","CHANNEL_INPUT_PLACEHOLDER_DISABLED","CHANNEL_INPUT_PLACEHOLDER_MUTED","CHANNEL_INPUT_PLACEHOLDER_REPLY","CHANNEL_INPUT_EDIT_OK","CHANNEL_INPUT_EDIT_CANCEL","CHANNEL_INPUT_REPLY_PREVIEW_TITLE","user","CHANNEL_INPUT_REPLY_PREVIEW_BODY","isFileMessage","messageType","getMessageType","type","toLowerCase","includes","isUserMessage","VOICE_MESSAGE","VOICE_MESSAGE_INPUT_CANCEL","FILE_VIEWER","TITLE","_message$sender","SUBTITLE","NO_BANNED_USERS","NO_USERS","NO_CHANNELS","NO_MESSAGES","NO_MUTED_MEMBERS","NO_MUTED_PARTICIPANTS","NO_RESULTS_FOUND","ERROR","MESSAGE","RETRY_LABEL","DIALOG","ALERT_DEFAULT_OK","ALERT_PERMISSIONS_TITLE","ALERT_PERMISSIONS_MESSAGE","permission","appName","ALERT_PERMISSIONS_OK","PROMPT_DEFAULT_OK","PROMPT_DEFAULT_CANCEL","PROMPT_DEFAULT_PLACEHOLDER","TOAST","COPY_OK","DOWNLOAD_START","DOWNLOAD_OK","DOWNLOAD_ERROR","OPEN_CAMERA_ERROR","OPEN_FILES_ERROR","OPEN_PHOTO_LIBRARY_ERROR","DELETE_MSG_ERROR","RESEND_MSG_ERROR","SEND_MSG_ERROR","USER_MUTED_ERROR","CHANNEL_FROZEN_ERROR","UPDATE_MSG_ERROR","TURN_ON_NOTIFICATIONS_ERROR","TURN_OFF_NOTIFICATIONS_ERROR","LEAVE_CHANNEL_ERROR","UNKNOWN_ERROR","GET_CHANNEL_ERROR","FIND_PARENT_MSG_ERROR","PROFILE_CARD","BUTTON_MESSAGE","BODY_LABEL","BODY","exports"],"sources":["createBaseStringSet.ts"],"sourcesContent":["import type { Locale } from 'date-fns';\n\nimport type { PartialDeep } from '@sendbird/uikit-utils';\nimport {\n getDateSeparatorFormat,\n getGroupChannelPreviewTime,\n getGroupChannelTitle,\n getMessagePreviewBody,\n getMessagePreviewTime,\n getMessagePreviewTitle,\n getMessageTimeFormat,\n getMessageType,\n getOpenChannelParticipants,\n getOpenChannelTitle,\n isVoiceMessage,\n} from '@sendbird/uikit-utils';\n\nimport { UNKNOWN_USER_ID } from '../constants';\nimport type { StringSet } from './StringSet.type';\n\ntype StringSetCreateOptions = {\n dateLocale: Locale;\n overrides?: PartialDeep<StringSet>;\n};\n\n/**\n * Create string set\n * You can create localized String set, you should provide locale for date and string as a parameters\n *\n * @param {StringSetCreateOptions.dateLocale} dateLocale Date locale (from date-fns)\n * @param {StringSetCreateOptions.overrides} [overrides] Localized strings\n * */\nexport const createBaseStringSet = ({ dateLocale, overrides }: StringSetCreateOptions): StringSet => {\n const USER_NO_NAME = overrides?.LABELS?.USER_NO_NAME ?? '(No name)';\n const CHANNEL_NO_MEMBERS = overrides?.LABELS?.CHANNEL_NO_MEMBERS ?? '(No members)';\n\n return {\n OPEN_CHANNEL: {\n HEADER_TITLE: (channel) => getOpenChannelTitle(channel),\n HEADER_SUBTITLE: (channel) => getOpenChannelParticipants(channel),\n LIST_DATE_SEPARATOR: (date, locale) => getDateSeparatorFormat(date, locale ?? dateLocale),\n MESSAGE_BUBBLE_TIME: (message, locale) => getMessageTimeFormat(new Date(message.createdAt), locale ?? dateLocale),\n MESSAGE_BUBBLE_FILE_TITLE: (message) => message.name,\n MESSAGE_BUBBLE_EDITED_POSTFIX: ' (edited)',\n MESSAGE_BUBBLE_UNKNOWN_TITLE: () => '(Unknown message type)',\n MESSAGE_BUBBLE_UNKNOWN_DESC: () => 'Cannot read this message.',\n ...overrides?.OPEN_CHANNEL,\n },\n OPEN_CHANNEL_PARTICIPANTS: {\n HEADER_TITLE: 'Participants',\n ...overrides?.OPEN_CHANNEL_PARTICIPANTS,\n },\n OPEN_CHANNEL_SETTINGS: {\n HEADER_TITLE: 'Channel information',\n HEADER_RIGHT: 'Edit',\n INFO_URL: 'URL',\n MENU_MODERATION: 'Moderation',\n MENU_PARTICIPANTS: 'Participants',\n MENU_DELETE_CHANNEL: 'Delete channel',\n DIALOG_CHANNEL_DELETE_CONFIRM_TITLE: 'Delete channel?',\n DIALOG_CHANNEL_DELETE_CONFIRM_OK: 'Delete',\n DIALOG_CHANNEL_DELETE_CONFIRM_CANCEL: 'Cancel',\n DIALOG_CHANGE_NAME: 'Change channel name',\n DIALOG_CHANGE_NAME_PROMPT_TITLE: 'Change channel name',\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: 'Enter name',\n DIALOG_CHANGE_NAME_PROMPT_OK: 'Save',\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: 'Cancel',\n DIALOG_CHANGE_IMAGE: 'Change channel image',\n DIALOG_CHANGE_IMAGE_MENU_TITLE: 'Change channel image',\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: 'Take photo',\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: 'Choose photo',\n ...overrides?.OPEN_CHANNEL_SETTINGS,\n },\n OPEN_CHANNEL_LIST: {\n HEADER_TITLE: 'Channels',\n CHANNEL_PREVIEW_TITLE: (channel) => getOpenChannelTitle(channel),\n ...overrides?.OPEN_CHANNEL_LIST,\n },\n OPEN_CHANNEL_CREATE: {\n HEADER_TITLE: 'New channel',\n HEADER_RIGHT: 'Create',\n PLACEHOLDER: 'Enter channel name',\n DIALOG_IMAGE_MENU_REMOVE: 'Remove photo',\n DIALOG_IMAGE_MENU_CAMERA: 'Take photo',\n DIALOG_IMAGE_MENU_PHOTO_LIBRARY: 'Choose photo',\n ...overrides?.OPEN_CHANNEL_CREATE,\n },\n OPEN_CHANNEL_MODERATION: {\n HEADER_TITLE: 'Moderation',\n MENU_OPERATORS: 'Operators',\n MENU_MUTED_PARTICIPANTS: 'Muted participants',\n MENU_BANNED_USERS: 'Banned users',\n ...overrides?.OPEN_CHANNEL_MODERATION,\n },\n OPEN_CHANNEL_BANNED_USERS: {\n HEADER_TITLE: 'Banned users',\n ...overrides?.OPEN_CHANNEL_BANNED_USERS,\n },\n OPEN_CHANNEL_MUTED_PARTICIPANTS: {\n HEADER_TITLE: 'Muted participants',\n ...overrides?.OPEN_CHANNEL_MUTED_PARTICIPANTS,\n },\n OPEN_CHANNEL_OPERATORS: {\n HEADER_TITLE: 'Operators',\n ...overrides?.OPEN_CHANNEL_OPERATORS,\n },\n OPEN_CHANNEL_REGISTER_OPERATOR: {\n HEADER_TITLE: 'Set as operators',\n HEADER_RIGHT: ({ selectedUsers }) => {\n const len = selectedUsers.length;\n if (len === 0) return 'Add';\n return `Add (${len})`;\n },\n ...overrides?.OPEN_CHANNEL_REGISTER_OPERATOR,\n },\n GROUP_CHANNEL: {\n HEADER_TITLE: (uid, channel) => getGroupChannelTitle(uid, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n LIST_DATE_SEPARATOR: (date, locale) => getDateSeparatorFormat(date, locale ?? dateLocale),\n LIST_BUTTON_NEW_MSG: (newMessages) => `${newMessages.length} new messages`,\n\n MESSAGE_BUBBLE_TIME: (message, locale) => getMessageTimeFormat(new Date(message.createdAt), locale ?? dateLocale),\n MESSAGE_BUBBLE_FILE_TITLE: (message) => message.name,\n MESSAGE_BUBBLE_EDITED_POSTFIX: ' (edited)',\n MESSAGE_BUBBLE_UNKNOWN_TITLE: () => '(Unknown message type)',\n MESSAGE_BUBBLE_UNKNOWN_DESC: () => 'Cannot read this message.',\n\n MENTION_LIMITED: (mentionLimit) => `You can have up to ${mentionLimit} mentions per message.`,\n ...overrides?.GROUP_CHANNEL,\n },\n GROUP_CHANNEL_SETTINGS: {\n HEADER_TITLE: 'Channel information',\n HEADER_RIGHT: 'Edit',\n MENU_MODERATION: 'Moderation',\n MENU_MEMBERS: 'Members',\n MENU_SEARCH: 'Search in channel',\n MENU_LEAVE_CHANNEL: 'Leave channel',\n MENU_NOTIFICATION: 'Notifications',\n MENU_NOTIFICATION_LABEL_ON: 'On',\n MENU_NOTIFICATION_LABEL_OFF: 'Off',\n MENU_NOTIFICATION_LABEL_MENTION_ONLY: 'Mentions only',\n DIALOG_CHANGE_NAME: 'Change channel name',\n DIALOG_CHANGE_NAME_PROMPT_TITLE: 'Change channel name',\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: 'Enter name',\n DIALOG_CHANGE_NAME_PROMPT_OK: 'Save',\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: 'Cancel',\n DIALOG_CHANGE_IMAGE: 'Change channel image',\n DIALOG_CHANGE_IMAGE_MENU_TITLE: 'Change channel image',\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: 'Take photo',\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: 'Choose photo',\n ...overrides?.GROUP_CHANNEL_SETTINGS,\n },\n GROUP_CHANNEL_NOTIFICATIONS: {\n HEADER_TITLE: 'Notifications',\n MENU_NOTIFICATIONS: 'Notifications',\n MENU_NOTIFICATIONS_DESC:\n 'Turn on push notifications if you wish to be notified when messages are delivered to this channel.',\n MENU_NOTIFICATIONS_OPTION_ALL: 'All new messages',\n MENU_NOTIFICATIONS_OPTION_MENTION_ONLY: 'Mentions only',\n ...overrides?.GROUP_CHANNEL_NOTIFICATIONS,\n },\n GROUP_CHANNEL_MODERATION: {\n HEADER_TITLE: 'Moderation',\n MENU_OPERATORS: 'Operators',\n MENU_MUTED_MEMBERS: 'Muted members',\n MENU_BANNED_USERS: 'Banned users',\n MENU_FREEZE_CHANNEL: 'Freeze channel',\n ...overrides?.GROUP_CHANNEL_MODERATION,\n },\n GROUP_CHANNEL_OPERATORS: {\n HEADER_TITLE: 'Operators',\n ...overrides?.GROUP_CHANNEL_OPERATORS,\n },\n GROUP_CHANNEL_REGISTER_OPERATOR: {\n HEADER_TITLE: 'Set as operators',\n HEADER_RIGHT: ({ selectedUsers }) => {\n const len = selectedUsers.length;\n if (len === 0) return 'Add';\n return `Add (${len})`;\n },\n ...overrides?.GROUP_CHANNEL_OPERATORS,\n },\n GROUP_CHANNEL_MUTED_MEMBERS: {\n HEADER_TITLE: 'Muted members',\n ...overrides?.GROUP_CHANNEL_MUTED_MEMBERS,\n },\n GROUP_CHANNEL_BANNED_USERS: {\n HEADER_TITLE: 'Banned users',\n ...overrides?.GROUP_CHANNEL_BANNED_USERS,\n },\n GROUP_CHANNEL_LIST: {\n HEADER_TITLE: 'Channels',\n CHANNEL_PREVIEW_TITLE: (currentUserId, channel) =>\n getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n CHANNEL_PREVIEW_TITLE_CAPTION: (channel, locale) => getGroupChannelPreviewTime(channel, locale ?? dateLocale),\n CHANNEL_PREVIEW_BODY: (channel) => {\n if (!channel.lastMessage) return '';\n if (isVoiceMessage(channel.lastMessage)) return 'Voice message';\n return getMessagePreviewBody(channel.lastMessage);\n },\n TYPE_SELECTOR_HEADER_TITLE: 'Channel type',\n TYPE_SELECTOR_GROUP: 'Group',\n TYPE_SELECTOR_SUPER_GROUP: 'Super group',\n TYPE_SELECTOR_BROADCAST: 'Broadcast',\n DIALOG_CHANNEL_TITLE: (currentUserId, channel) =>\n getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n DIALOG_CHANNEL_NOTIFICATION: (channel) => {\n if (!channel) return '';\n if (channel.myPushTriggerOption === 'off') return 'Turn on notifications';\n return 'Turn off notifications';\n },\n DIALOG_CHANNEL_LEAVE: 'Leave channel',\n ...overrides?.GROUP_CHANNEL_LIST,\n },\n GROUP_CHANNEL_MEMBERS: {\n HEADER_TITLE: 'Members',\n ...overrides?.GROUP_CHANNEL_MEMBERS,\n },\n GROUP_CHANNEL_CREATE: {\n HEADER_TITLE: 'New channel',\n HEADER_RIGHT: ({ selectedUsers }) => {\n const len = selectedUsers.length;\n if (len === 0) return 'Create';\n return `Create (${len})`;\n },\n ...overrides?.GROUP_CHANNEL_CREATE,\n },\n GROUP_CHANNEL_INVITE: {\n HEADER_TITLE: 'Invite users',\n HEADER_RIGHT: ({ selectedUsers }) => {\n const len = selectedUsers.length;\n if (len === 0) return 'Invite';\n return `Invite (${len})`;\n },\n ...overrides?.GROUP_CHANNEL_INVITE,\n },\n MESSAGE_SEARCH: {\n HEADER_INPUT_PLACEHOLDER: 'Search',\n HEADER_RIGHT: 'Search',\n SEARCH_RESULT_ITEM_TITLE: (message) => getMessagePreviewTitle(message),\n SEARCH_RESULT_ITEM_BODY: (message) => {\n if (isVoiceMessage(message)) return 'Voice message';\n return getMessagePreviewBody(message);\n },\n SEARCH_RESULT_ITEM_TITLE_CAPTION: (message, locale) => {\n return getMessagePreviewTime(message.createdAt, locale ?? dateLocale);\n },\n },\n LABELS: {\n PERMISSION_APP_NAME: 'Application',\n PERMISSION_CAMERA: 'camera',\n PERMISSION_DEVICE_STORAGE: 'device storage',\n PERMISSION_MICROPHONE: 'microphone',\n USER_NO_NAME,\n CHANNEL_NO_MEMBERS,\n TYPING_INDICATOR_TYPINGS: (users, NO_NAME = USER_NO_NAME) => {\n const userNames = users.map((u) => u.nickname || NO_NAME);\n if (userNames.length === 0) return;\n if (userNames.length === 1) return `${userNames[0]} is typing...`;\n if (users.length === 2) return `${userNames.join(' and ')} are typing...`;\n return 'Several people are typing...';\n },\n REPLY_FROM_SENDER_TO_RECEIVER: (reply, parent, currentUserId = UNKNOWN_USER_ID) => {\n const senderNickname = reply.sender.nickname || USER_NO_NAME;\n const receiverNickname = parent.sender.nickname || USER_NO_NAME;\n return `${reply.sender.userId !== currentUserId ? senderNickname : 'You'} replied to ${receiverNickname}`;\n },\n MESSAGE_UNAVAILABLE: 'Message unavailable',\n\n USER_BAR_ME_POSTFIX: ' (You)',\n USER_BAR_OPERATOR: 'Operator',\n REGISTER_AS_OPERATOR: 'Register as operator',\n UNREGISTER_OPERATOR: 'Unregister operator',\n MUTE: 'Mute',\n UNMUTE: 'Unmute',\n BAN: 'Ban',\n UNBAN: 'Unban',\n CHANNEL_MESSAGE_LIST_FROZEN: 'Channel is frozen',\n CHANNEL_MESSAGE_COPY: 'Copy',\n CHANNEL_MESSAGE_EDIT: 'Edit',\n CHANNEL_MESSAGE_SAVE: 'Save',\n CHANNEL_MESSAGE_DELETE: 'Delete',\n CHANNEL_MESSAGE_REPLY: 'Reply',\n CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE: 'Delete message?',\n CHANNEL_MESSAGE_DELETE_CONFIRM_OK: 'Delete',\n CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL: 'Cancel',\n CHANNEL_MESSAGE_FAILED_RETRY: 'Retry',\n CHANNEL_MESSAGE_FAILED_REMOVE: 'Remove',\n CHANNEL_INPUT_ATTACHMENT_CAMERA_PHOTO: 'Take a photo',\n CHANNEL_INPUT_ATTACHMENT_CAMERA_VIDEO: 'Take a video',\n CHANNEL_INPUT_ATTACHMENT_PHOTO_LIBRARY: 'Photo library',\n CHANNEL_INPUT_ATTACHMENT_FILES: 'Files',\n CHANNEL_INPUT_PLACEHOLDER_ACTIVE: 'Enter message',\n CHANNEL_INPUT_PLACEHOLDER_DISABLED: 'Chat not available in this channel.',\n CHANNEL_INPUT_PLACEHOLDER_MUTED: \"You're muted by the operator.\",\n CHANNEL_INPUT_PLACEHOLDER_REPLY: 'Reply to message',\n CHANNEL_INPUT_EDIT_OK: 'Save',\n CHANNEL_INPUT_EDIT_CANCEL: 'Cancel',\n CHANNEL_INPUT_REPLY_PREVIEW_TITLE: (user) => `Reply to ${user.nickname || USER_NO_NAME}`,\n CHANNEL_INPUT_REPLY_PREVIEW_BODY: (message) => {\n if (message.isFileMessage()) {\n const messageType = getMessageType(message);\n switch (messageType) {\n case 'file.image':\n return message.type.toLowerCase().includes('gif') ? 'GIF' : 'Photo';\n case 'file.video':\n return 'Video';\n case 'file.audio':\n return 'Audio';\n case 'file.voice':\n return 'Voice message';\n default:\n return message.name;\n }\n } else if (message.isUserMessage()) {\n return message.message;\n }\n return 'Unknown message';\n },\n VOICE_MESSAGE: 'Voice message',\n VOICE_MESSAGE_INPUT_CANCEL: 'Cancel',\n ...overrides?.LABELS,\n },\n FILE_VIEWER: {\n TITLE: (message) => message.sender?.nickname || USER_NO_NAME,\n SUBTITLE: (message) => getMessageTimeFormat(new Date(message.createdAt), dateLocale),\n },\n PLACEHOLDER: {\n NO_BANNED_USERS: 'No banned users',\n NO_USERS: 'No users',\n NO_CHANNELS: 'No channels',\n NO_MESSAGES: 'No messages',\n NO_MUTED_MEMBERS: 'No muted members',\n NO_MUTED_PARTICIPANTS: 'No muted participants',\n NO_RESULTS_FOUND: 'No results found',\n ...overrides?.PLACEHOLDER,\n ERROR: {\n MESSAGE: 'Something went wrong',\n RETRY_LABEL: 'Retry',\n ...overrides?.PLACEHOLDER?.ERROR,\n },\n },\n DIALOG: {\n ALERT_DEFAULT_OK: 'OK',\n ALERT_PERMISSIONS_TITLE: 'Allow access?',\n ALERT_PERMISSIONS_MESSAGE: (permission, appName = 'Application') => {\n return `${appName} needs permission to access your ${permission}.`;\n },\n ALERT_PERMISSIONS_OK: 'Go to settings',\n PROMPT_DEFAULT_OK: 'Submit',\n PROMPT_DEFAULT_CANCEL: 'Cancel',\n PROMPT_DEFAULT_PLACEHOLDER: 'Enter',\n ...overrides?.DIALOG,\n },\n TOAST: {\n COPY_OK: 'Copied',\n DOWNLOAD_START: 'Downloading...',\n DOWNLOAD_OK: 'File saved',\n DOWNLOAD_ERROR: \"Couldn't download file.\",\n OPEN_CAMERA_ERROR: \"Couldn't open camera.\",\n OPEN_FILES_ERROR: \"Couldn't open files.\",\n OPEN_PHOTO_LIBRARY_ERROR: \"Couldn't open photo library.\",\n DELETE_MSG_ERROR: \"Couldn't delete message.\",\n RESEND_MSG_ERROR: \"Couldn't send message.\",\n SEND_MSG_ERROR: \"Couldn't send message.\",\n USER_MUTED_ERROR: \"You're muted by the operator.\",\n CHANNEL_FROZEN_ERROR: 'Channel is frozen.',\n UPDATE_MSG_ERROR: \"Couldn't edit message.\",\n TURN_ON_NOTIFICATIONS_ERROR: \"Couldn't turn on notifications.\",\n TURN_OFF_NOTIFICATIONS_ERROR: \"Couldn't turn off notifications.\",\n LEAVE_CHANNEL_ERROR: \"Couldn't leave channel.\",\n UNKNOWN_ERROR: 'Something went wrong.',\n GET_CHANNEL_ERROR: \"Couldn't retrieve channel.\",\n FIND_PARENT_MSG_ERROR: \"Couldn't find the original message for this reply.\",\n ...overrides?.TOAST,\n },\n PROFILE_CARD: {\n BUTTON_MESSAGE: 'Message',\n BODY_LABEL: 'User ID',\n BODY: (user) => user.userId,\n ...overrides?.PROFILE_CARD,\n },\n };\n};\n"],"mappings":"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"}
@@ -119,6 +119,16 @@ const createExpoFileService = _ref => {
119
119
  }
120
120
  return response.uri;
121
121
  }
122
+ createRecordFilePath() {
123
+ let customExtension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'm4a';
124
+ const basePath = fsModule.cacheDirectory;
125
+ if (!basePath) throw new Error('Cannot determine directory');
126
+ const filename = `record-${Date.now()}.${customExtension}`;
127
+ return {
128
+ uri: `${basePath}/${filename}`,
129
+ recordFilePath: `${basePath}/${filename}`
130
+ };
131
+ }
122
132
  }
123
133
  return new ExpoFileServiceInterface();
124
134
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_uikitUtils","require","_SBUError","_interopRequireDefault","_expoBackwardUtils","_expoPermissionGranted","obj","__esModule","default","createExpoFileService","_ref","imagePickerModule","documentPickerModule","mediaLibraryModule","fsModule","ExpoFileServiceInterface","hasCameraPermission","res","getCameraPermissionsAsync","expoPermissionGranted","requestCameraPermission","requestCameraPermissionsAsync","hasMediaLibraryPermission","type","perms","getPermissionsAsync","requestMediaLibraryPermission","requestPermissionsAsync","openCamera","options","hasPermission","granted","_options$onOpenFailur","onOpenFailure","call","SBUError","PERMISSIONS_DENIED","response","launchCameraAsync","mediaTypes","mediaType","MediaTypeOptions","Images","Videos","All","expoBackwardUtils","imagePicker","isCanceled","file","toFilePickerResponses","openMediaLibrary","_options$onOpenFailur2","selectionLimit","launchImageLibraryAsync","openDocument","getDocumentAsync","documentPicker","e","_options$onOpenFailur3","UNKNOWN","save","Error","basePath","documentDirectory","cacheDirectory","downloadPath","fileName","downloadAsync","fileUrl","getFileType","fileType","match","saveToLibraryAsync","uri","_default","exports"],"sources":["createFileService.expo.ts"],"sourcesContent":["import type * as ExpoDocumentPicker from 'expo-document-picker';\nimport type * as ExpoFs from 'expo-file-system';\nimport type * as ExpoImagePicker from 'expo-image-picker';\nimport type * as ExpoMediaLibrary from 'expo-media-library';\n\nimport { getFileType } from '@sendbird/uikit-utils';\n\nimport SBUError from '../libs/SBUError';\nimport expoBackwardUtils from '../utils/expoBackwardUtils';\nimport type { ExpoMediaLibraryPermissionResponse, ExpoPermissionResponse } from '../utils/expoPermissionGranted';\nimport expoPermissionGranted from '../utils/expoPermissionGranted';\nimport type {\n FilePickerResponse,\n FileServiceInterface,\n OpenCameraOptions,\n OpenDocumentOptions,\n OpenMediaLibraryOptions,\n SaveOptions,\n} from './types';\n\nconst createExpoFileService = ({\n imagePickerModule,\n documentPickerModule,\n mediaLibraryModule,\n fsModule,\n}: {\n imagePickerModule: typeof ExpoImagePicker;\n documentPickerModule: typeof ExpoDocumentPicker;\n mediaLibraryModule: typeof ExpoMediaLibrary;\n fsModule: typeof ExpoFs;\n}): FileServiceInterface => {\n class ExpoFileServiceInterface implements FileServiceInterface {\n async hasCameraPermission(): Promise<boolean> {\n const res = (await imagePickerModule.getCameraPermissionsAsync()) as ExpoPermissionResponse;\n return expoPermissionGranted([res]);\n }\n async requestCameraPermission(): Promise<boolean> {\n const res = (await imagePickerModule.requestCameraPermissionsAsync()) as ExpoPermissionResponse;\n return expoPermissionGranted([res]);\n }\n async hasMediaLibraryPermission(type: 'write' | 'read'): Promise<boolean> {\n const perms = (await mediaLibraryModule.getPermissionsAsync(\n type === 'write',\n )) as ExpoMediaLibraryPermissionResponse;\n return expoPermissionGranted([perms]);\n }\n async requestMediaLibraryPermission(type: 'write' | 'read'): Promise<boolean> {\n const perms = (await mediaLibraryModule.requestPermissionsAsync(\n type === 'write',\n )) as ExpoMediaLibraryPermissionResponse;\n return expoPermissionGranted([perms]);\n }\n\n async openCamera(options?: OpenCameraOptions): Promise<FilePickerResponse> {\n const hasPermission = await this.hasCameraPermission();\n if (!hasPermission) {\n const granted = await this.requestCameraPermission();\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const response = await imagePickerModule.launchCameraAsync({\n mediaTypes: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return imagePickerModule.MediaTypeOptions.Images;\n case 'video':\n return imagePickerModule.MediaTypeOptions.Videos;\n case 'all':\n return imagePickerModule.MediaTypeOptions.All;\n default:\n return imagePickerModule.MediaTypeOptions.Images;\n }\n })(),\n });\n\n if (expoBackwardUtils.imagePicker.isCanceled(response)) return null;\n\n const [file] = await expoBackwardUtils.imagePicker.toFilePickerResponses(response, fsModule);\n return file;\n }\n async openMediaLibrary(options: OpenMediaLibraryOptions) {\n const hasPermission = await this.hasMediaLibraryPermission('read');\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission('read');\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const selectionLimit = options?.selectionLimit || 1;\n const response = await imagePickerModule.launchImageLibraryAsync({\n selectionLimit,\n mediaTypes: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return imagePickerModule.MediaTypeOptions.Images;\n case 'video':\n return imagePickerModule.MediaTypeOptions.Videos;\n case 'all':\n return imagePickerModule.MediaTypeOptions.All;\n default:\n return imagePickerModule.MediaTypeOptions.Images;\n }\n })(),\n });\n if (expoBackwardUtils.imagePicker.isCanceled(response)) return null;\n return expoBackwardUtils.imagePicker.toFilePickerResponses(response, fsModule);\n }\n\n async openDocument(options?: OpenDocumentOptions): Promise<FilePickerResponse> {\n try {\n const response = await documentPickerModule.getDocumentAsync({ type: '*/*' });\n if (expoBackwardUtils.documentPicker.isCanceled(response)) return null;\n\n const [file] = await expoBackwardUtils.documentPicker.toFilePickerResponses(response);\n return file;\n } catch (e) {\n options?.onOpenFailure?.(SBUError.UNKNOWN, e);\n return null;\n }\n }\n\n async save(options: SaveOptions): Promise<string> {\n const hasPermission = await this.hasMediaLibraryPermission('write');\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission('write');\n if (!granted) throw new Error('Permission not granted');\n }\n\n const basePath = fsModule.documentDirectory || fsModule.cacheDirectory;\n if (!basePath) throw new Error('Cannot determine directory');\n\n const downloadPath = `${basePath}/${options.fileName}`;\n\n const response = await fsModule.downloadAsync(options.fileUrl, downloadPath);\n if (getFileType(options.fileType || '').match(/video|image/)) {\n await mediaLibraryModule.saveToLibraryAsync(response.uri);\n }\n return response.uri;\n }\n }\n\n return new ExpoFileServiceInterface();\n};\n\nexport default createExpoFileService;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_uikitUtils","require","_SBUError","_interopRequireDefault","_expoBackwardUtils","_expoPermissionGranted","obj","__esModule","default","createExpoFileService","_ref","imagePickerModule","documentPickerModule","mediaLibraryModule","fsModule","ExpoFileServiceInterface","hasCameraPermission","res","getCameraPermissionsAsync","expoPermissionGranted","requestCameraPermission","requestCameraPermissionsAsync","hasMediaLibraryPermission","type","perms","getPermissionsAsync","requestMediaLibraryPermission","requestPermissionsAsync","openCamera","options","hasPermission","granted","_options$onOpenFailur","onOpenFailure","call","SBUError","PERMISSIONS_DENIED","response","launchCameraAsync","mediaTypes","mediaType","MediaTypeOptions","Images","Videos","All","expoBackwardUtils","imagePicker","isCanceled","file","toFilePickerResponses","openMediaLibrary","_options$onOpenFailur2","selectionLimit","launchImageLibraryAsync","openDocument","getDocumentAsync","documentPicker","e","_options$onOpenFailur3","UNKNOWN","save","Error","basePath","documentDirectory","cacheDirectory","downloadPath","fileName","downloadAsync","fileUrl","getFileType","fileType","match","saveToLibraryAsync","uri","createRecordFilePath","customExtension","arguments","length","undefined","filename","Date","now","recordFilePath","_default","exports"],"sources":["createFileService.expo.ts"],"sourcesContent":["import type * as ExpoDocumentPicker from 'expo-document-picker';\nimport type * as ExpoFs from 'expo-file-system';\nimport type * as ExpoImagePicker from 'expo-image-picker';\nimport type * as ExpoMediaLibrary from 'expo-media-library';\n\nimport { getFileType } from '@sendbird/uikit-utils';\n\nimport SBUError from '../libs/SBUError';\nimport expoBackwardUtils from '../utils/expoBackwardUtils';\nimport type { ExpoMediaLibraryPermissionResponse, ExpoPermissionResponse } from '../utils/expoPermissionGranted';\nimport expoPermissionGranted from '../utils/expoPermissionGranted';\nimport type {\n FilePickerResponse,\n FileServiceInterface,\n OpenCameraOptions,\n OpenDocumentOptions,\n OpenMediaLibraryOptions,\n SaveOptions,\n} from './types';\n\nconst createExpoFileService = ({\n imagePickerModule,\n documentPickerModule,\n mediaLibraryModule,\n fsModule,\n}: {\n imagePickerModule: typeof ExpoImagePicker;\n documentPickerModule: typeof ExpoDocumentPicker;\n mediaLibraryModule: typeof ExpoMediaLibrary;\n fsModule: typeof ExpoFs;\n}): FileServiceInterface => {\n class ExpoFileServiceInterface implements FileServiceInterface {\n async hasCameraPermission(): Promise<boolean> {\n const res = (await imagePickerModule.getCameraPermissionsAsync()) as ExpoPermissionResponse;\n return expoPermissionGranted([res]);\n }\n async requestCameraPermission(): Promise<boolean> {\n const res = (await imagePickerModule.requestCameraPermissionsAsync()) as ExpoPermissionResponse;\n return expoPermissionGranted([res]);\n }\n async hasMediaLibraryPermission(type: 'write' | 'read'): Promise<boolean> {\n const perms = (await mediaLibraryModule.getPermissionsAsync(\n type === 'write',\n )) as ExpoMediaLibraryPermissionResponse;\n return expoPermissionGranted([perms]);\n }\n async requestMediaLibraryPermission(type: 'write' | 'read'): Promise<boolean> {\n const perms = (await mediaLibraryModule.requestPermissionsAsync(\n type === 'write',\n )) as ExpoMediaLibraryPermissionResponse;\n return expoPermissionGranted([perms]);\n }\n\n async openCamera(options?: OpenCameraOptions): Promise<FilePickerResponse> {\n const hasPermission = await this.hasCameraPermission();\n if (!hasPermission) {\n const granted = await this.requestCameraPermission();\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const response = await imagePickerModule.launchCameraAsync({\n mediaTypes: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return imagePickerModule.MediaTypeOptions.Images;\n case 'video':\n return imagePickerModule.MediaTypeOptions.Videos;\n case 'all':\n return imagePickerModule.MediaTypeOptions.All;\n default:\n return imagePickerModule.MediaTypeOptions.Images;\n }\n })(),\n });\n\n if (expoBackwardUtils.imagePicker.isCanceled(response)) return null;\n\n const [file] = await expoBackwardUtils.imagePicker.toFilePickerResponses(response, fsModule);\n return file;\n }\n async openMediaLibrary(options: OpenMediaLibraryOptions) {\n const hasPermission = await this.hasMediaLibraryPermission('read');\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission('read');\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const selectionLimit = options?.selectionLimit || 1;\n const response = await imagePickerModule.launchImageLibraryAsync({\n selectionLimit,\n mediaTypes: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return imagePickerModule.MediaTypeOptions.Images;\n case 'video':\n return imagePickerModule.MediaTypeOptions.Videos;\n case 'all':\n return imagePickerModule.MediaTypeOptions.All;\n default:\n return imagePickerModule.MediaTypeOptions.Images;\n }\n })(),\n });\n if (expoBackwardUtils.imagePicker.isCanceled(response)) return null;\n return expoBackwardUtils.imagePicker.toFilePickerResponses(response, fsModule);\n }\n\n async openDocument(options?: OpenDocumentOptions): Promise<FilePickerResponse> {\n try {\n const response = await documentPickerModule.getDocumentAsync({ type: '*/*' });\n if (expoBackwardUtils.documentPicker.isCanceled(response)) return null;\n\n const [file] = await expoBackwardUtils.documentPicker.toFilePickerResponses(response);\n return file;\n } catch (e) {\n options?.onOpenFailure?.(SBUError.UNKNOWN, e);\n return null;\n }\n }\n\n async save(options: SaveOptions): Promise<string> {\n const hasPermission = await this.hasMediaLibraryPermission('write');\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission('write');\n if (!granted) throw new Error('Permission not granted');\n }\n\n const basePath = fsModule.documentDirectory || fsModule.cacheDirectory;\n if (!basePath) throw new Error('Cannot determine directory');\n\n const downloadPath = `${basePath}/${options.fileName}`;\n\n const response = await fsModule.downloadAsync(options.fileUrl, downloadPath);\n if (getFileType(options.fileType || '').match(/video|image/)) {\n await mediaLibraryModule.saveToLibraryAsync(response.uri);\n }\n return response.uri;\n }\n createRecordFilePath(customExtension = 'm4a'): { recordFilePath: string; uri: string } {\n const basePath = fsModule.cacheDirectory;\n if (!basePath) throw new Error('Cannot determine directory');\n\n const filename = `record-${Date.now()}.${customExtension}`;\n return {\n uri: `${basePath}/${filename}`,\n recordFilePath: `${basePath}/${filename}`,\n };\n }\n }\n\n return new ExpoFileServiceInterface();\n};\n\nexport default createExpoFileService;\n"],"mappings":"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"}
@@ -252,6 +252,25 @@ const createNativeFileService = _ref => {
252
252
  }
253
253
  return downloadedPath;
254
254
  }
255
+ createRecordFilePath() {
256
+ let customExtension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'm4a';
257
+ const filename = `record-${Date.now()}.${customExtension}`;
258
+ const path = `${fsModule.Dirs.CacheDir}/${filename}`;
259
+ return _reactNative.Platform.select({
260
+ ios: {
261
+ uri: path,
262
+ recordFilePath: filename
263
+ },
264
+ android: {
265
+ uri: path.startsWith('file://') ? path : 'file://' + path,
266
+ recordFilePath: path
267
+ },
268
+ default: {
269
+ uri: path,
270
+ recordFilePath: path
271
+ }
272
+ });
273
+ }
255
274
  }
256
275
  return new NativeFileService();
257
276
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_uikitUtils","_SBUError","_interopRequireDefault","_nativePermissionGranted","_normalizeFile","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","getAndroidStoragePermissionsByAPILevel","permissionModule","Platform","OS","Version","PERMISSIONS","ANDROID","READ_MEDIA_AUDIO","READ_MEDIA_IMAGES","READ_MEDIA_VIDEO","READ_EXTERNAL_STORAGE","WRITE_EXTERNAL_STORAGE","createNativeFileService","_ref","imagePickerModule","documentPickerModule","mediaLibraryModule","fsModule","cameraPermissions","select","ios","IOS","CAMERA","MICROPHONE","android","mediaLibraryPermissions","MEDIA_LIBRARY","PHOTO_LIBRARY","NativeFileService","constructor","options","dirname","Dirs","CacheDir","DocumentDir","context","filename","fileName","extension","getFileExtension","getFileExtensionFromMime","fileType","fileUrl","getFileExtensionFromUri","normalizeFileName","path","buildDownloadPath","FileSystem","fetch","downloadedPath","file","name","type","getFileType","hasCameraPermission","status","checkMultiple","nativePermissionGranted","requestCameraPermission","requestMultiple","hasMediaLibraryPermission","__DEV__","requestMediaLibraryPermission","openCamera","_response$assets","hasPermission","granted","_options$onOpenFailur","onOpenFailure","SBUError","PERMISSIONS_DENIED","response","launchCamera","presentationStyle","cameraType","mediaType","didCancel","errorCode","_options$onOpenFailur2","DEVICE_UNAVAILABLE","Error","errorMessage","fileSize","size","uri","assets","normalizeFile","openMediaLibrary","selectionLimit","_options$onOpenFailur3","launchImageLibrary","_options$onOpenFailur4","Promise","all","slice","map","_ref2","openDocument","pickSingle","e","isCancel","isInProgress","_options$onOpenFailur5","UNKNOWN","save","downloadFile","mediaTypeMap","externalDirMap","externalDir","cpExternal","catch","Logger","error","_default","exports"],"sources":["createFileService.native.ts"],"sourcesContent":["import type { CameraRoll } from '@react-native-camera-roll/camera-roll';\nimport { Platform } from 'react-native';\nimport type * as DocumentPicker from 'react-native-document-picker';\nimport type * as FileAccess from 'react-native-file-access';\nimport type * as ImagePicker from 'react-native-image-picker';\nimport type * as Permissions from 'react-native-permissions';\nimport type { Permission } from 'react-native-permissions';\n\nimport {\n Logger,\n getFileExtension,\n getFileExtensionFromMime,\n getFileExtensionFromUri,\n getFileType,\n normalizeFileName,\n} from '@sendbird/uikit-utils';\n\nimport SBUError from '../libs/SBUError';\nimport nativePermissionGranted from '../utils/nativePermissionGranted';\nimport normalizeFile from '../utils/normalizeFile';\nimport type {\n FilePickerResponse,\n FileServiceInterface,\n OpenCameraOptions,\n OpenDocumentOptions,\n OpenMediaLibraryOptions,\n SaveOptions,\n} from './types';\n\nfunction getAndroidStoragePermissionsByAPILevel(permissionModule: typeof Permissions): Permission[] {\n if (Platform.OS !== 'android') return [];\n\n if (Platform.Version > 32) {\n return [\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_AUDIO,\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_IMAGES,\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_VIDEO,\n ];\n }\n\n if (Platform.Version > 28) {\n return [permissionModule.PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE];\n }\n\n return [\n permissionModule.PERMISSIONS.ANDROID.WRITE_EXTERNAL_STORAGE,\n permissionModule.PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE,\n ];\n}\n\nconst createNativeFileService = ({\n imagePickerModule,\n documentPickerModule,\n permissionModule,\n mediaLibraryModule,\n fsModule,\n}: {\n imagePickerModule: typeof ImagePicker;\n documentPickerModule: typeof DocumentPicker;\n permissionModule: typeof Permissions;\n mediaLibraryModule: typeof CameraRoll;\n fsModule: typeof FileAccess;\n}): FileServiceInterface => {\n const cameraPermissions: Permission[] = Platform.select({\n ios: [permissionModule.PERMISSIONS.IOS.CAMERA, permissionModule.PERMISSIONS.IOS.MICROPHONE],\n android: [permissionModule.PERMISSIONS.ANDROID.CAMERA],\n default: [],\n });\n const mediaLibraryPermissions: Permission[] = Platform.select({\n ios: [permissionModule.PERMISSIONS.IOS.MEDIA_LIBRARY, permissionModule.PERMISSIONS.IOS.PHOTO_LIBRARY],\n android: getAndroidStoragePermissionsByAPILevel(permissionModule),\n default: [],\n });\n\n class NativeFileService implements FileServiceInterface {\n async hasCameraPermission(): Promise<boolean> {\n const status = await permissionModule.checkMultiple(cameraPermissions);\n return nativePermissionGranted(status);\n }\n async requestCameraPermission(): Promise<boolean> {\n const status = await permissionModule.requestMultiple(cameraPermissions);\n return nativePermissionGranted(status);\n }\n async hasMediaLibraryPermission(): Promise<boolean> {\n const status = await permissionModule.checkMultiple(mediaLibraryPermissions);\n if (\n __DEV__ &&\n Platform.OS === 'ios' &&\n status['ios.permission.MEDIA_LIBRARY'] === 'unavailable' &&\n status['ios.permission.PHOTO_LIBRARY'] === 'granted'\n ) {\n return true;\n }\n return nativePermissionGranted(status);\n }\n async requestMediaLibraryPermission(): Promise<boolean> {\n const status = await permissionModule.requestMultiple(mediaLibraryPermissions);\n return nativePermissionGranted(status);\n }\n\n async openCamera(options?: OpenCameraOptions): Promise<FilePickerResponse> {\n const hasPermission = await this.hasCameraPermission();\n if (!hasPermission) {\n const granted = await this.requestCameraPermission();\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const response = await imagePickerModule.launchCamera({\n presentationStyle: 'fullScreen',\n cameraType: options?.cameraType ?? 'back',\n mediaType: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return 'photo';\n case 'video':\n return 'video';\n case 'all':\n return 'mixed';\n default:\n return 'photo';\n }\n })(),\n });\n if (response.didCancel) return null;\n if (response.errorCode === 'camera_unavailable') {\n options?.onOpenFailure?.(SBUError.DEVICE_UNAVAILABLE, new Error(response.errorMessage));\n return null;\n }\n\n const { fileName: name, fileSize: size, type, uri } = response.assets?.[0] ?? {};\n return normalizeFile({ uri, size, name, type });\n }\n async openMediaLibrary(options?: OpenMediaLibraryOptions): Promise<FilePickerResponse[] | null> {\n /**\n * NOTE: options.selectionLimit {@link https://github.com/react-native-image-picker/react-native-image-picker#options}\n * We do not support 0 (any number of files)\n **/\n const selectionLimit = options?.selectionLimit || 1;\n const hasPermission = await this.hasMediaLibraryPermission();\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission();\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const response = await imagePickerModule.launchImageLibrary({\n presentationStyle: 'fullScreen',\n selectionLimit,\n mediaType: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return 'photo';\n case 'video':\n return 'video';\n case 'all':\n return 'mixed';\n default:\n return 'photo';\n }\n })(),\n });\n if (response.didCancel) return null;\n if (response.errorCode === 'camera_unavailable') {\n options?.onOpenFailure?.(SBUError.DEVICE_UNAVAILABLE, new Error(response.errorMessage));\n return null;\n }\n\n return Promise.all(\n (response.assets || [])\n .slice(0, selectionLimit)\n .map(({ fileName: name, fileSize: size, type, uri }) => normalizeFile({ uri, size, name, type })),\n );\n }\n async openDocument(options?: OpenDocumentOptions): Promise<FilePickerResponse> {\n try {\n const { uri, size, name, type } = await documentPickerModule.pickSingle();\n return normalizeFile({ uri, size, name, type });\n } catch (e) {\n if (!documentPickerModule.isCancel(e) && documentPickerModule.isInProgress(e)) {\n options?.onOpenFailure?.(SBUError.UNKNOWN, e);\n }\n return null;\n }\n }\n async save(options: SaveOptions): Promise<string> {\n const hasPermission = await this.hasMediaLibraryPermission();\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission();\n if (!granted) throw new Error('Permission not granted');\n }\n\n const { downloadedPath, file } = await this.downloadFile(options);\n\n if (Platform.OS === 'ios') {\n if (file.type === 'image' || file.type === 'video') {\n const mediaTypeMap = { 'image': 'photo', 'video': 'video' } as const;\n const mediaType = mediaTypeMap[file.type];\n await mediaLibraryModule.save(downloadedPath, { type: mediaType });\n }\n }\n\n if (Platform.OS === 'android') {\n const externalDirMap = { 'file': 'downloads', 'audio': 'audio', 'image': 'images', 'video': 'video' } as const;\n const externalDir = externalDirMap[file.type];\n await fsModule.FileSystem.cpExternal(downloadedPath, file.name, externalDir).catch(() => {\n Logger.error('Failed to save file to external storage. Retry saving to downloads directory instead.');\n return fsModule.FileSystem.cpExternal(downloadedPath, file.name, 'downloads');\n });\n }\n\n return downloadedPath;\n }\n\n private buildDownloadPath = async (options: SaveOptions) => {\n const dirname = Platform.select({ android: fsModule.Dirs.CacheDir, default: fsModule.Dirs.DocumentDir });\n const context = { dirname, filename: options.fileName };\n const extension =\n getFileExtension(options.fileName) ||\n getFileExtensionFromMime(options.fileType) ||\n getFileExtension(options.fileUrl) ||\n (await getFileExtensionFromUri(options.fileUrl));\n\n if (extension) context.filename = normalizeFileName(context.filename, extension);\n\n return { path: `${context.dirname}/${context.filename}`, ...context };\n };\n\n private downloadFile = async (options: SaveOptions) => {\n const { path, filename } = await this.buildDownloadPath(options);\n await fsModule.FileSystem.fetch(options.fileUrl, { path });\n return {\n downloadedPath: path,\n file: {\n name: filename,\n type: getFileType(getFileExtension(path)),\n } as const,\n };\n };\n }\n\n return new NativeFileService();\n};\n\nexport default createNativeFileService;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_reactNative","require","_uikitUtils","_SBUError","_interopRequireDefault","_nativePermissionGranted","_normalizeFile","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","getAndroidStoragePermissionsByAPILevel","permissionModule","Platform","OS","Version","PERMISSIONS","ANDROID","READ_MEDIA_AUDIO","READ_MEDIA_IMAGES","READ_MEDIA_VIDEO","READ_EXTERNAL_STORAGE","WRITE_EXTERNAL_STORAGE","createNativeFileService","_ref","imagePickerModule","documentPickerModule","mediaLibraryModule","fsModule","cameraPermissions","select","ios","IOS","CAMERA","MICROPHONE","android","mediaLibraryPermissions","MEDIA_LIBRARY","PHOTO_LIBRARY","NativeFileService","constructor","options","dirname","Dirs","CacheDir","DocumentDir","context","filename","fileName","extension","getFileExtension","getFileExtensionFromMime","fileType","fileUrl","getFileExtensionFromUri","normalizeFileName","path","buildDownloadPath","FileSystem","fetch","downloadedPath","file","name","type","getFileType","hasCameraPermission","status","checkMultiple","nativePermissionGranted","requestCameraPermission","requestMultiple","hasMediaLibraryPermission","__DEV__","requestMediaLibraryPermission","openCamera","_response$assets","hasPermission","granted","_options$onOpenFailur","onOpenFailure","SBUError","PERMISSIONS_DENIED","response","launchCamera","presentationStyle","cameraType","mediaType","didCancel","errorCode","_options$onOpenFailur2","DEVICE_UNAVAILABLE","Error","errorMessage","fileSize","size","uri","assets","normalizeFile","openMediaLibrary","selectionLimit","_options$onOpenFailur3","launchImageLibrary","_options$onOpenFailur4","Promise","all","slice","map","_ref2","openDocument","pickSingle","e","isCancel","isInProgress","_options$onOpenFailur5","UNKNOWN","save","downloadFile","mediaTypeMap","externalDirMap","externalDir","cpExternal","catch","Logger","error","createRecordFilePath","customExtension","arguments","length","Date","now","recordFilePath","startsWith","_default","exports"],"sources":["createFileService.native.ts"],"sourcesContent":["import type { CameraRoll } from '@react-native-camera-roll/camera-roll';\nimport { Platform } from 'react-native';\nimport type * as DocumentPicker from 'react-native-document-picker';\nimport type * as FileAccess from 'react-native-file-access';\nimport type * as ImagePicker from 'react-native-image-picker';\nimport type * as Permissions from 'react-native-permissions';\nimport type { Permission } from 'react-native-permissions';\n\nimport {\n Logger,\n getFileExtension,\n getFileExtensionFromMime,\n getFileExtensionFromUri,\n getFileType,\n normalizeFileName,\n} from '@sendbird/uikit-utils';\n\nimport SBUError from '../libs/SBUError';\nimport nativePermissionGranted from '../utils/nativePermissionGranted';\nimport normalizeFile from '../utils/normalizeFile';\nimport type {\n FilePickerResponse,\n FileServiceInterface,\n OpenCameraOptions,\n OpenDocumentOptions,\n OpenMediaLibraryOptions,\n SaveOptions,\n} from './types';\n\nfunction getAndroidStoragePermissionsByAPILevel(permissionModule: typeof Permissions): Permission[] {\n if (Platform.OS !== 'android') return [];\n\n if (Platform.Version > 32) {\n return [\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_AUDIO,\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_IMAGES,\n permissionModule.PERMISSIONS.ANDROID.READ_MEDIA_VIDEO,\n ];\n }\n\n if (Platform.Version > 28) {\n return [permissionModule.PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE];\n }\n\n return [\n permissionModule.PERMISSIONS.ANDROID.WRITE_EXTERNAL_STORAGE,\n permissionModule.PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE,\n ];\n}\n\nconst createNativeFileService = ({\n imagePickerModule,\n documentPickerModule,\n permissionModule,\n mediaLibraryModule,\n fsModule,\n}: {\n imagePickerModule: typeof ImagePicker;\n documentPickerModule: typeof DocumentPicker;\n permissionModule: typeof Permissions;\n mediaLibraryModule: typeof CameraRoll;\n fsModule: typeof FileAccess;\n}): FileServiceInterface => {\n const cameraPermissions: Permission[] = Platform.select({\n ios: [permissionModule.PERMISSIONS.IOS.CAMERA, permissionModule.PERMISSIONS.IOS.MICROPHONE],\n android: [permissionModule.PERMISSIONS.ANDROID.CAMERA],\n default: [],\n });\n const mediaLibraryPermissions: Permission[] = Platform.select({\n ios: [permissionModule.PERMISSIONS.IOS.MEDIA_LIBRARY, permissionModule.PERMISSIONS.IOS.PHOTO_LIBRARY],\n android: getAndroidStoragePermissionsByAPILevel(permissionModule),\n default: [],\n });\n\n class NativeFileService implements FileServiceInterface {\n async hasCameraPermission(): Promise<boolean> {\n const status = await permissionModule.checkMultiple(cameraPermissions);\n return nativePermissionGranted(status);\n }\n async requestCameraPermission(): Promise<boolean> {\n const status = await permissionModule.requestMultiple(cameraPermissions);\n return nativePermissionGranted(status);\n }\n async hasMediaLibraryPermission(): Promise<boolean> {\n const status = await permissionModule.checkMultiple(mediaLibraryPermissions);\n if (\n __DEV__ &&\n Platform.OS === 'ios' &&\n status['ios.permission.MEDIA_LIBRARY'] === 'unavailable' &&\n status['ios.permission.PHOTO_LIBRARY'] === 'granted'\n ) {\n return true;\n }\n return nativePermissionGranted(status);\n }\n async requestMediaLibraryPermission(): Promise<boolean> {\n const status = await permissionModule.requestMultiple(mediaLibraryPermissions);\n return nativePermissionGranted(status);\n }\n\n async openCamera(options?: OpenCameraOptions): Promise<FilePickerResponse> {\n const hasPermission = await this.hasCameraPermission();\n if (!hasPermission) {\n const granted = await this.requestCameraPermission();\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const response = await imagePickerModule.launchCamera({\n presentationStyle: 'fullScreen',\n cameraType: options?.cameraType ?? 'back',\n mediaType: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return 'photo';\n case 'video':\n return 'video';\n case 'all':\n return 'mixed';\n default:\n return 'photo';\n }\n })(),\n });\n if (response.didCancel) return null;\n if (response.errorCode === 'camera_unavailable') {\n options?.onOpenFailure?.(SBUError.DEVICE_UNAVAILABLE, new Error(response.errorMessage));\n return null;\n }\n\n const { fileName: name, fileSize: size, type, uri } = response.assets?.[0] ?? {};\n return normalizeFile({ uri, size, name, type });\n }\n async openMediaLibrary(options?: OpenMediaLibraryOptions): Promise<FilePickerResponse[] | null> {\n /**\n * NOTE: options.selectionLimit {@link https://github.com/react-native-image-picker/react-native-image-picker#options}\n * We do not support 0 (any number of files)\n **/\n const selectionLimit = options?.selectionLimit || 1;\n const hasPermission = await this.hasMediaLibraryPermission();\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission();\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const response = await imagePickerModule.launchImageLibrary({\n presentationStyle: 'fullScreen',\n selectionLimit,\n mediaType: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return 'photo';\n case 'video':\n return 'video';\n case 'all':\n return 'mixed';\n default:\n return 'photo';\n }\n })(),\n });\n if (response.didCancel) return null;\n if (response.errorCode === 'camera_unavailable') {\n options?.onOpenFailure?.(SBUError.DEVICE_UNAVAILABLE, new Error(response.errorMessage));\n return null;\n }\n\n return Promise.all(\n (response.assets || [])\n .slice(0, selectionLimit)\n .map(({ fileName: name, fileSize: size, type, uri }) => normalizeFile({ uri, size, name, type })),\n );\n }\n async openDocument(options?: OpenDocumentOptions): Promise<FilePickerResponse> {\n try {\n const { uri, size, name, type } = await documentPickerModule.pickSingle();\n return normalizeFile({ uri, size, name, type });\n } catch (e) {\n if (!documentPickerModule.isCancel(e) && documentPickerModule.isInProgress(e)) {\n options?.onOpenFailure?.(SBUError.UNKNOWN, e);\n }\n return null;\n }\n }\n async save(options: SaveOptions): Promise<string> {\n const hasPermission = await this.hasMediaLibraryPermission();\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission();\n if (!granted) throw new Error('Permission not granted');\n }\n\n const { downloadedPath, file } = await this.downloadFile(options);\n\n if (Platform.OS === 'ios') {\n if (file.type === 'image' || file.type === 'video') {\n const mediaTypeMap = { 'image': 'photo', 'video': 'video' } as const;\n const mediaType = mediaTypeMap[file.type];\n await mediaLibraryModule.save(downloadedPath, { type: mediaType });\n }\n }\n\n if (Platform.OS === 'android') {\n const externalDirMap = { 'file': 'downloads', 'audio': 'audio', 'image': 'images', 'video': 'video' } as const;\n const externalDir = externalDirMap[file.type];\n await fsModule.FileSystem.cpExternal(downloadedPath, file.name, externalDir).catch(() => {\n Logger.error('Failed to save file to external storage. Retry saving to downloads directory instead.');\n return fsModule.FileSystem.cpExternal(downloadedPath, file.name, 'downloads');\n });\n }\n\n return downloadedPath;\n }\n\n private buildDownloadPath = async (options: SaveOptions) => {\n const dirname = Platform.select({ android: fsModule.Dirs.CacheDir, default: fsModule.Dirs.DocumentDir });\n const context = { dirname, filename: options.fileName };\n const extension =\n getFileExtension(options.fileName) ||\n getFileExtensionFromMime(options.fileType) ||\n getFileExtension(options.fileUrl) ||\n (await getFileExtensionFromUri(options.fileUrl));\n\n if (extension) context.filename = normalizeFileName(context.filename, extension);\n\n return { path: `${context.dirname}/${context.filename}`, ...context };\n };\n\n private downloadFile = async (options: SaveOptions) => {\n const { path, filename } = await this.buildDownloadPath(options);\n await fsModule.FileSystem.fetch(options.fileUrl, { path });\n return {\n downloadedPath: path,\n file: {\n name: filename,\n type: getFileType(getFileExtension(path)),\n } as const,\n };\n };\n\n createRecordFilePath(customExtension = 'm4a'): { recordFilePath: string; uri: string } {\n const filename = `record-${Date.now()}.${customExtension}`;\n const path = `${fsModule.Dirs.CacheDir}/${filename}`;\n return Platform.select({\n ios: {\n uri: path,\n recordFilePath: filename,\n },\n android: {\n uri: path.startsWith('file://') ? path : 'file://' + path,\n recordFilePath: path,\n },\n default: {\n uri: path,\n recordFilePath: path,\n },\n });\n }\n }\n\n return new NativeFileService();\n};\n\nexport default createNativeFileService;\n"],"mappings":"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"}