@sendbird/uikit-react-native 3.5.4 → 3.7.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 (251) hide show
  1. package/README.md +11 -27
  2. package/lib/commonjs/components/ChannelInput/SendInput.js +23 -6
  3. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  4. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  5. package/lib/commonjs/components/ChannelMessageList/index.js +22 -4
  6. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  7. package/lib/commonjs/components/ChannelThreadMessageList/index.js +349 -0
  8. package/lib/commonjs/components/ChannelThreadMessageList/index.js.map +1 -0
  9. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +2 -2
  10. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  11. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js +100 -0
  12. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js.map +1 -0
  13. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +24 -6
  14. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  15. package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js +23 -6
  16. package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js.map +1 -1
  17. package/lib/commonjs/components/ThreadChatFlatList/index.js +76 -0
  18. package/lib/commonjs/components/ThreadChatFlatList/index.js.map +1 -0
  19. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js +41 -0
  20. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js.map +1 -0
  21. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js +74 -0
  22. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js.map +1 -0
  23. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js +42 -0
  24. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js.map +1 -0
  25. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js +94 -0
  26. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map +1 -0
  27. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js +61 -0
  28. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js.map +1 -0
  29. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js +127 -0
  30. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js.map +1 -0
  31. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js +206 -0
  32. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js.map +1 -0
  33. package/lib/commonjs/containers/SendbirdUIKitContainer.js +12 -11
  34. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  35. package/lib/commonjs/contexts/SendbirdChatCtx.js +7 -0
  36. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  37. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +28 -5
  38. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  39. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +14 -4
  40. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  41. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  42. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadHeader.js +82 -0
  43. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadHeader.js.map +1 -0
  44. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadInput.js +44 -0
  45. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadInput.js.map +1 -0
  46. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +127 -0
  47. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -0
  48. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +315 -0
  49. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -0
  50. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js +27 -0
  51. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js.map +1 -0
  52. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js +27 -0
  53. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js.map +1 -0
  54. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js +195 -0
  55. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js.map +1 -0
  56. package/lib/commonjs/domain/groupChannelThread/index.js +69 -0
  57. package/lib/commonjs/domain/groupChannelThread/index.js.map +1 -0
  58. package/lib/commonjs/domain/groupChannelThread/module/createGroupChannelThreadModule.js +42 -0
  59. package/lib/commonjs/domain/groupChannelThread/module/createGroupChannelThreadModule.js.map +1 -0
  60. package/lib/commonjs/domain/groupChannelThread/module/moduleContext.js +148 -0
  61. package/lib/commonjs/domain/groupChannelThread/module/moduleContext.js.map +1 -0
  62. package/lib/commonjs/domain/groupChannelThread/types.js +6 -0
  63. package/lib/commonjs/domain/groupChannelThread/types.js.map +1 -0
  64. package/lib/commonjs/fragments/createGroupChannelFragment.js +30 -5
  65. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  66. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js +267 -0
  67. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js.map +1 -0
  68. package/lib/commonjs/hooks/useMentionSuggestion.js +5 -2
  69. package/lib/commonjs/hooks/useMentionSuggestion.js.map +1 -1
  70. package/lib/commonjs/index.js +72 -40
  71. package/lib/commonjs/index.js.map +1 -1
  72. package/lib/commonjs/libs/EmojiManager.js.map +1 -1
  73. package/lib/commonjs/libs/InternalLocalCacheStorage.js +65 -19
  74. package/lib/commonjs/libs/InternalLocalCacheStorage.js.map +1 -1
  75. package/lib/commonjs/libs/VoiceMessageStatusManager.js +66 -0
  76. package/lib/commonjs/libs/VoiceMessageStatusManager.js.map +1 -0
  77. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  78. package/lib/commonjs/localization/createBaseStringSet.js +25 -3
  79. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  80. package/lib/commonjs/platform/createMediaService.native.js.map +1 -1
  81. package/lib/commonjs/types.js.map +1 -1
  82. package/lib/commonjs/version.js +1 -1
  83. package/lib/commonjs/version.js.map +1 -1
  84. package/lib/module/components/ChannelInput/SendInput.js +23 -6
  85. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  86. package/lib/module/components/ChannelInput/index.js.map +1 -1
  87. package/lib/module/components/ChannelMessageList/index.js +22 -4
  88. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  89. package/lib/module/components/ChannelThreadMessageList/index.js +341 -0
  90. package/lib/module/components/ChannelThreadMessageList/index.js.map +1 -0
  91. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +2 -2
  92. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  93. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js +92 -0
  94. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js.map +1 -0
  95. package/lib/module/components/GroupChannelMessageRenderer/index.js +24 -6
  96. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  97. package/lib/module/components/ReactionAddons/MessageReactionAddon.js +23 -6
  98. package/lib/module/components/ReactionAddons/MessageReactionAddon.js.map +1 -1
  99. package/lib/module/components/ThreadChatFlatList/index.js +66 -0
  100. package/lib/module/components/ThreadChatFlatList/index.js.map +1 -0
  101. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js +34 -0
  102. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js.map +1 -0
  103. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js +67 -0
  104. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js.map +1 -0
  105. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js +34 -0
  106. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js.map +1 -0
  107. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js +87 -0
  108. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map +1 -0
  109. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js +54 -0
  110. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js.map +1 -0
  111. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js +119 -0
  112. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js.map +1 -0
  113. package/lib/module/components/ThreadParentMessageRenderer/index.js +196 -0
  114. package/lib/module/components/ThreadParentMessageRenderer/index.js.map +1 -0
  115. package/lib/module/containers/SendbirdUIKitContainer.js +13 -12
  116. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  117. package/lib/module/contexts/SendbirdChatCtx.js +6 -0
  118. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  119. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +30 -6
  120. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  121. package/lib/module/domain/groupChannel/module/moduleContext.js +14 -4
  122. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  123. package/lib/module/domain/groupChannel/types.js.map +1 -1
  124. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadHeader.js +73 -0
  125. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadHeader.js.map +1 -0
  126. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadInput.js +34 -0
  127. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadInput.js.map +1 -0
  128. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +117 -0
  129. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -0
  130. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +305 -0
  131. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -0
  132. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js +19 -0
  133. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js.map +1 -0
  134. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js +19 -0
  135. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js.map +1 -0
  136. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js +185 -0
  137. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js.map +1 -0
  138. package/lib/module/domain/groupChannelThread/index.js +9 -0
  139. package/lib/module/domain/groupChannelThread/index.js.map +1 -0
  140. package/lib/module/domain/groupChannelThread/module/createGroupChannelThreadModule.js +34 -0
  141. package/lib/module/domain/groupChannelThread/module/createGroupChannelThreadModule.js.map +1 -0
  142. package/lib/module/domain/groupChannelThread/module/moduleContext.js +137 -0
  143. package/lib/module/domain/groupChannelThread/module/moduleContext.js.map +1 -0
  144. package/lib/module/domain/groupChannelThread/types.js +2 -0
  145. package/lib/module/domain/groupChannelThread/types.js.map +1 -0
  146. package/lib/module/fragments/createGroupChannelFragment.js +33 -7
  147. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  148. package/lib/module/fragments/createGroupChannelThreadFragment.js +257 -0
  149. package/lib/module/fragments/createGroupChannelThreadFragment.js.map +1 -0
  150. package/lib/module/hooks/useMentionSuggestion.js +5 -2
  151. package/lib/module/hooks/useMentionSuggestion.js.map +1 -1
  152. package/lib/module/index.js +3 -0
  153. package/lib/module/index.js.map +1 -1
  154. package/lib/module/libs/EmojiManager.js.map +1 -1
  155. package/lib/module/libs/InternalLocalCacheStorage.js +65 -19
  156. package/lib/module/libs/InternalLocalCacheStorage.js.map +1 -1
  157. package/lib/module/libs/VoiceMessageStatusManager.js +59 -0
  158. package/lib/module/libs/VoiceMessageStatusManager.js.map +1 -0
  159. package/lib/module/localization/StringSet.type.js.map +1 -1
  160. package/lib/module/localization/createBaseStringSet.js +27 -4
  161. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  162. package/lib/module/platform/createMediaService.native.js.map +1 -1
  163. package/lib/module/types.js.map +1 -1
  164. package/lib/module/version.js +1 -1
  165. package/lib/module/version.js.map +1 -1
  166. package/lib/typescript/src/components/ChannelInput/index.d.ts +1 -0
  167. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +5 -2
  168. package/lib/typescript/src/components/ChannelThreadMessageList/index.d.ts +55 -0
  169. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.d.ts +1 -1
  170. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.d.ts +9 -0
  171. package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +3 -1
  172. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +3 -1
  173. package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +3 -1
  174. package/lib/typescript/src/components/ReactionAddons/index.d.ts +2 -1
  175. package/lib/typescript/src/components/ThreadChatFlatList/index.d.ts +9 -0
  176. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.d.ts +4 -0
  177. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.d.ts +4 -0
  178. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.d.ts +9 -0
  179. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.d.ts +13 -0
  180. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.d.ts +10 -0
  181. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.d.ts +10 -0
  182. package/lib/typescript/src/components/ThreadParentMessageRenderer/index.d.ts +20 -0
  183. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +8 -10
  184. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +15 -1
  185. package/lib/typescript/src/domain/groupChannel/types.d.ts +4 -1
  186. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadHeader.d.ts +4 -0
  187. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadInput.d.ts +3 -0
  188. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.d.ts +7 -0
  189. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.d.ts +8 -0
  190. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.d.ts +3 -0
  191. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.d.ts +3 -0
  192. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.d.ts +4 -0
  193. package/lib/typescript/src/domain/groupChannelThread/index.d.ts +8 -0
  194. package/lib/typescript/src/domain/groupChannelThread/module/createGroupChannelThreadModule.d.ts +3 -0
  195. package/lib/typescript/src/domain/groupChannelThread/module/moduleContext.d.ts +3 -0
  196. package/lib/typescript/src/domain/groupChannelThread/types.d.ts +136 -0
  197. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
  198. package/lib/typescript/src/fragments/createGroupChannelThreadFragment.d.ts +5 -0
  199. package/lib/typescript/src/hooks/useChannelInputItems.d.ts +1 -1
  200. package/lib/typescript/src/index.d.ts +3 -0
  201. package/lib/typescript/src/libs/InternalLocalCacheStorage.d.ts +5 -4
  202. package/lib/typescript/src/libs/VoiceMessageStatusManager.d.ts +11 -0
  203. package/lib/typescript/src/localization/StringSet.type.d.ts +23 -0
  204. package/lib/typescript/src/localization/createBaseStringSet.d.ts +1 -1
  205. package/lib/typescript/src/types.d.ts +4 -1
  206. package/lib/typescript/src/version.d.ts +1 -1
  207. package/package.json +27 -22
  208. package/src/components/ChannelInput/SendInput.tsx +24 -5
  209. package/src/components/ChannelInput/index.tsx +1 -0
  210. package/src/components/ChannelMessageList/index.tsx +27 -5
  211. package/src/components/ChannelThreadMessageList/index.tsx +406 -0
  212. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +3 -3
  213. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.tsx +96 -0
  214. package/src/components/GroupChannelMessageRenderer/index.tsx +21 -5
  215. package/src/components/ReactionAddons/MessageReactionAddon.tsx +38 -5
  216. package/src/components/ThreadChatFlatList/index.tsx +63 -0
  217. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.tsx +36 -0
  218. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.tsx +61 -0
  219. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.tsx +45 -0
  220. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.tsx +107 -0
  221. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.tsx +133 -0
  222. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.tsx +65 -0
  223. package/src/components/ThreadParentMessageRenderer/index.tsx +194 -0
  224. package/src/containers/SendbirdUIKitContainer.tsx +28 -17
  225. package/src/contexts/SendbirdChatCtx.tsx +20 -0
  226. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +37 -8
  227. package/src/domain/groupChannel/module/moduleContext.tsx +12 -2
  228. package/src/domain/groupChannel/types.ts +5 -0
  229. package/src/domain/groupChannelThread/component/GroupChannelThreadHeader.tsx +63 -0
  230. package/src/domain/groupChannelThread/component/GroupChannelThreadInput.tsx +38 -0
  231. package/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.tsx +105 -0
  232. package/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.tsx +326 -0
  233. package/src/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.tsx +18 -0
  234. package/src/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.tsx +18 -0
  235. package/src/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.tsx +174 -0
  236. package/src/domain/groupChannelThread/index.ts +8 -0
  237. package/src/domain/groupChannelThread/module/createGroupChannelThreadModule.tsx +35 -0
  238. package/src/domain/groupChannelThread/module/moduleContext.tsx +165 -0
  239. package/src/domain/groupChannelThread/types.ts +184 -0
  240. package/src/fragments/createGroupChannelFragment.tsx +38 -8
  241. package/src/fragments/createGroupChannelThreadFragment.tsx +280 -0
  242. package/src/hooks/useMentionSuggestion.ts +13 -9
  243. package/src/index.ts +4 -0
  244. package/src/libs/EmojiManager.ts +2 -2
  245. package/src/libs/InternalLocalCacheStorage.ts +70 -21
  246. package/src/libs/VoiceMessageStatusManager.ts +56 -0
  247. package/src/localization/StringSet.type.ts +27 -0
  248. package/src/localization/createBaseStringSet.ts +33 -4
  249. package/src/platform/createMediaService.native.tsx +9 -1
  250. package/src/types.ts +6 -1
  251. package/src/version.ts +1 -1
@@ -0,0 +1,257 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
3
+ import { Box, useToast } from '@sendbird/uikit-react-native-foundation';
4
+ import { useGroupChannelThreadMessages } from '@sendbird/uikit-tools';
5
+ import { getReadableFileSize } from '@sendbird/uikit-utils';
6
+ import { NOOP, PASS, confirmAndMarkAsRead, messageComparator, useFreshCallback, useRefTracker } from '@sendbird/uikit-utils';
7
+ import GroupChannelMessageRenderer from '../components/GroupChannelMessageRenderer';
8
+ import StatusComposition from '../components/StatusComposition';
9
+ import createGroupChannelThreadModule from '../domain/groupChannelThread/module/createGroupChannelThreadModule';
10
+ import { useLocalization, usePlatformService, useSendbirdChat } from '../hooks/useContext';
11
+ import pubsub from '../utils/pubsub';
12
+ const createGroupChannelThreadFragment = initModule => {
13
+ const GroupChannelThreadModule = createGroupChannelThreadModule(initModule);
14
+ return _ref => {
15
+ let {
16
+ renderMessage,
17
+ enableMessageGrouping = true,
18
+ onPressHeaderLeft = NOOP,
19
+ onPressHeaderSubtitle = NOOP,
20
+ onPressMediaMessage = NOOP,
21
+ onParentMessageDeleted = NOOP,
22
+ onChannelDeleted = NOOP,
23
+ onBeforeSendUserMessage = PASS,
24
+ onBeforeSendFileMessage = PASS,
25
+ onBeforeUpdateUserMessage = PASS,
26
+ onBeforeUpdateFileMessage = PASS,
27
+ channel,
28
+ parentMessage,
29
+ startingPoint,
30
+ keyboardAvoidOffset,
31
+ sortComparator = threadMessageComparator,
32
+ flatListProps
33
+ } = _ref;
34
+ const {
35
+ playerService,
36
+ recorderService
37
+ } = usePlatformService();
38
+ const {
39
+ sdk,
40
+ currentUser,
41
+ sbOptions,
42
+ voiceMessageStatusManager,
43
+ groupChannelFragmentOptions
44
+ } = useSendbirdChat();
45
+ const [groupChannelThreadPubSub] = useState(() => pubsub());
46
+ const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);
47
+ const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);
48
+ const toast = useToast();
49
+ const {
50
+ STRINGS
51
+ } = useLocalization();
52
+ const [_parentMessage, setParentMessage] = useState(parentMessage);
53
+ const {
54
+ loading,
55
+ messages,
56
+ newMessages,
57
+ resetNewMessages,
58
+ loadNext,
59
+ loadPrevious,
60
+ hasNext,
61
+ sendFileMessage,
62
+ sendUserMessage,
63
+ updateFileMessage,
64
+ updateUserMessage,
65
+ resendMessage,
66
+ deleteMessage,
67
+ resetWithStartingPoint
68
+ } = useGroupChannelThreadMessages(sdk, channel, _parentMessage, {
69
+ shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,
70
+ onMessagesReceived(messages) {
71
+ groupChannelThreadPubSub.publish({
72
+ type: 'MESSAGES_RECEIVED',
73
+ data: {
74
+ messages
75
+ }
76
+ });
77
+ },
78
+ onMessagesUpdated(messages) {
79
+ groupChannelThreadPubSub.publish({
80
+ type: 'MESSAGES_UPDATED',
81
+ data: {
82
+ messages
83
+ }
84
+ });
85
+ },
86
+ onParentMessageUpdated(parentMessage) {
87
+ setParentMessage(parentMessage);
88
+ },
89
+ onParentMessageDeleted: () => {
90
+ toast.show(STRINGS.TOAST.THREAD_PARENT_MESSAGE_DELETED_ERROR, 'error');
91
+ onParentMessageDeleted === null || onParentMessageDeleted === void 0 ? void 0 : onParentMessageDeleted();
92
+ },
93
+ onChannelDeleted,
94
+ onCurrentUserBanned: onChannelDeleted,
95
+ sortComparator,
96
+ markAsRead: confirmAndMarkAsRead,
97
+ isReactionEnabled: sbOptions.uikit.groupChannel.channel.enableReactions,
98
+ startingPoint
99
+ });
100
+ const onBlurFragment = () => {
101
+ return Promise.allSettled([playerService.reset(), recorderService.reset()]);
102
+ };
103
+ const _onPressHeaderLeft = useFreshCallback(async () => {
104
+ await onBlurFragment();
105
+ voiceMessageStatusManager.publishAll();
106
+ onPressHeaderLeft();
107
+ });
108
+ const _onPressHeaderSubtitle = useFreshCallback(async () => {
109
+ await onBlurFragment();
110
+ voiceMessageStatusManager.publishAll();
111
+ groupChannelFragmentOptions.pubsub.publish({
112
+ type: 'OVERRIDE_SEARCH_ITEM_STARTING_POINT',
113
+ data: {
114
+ startingPoint: parentMessage.createdAt
115
+ }
116
+ });
117
+ onPressHeaderSubtitle();
118
+ });
119
+ const _onPressMediaMessage = useFreshCallback(async (message, deleteMessage, uri) => {
120
+ await onBlurFragment();
121
+ onPressMediaMessage(message, deleteMessage, uri);
122
+ });
123
+ useEffect(() => {
124
+ return () => {
125
+ onBlurFragment();
126
+ };
127
+ }, []);
128
+ const renderItem = useFreshCallback(props => {
129
+ const content = renderMessage ? renderMessage(props) : /*#__PURE__*/React.createElement(GroupChannelMessageRenderer, _extends({
130
+ hideParentMessage: true
131
+ }, props));
132
+ return /*#__PURE__*/React.createElement(Box, null, content);
133
+ });
134
+ const memoizedFlatListProps = useMemo(() => ({
135
+ ListHeaderComponent: /*#__PURE__*/React.createElement(GroupChannelThreadModule.ParentMessageInfo, {
136
+ channel: channel,
137
+ currentUserId: currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId,
138
+ onDeleteMessage: deleteMessage,
139
+ onPressMediaMessage: _onPressMediaMessage
140
+ }),
141
+ contentContainerStyle: {
142
+ flexGrow: 1
143
+ },
144
+ ...flatListProps
145
+ }), [flatListProps]);
146
+ const onResetMessageList = useCallback(async () => {
147
+ return await resetWithStartingPoint(Number.MAX_SAFE_INTEGER);
148
+ }, []);
149
+ const onResetMessageListWithStartingPoint = useCallback(async startingPoint => {
150
+ return await resetWithStartingPoint(startingPoint);
151
+ }, []);
152
+ const onPending = message => {
153
+ groupChannelThreadPubSub.publish({
154
+ type: 'MESSAGE_SENT_PENDING',
155
+ data: {
156
+ message
157
+ }
158
+ });
159
+ };
160
+ const onSent = message => {
161
+ groupChannelThreadPubSub.publish({
162
+ type: 'MESSAGE_SENT_SUCCESS',
163
+ data: {
164
+ message
165
+ }
166
+ });
167
+ };
168
+ const updateIfParentMessage = message => {
169
+ if (message.messageId === parentMessage.parentMessageId) {
170
+ setParentMessage(message);
171
+ }
172
+ };
173
+ const onPressSendUserMessage = useFreshCallback(async params => {
174
+ const processedParams = await onBeforeSendUserMessage(params);
175
+ const message = await sendUserMessage(processedParams, onPending);
176
+ onSent(message);
177
+ });
178
+ const onPressSendFileMessage = useFreshCallback(async params => {
179
+ var _processedParams$file;
180
+ const processedParams = await onBeforeSendFileMessage(params);
181
+ const fileSize = ((_processedParams$file = processedParams.file) === null || _processedParams$file === void 0 ? void 0 : _processedParams$file.size) ?? processedParams.fileSize;
182
+ const uploadSizeLimit = sbOptions.appInfo.uploadSizeLimit;
183
+ if (fileSize && uploadSizeLimit && fileSize > uploadSizeLimit) {
184
+ const sizeLimitString = `${getReadableFileSize(uploadSizeLimit)} MB`;
185
+ toast.show(STRINGS.TOAST.FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR(sizeLimitString), 'error');
186
+ return;
187
+ } else {
188
+ const message = await sendFileMessage(processedParams, onPending);
189
+ onSent(message);
190
+ }
191
+ });
192
+ const onPressUpdateUserMessage = useFreshCallback(async (message, params) => {
193
+ const processedParams = await onBeforeUpdateUserMessage(params);
194
+ const updatedMessage = await updateUserMessage(message.messageId, processedParams);
195
+ updateIfParentMessage(updatedMessage);
196
+ });
197
+ const onPressUpdateFileMessage = useFreshCallback(async (message, params) => {
198
+ const processedParams = await onBeforeUpdateFileMessage(params);
199
+ const updatedMessage = await updateFileMessage(message.messageId, processedParams);
200
+ updateIfParentMessage(updatedMessage);
201
+ });
202
+ const onScrolledAwayFromBottom = useFreshCallback(value => {
203
+ if (!value) resetNewMessages();
204
+ setScrolledAwayFromBottom(value);
205
+ });
206
+ return /*#__PURE__*/React.createElement(GroupChannelThreadModule.Provider, {
207
+ channel: channel,
208
+ parentMessage: _parentMessage,
209
+ groupChannelThreadPubSub: groupChannelThreadPubSub,
210
+ keyboardAvoidOffset: keyboardAvoidOffset,
211
+ threadedMessages: messages
212
+ }, /*#__PURE__*/React.createElement(GroupChannelThreadModule.Header, {
213
+ onPressLeft: _onPressHeaderLeft,
214
+ onPressSubtitle: _onPressHeaderSubtitle
215
+ }), /*#__PURE__*/React.createElement(StatusComposition, {
216
+ loading: loading,
217
+ LoadingComponent: /*#__PURE__*/React.createElement(GroupChannelThreadModule.StatusLoading, null)
218
+ }, /*#__PURE__*/React.createElement(GroupChannelThreadModule.MessageList, {
219
+ channel: channel,
220
+ onResetMessageList: onResetMessageList,
221
+ onResetMessageListWithStartingPoint: onResetMessageListWithStartingPoint,
222
+ enableMessageGrouping: enableMessageGrouping,
223
+ currentUserId: currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId,
224
+ renderMessage: renderItem,
225
+ messages: messages,
226
+ newMessages: newMessages,
227
+ onTopReached: loadPrevious,
228
+ onBottomReached: loadNext,
229
+ hasNext: hasNext,
230
+ scrolledAwayFromBottom: scrolledAwayFromBottom,
231
+ onScrolledAwayFromBottom: onScrolledAwayFromBottom,
232
+ onResendFailedMessage: resendMessage,
233
+ onDeleteMessage: deleteMessage,
234
+ onPressMediaMessage: _onPressMediaMessage,
235
+ flatListProps: memoizedFlatListProps,
236
+ startingPoint: startingPoint
237
+ }), /*#__PURE__*/React.createElement(GroupChannelThreadModule.Input, {
238
+ SuggestedMentionList: GroupChannelThreadModule.SuggestedMentionList,
239
+ shouldRenderInput: shouldRenderInput(channel),
240
+ onPressSendUserMessage: onPressSendUserMessage,
241
+ onPressSendFileMessage: onPressSendFileMessage,
242
+ onPressUpdateUserMessage: onPressUpdateUserMessage,
243
+ onPressUpdateFileMessage: onPressUpdateFileMessage
244
+ })));
245
+ };
246
+ };
247
+ function shouldRenderInput(channel) {
248
+ if (channel.isBroadcast) {
249
+ return channel.myRole === 'operator';
250
+ }
251
+ return true;
252
+ }
253
+ export function threadMessageComparator(a, b) {
254
+ return messageComparator(a, b) * -1;
255
+ }
256
+ export default createGroupChannelThreadFragment;
257
+ //# sourceMappingURL=createGroupChannelThreadFragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useEffect","useMemo","useState","Box","useToast","useGroupChannelThreadMessages","getReadableFileSize","NOOP","PASS","confirmAndMarkAsRead","messageComparator","useFreshCallback","useRefTracker","GroupChannelMessageRenderer","StatusComposition","createGroupChannelThreadModule","useLocalization","usePlatformService","useSendbirdChat","pubsub","createGroupChannelThreadFragment","initModule","GroupChannelThreadModule","_ref","renderMessage","enableMessageGrouping","onPressHeaderLeft","onPressHeaderSubtitle","onPressMediaMessage","onParentMessageDeleted","onChannelDeleted","onBeforeSendUserMessage","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","parentMessage","startingPoint","keyboardAvoidOffset","sortComparator","threadMessageComparator","flatListProps","playerService","recorderService","sdk","currentUser","sbOptions","voiceMessageStatusManager","groupChannelFragmentOptions","groupChannelThreadPubSub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","toast","STRINGS","_parentMessage","setParentMessage","loading","messages","newMessages","resetNewMessages","loadNext","loadPrevious","hasNext","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","shouldCountNewMessages","current","onMessagesReceived","publish","type","data","onMessagesUpdated","onParentMessageUpdated","show","TOAST","THREAD_PARENT_MESSAGE_DELETED_ERROR","onCurrentUserBanned","markAsRead","isReactionEnabled","uikit","groupChannel","enableReactions","onBlurFragment","Promise","allSettled","reset","_onPressHeaderLeft","publishAll","_onPressHeaderSubtitle","createdAt","_onPressMediaMessage","message","uri","renderItem","props","content","createElement","_extends","hideParentMessage","memoizedFlatListProps","ListHeaderComponent","ParentMessageInfo","currentUserId","userId","onDeleteMessage","contentContainerStyle","flexGrow","onResetMessageList","Number","MAX_SAFE_INTEGER","onResetMessageListWithStartingPoint","onPending","onSent","updateIfParentMessage","messageId","parentMessageId","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","_processedParams$file","fileSize","file","size","uploadSizeLimit","appInfo","sizeLimitString","FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR","onPressUpdateUserMessage","updatedMessage","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","Provider","threadedMessages","Header","onPressLeft","onPressSubtitle","LoadingComponent","StatusLoading","MessageList","onTopReached","onBottomReached","onResendFailedMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole","a","b"],"sources":["createGroupChannelThreadFragment.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { Box, useToast } from '@sendbird/uikit-react-native-foundation';\nimport { useGroupChannelThreadMessages } from '@sendbird/uikit-tools';\nimport {\n SendbirdFileMessage,\n SendbirdGroupChannel,\n type SendbirdMessage,\n SendbirdUserMessage,\n getReadableFileSize,\n} from '@sendbird/uikit-utils';\nimport {\n NOOP,\n PASS,\n confirmAndMarkAsRead,\n messageComparator,\n useFreshCallback,\n useRefTracker,\n} from '@sendbird/uikit-utils';\n\nimport GroupChannelMessageRenderer from '../components/GroupChannelMessageRenderer';\nimport StatusComposition from '../components/StatusComposition';\nimport createGroupChannelThreadModule from '../domain/groupChannelThread/module/createGroupChannelThreadModule';\nimport type {\n GroupChannelThreadFragment,\n GroupChannelThreadModule,\n GroupChannelThreadProps,\n GroupChannelThreadPubSubContextPayload,\n} from '../domain/groupChannelThread/types';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../hooks/useContext';\nimport pubsub from '../utils/pubsub';\n\nconst createGroupChannelThreadFragment = (\n initModule?: Partial<GroupChannelThreadModule>,\n): GroupChannelThreadFragment => {\n const GroupChannelThreadModule = createGroupChannelThreadModule(initModule);\n\n return ({\n renderMessage,\n enableMessageGrouping = true,\n onPressHeaderLeft = NOOP,\n onPressHeaderSubtitle = NOOP,\n onPressMediaMessage = NOOP,\n onParentMessageDeleted = NOOP,\n onChannelDeleted = NOOP,\n onBeforeSendUserMessage = PASS,\n onBeforeSendFileMessage = PASS,\n onBeforeUpdateUserMessage = PASS,\n onBeforeUpdateFileMessage = PASS,\n channel,\n parentMessage,\n startingPoint,\n keyboardAvoidOffset,\n sortComparator = threadMessageComparator,\n flatListProps,\n }) => {\n const { playerService, recorderService } = usePlatformService();\n const { sdk, currentUser, sbOptions, voiceMessageStatusManager, groupChannelFragmentOptions } = useSendbirdChat();\n\n const [groupChannelThreadPubSub] = useState(() => pubsub<GroupChannelThreadPubSubContextPayload>());\n const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);\n const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);\n\n const toast = useToast();\n const { STRINGS } = useLocalization();\n const [_parentMessage, setParentMessage] = useState(parentMessage);\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n loadNext,\n loadPrevious,\n hasNext,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n } = useGroupChannelThreadMessages(sdk, channel, _parentMessage, {\n shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,\n onMessagesReceived(messages) {\n groupChannelThreadPubSub.publish({ type: 'MESSAGES_RECEIVED', data: { messages } });\n },\n onMessagesUpdated(messages) {\n groupChannelThreadPubSub.publish({ type: 'MESSAGES_UPDATED', data: { messages } });\n },\n onParentMessageUpdated(parentMessage) {\n setParentMessage(parentMessage);\n },\n onParentMessageDeleted: () => {\n toast.show(STRINGS.TOAST.THREAD_PARENT_MESSAGE_DELETED_ERROR, 'error');\n onParentMessageDeleted?.();\n },\n onChannelDeleted,\n onCurrentUserBanned: onChannelDeleted,\n sortComparator,\n markAsRead: confirmAndMarkAsRead,\n isReactionEnabled: sbOptions.uikit.groupChannel.channel.enableReactions,\n startingPoint,\n });\n\n const onBlurFragment = () => {\n return Promise.allSettled([playerService.reset(), recorderService.reset()]);\n };\n const _onPressHeaderLeft = useFreshCallback(async () => {\n await onBlurFragment();\n voiceMessageStatusManager.publishAll();\n onPressHeaderLeft();\n });\n const _onPressHeaderSubtitle = useFreshCallback(async () => {\n await onBlurFragment();\n voiceMessageStatusManager.publishAll();\n groupChannelFragmentOptions.pubsub.publish({\n type: 'OVERRIDE_SEARCH_ITEM_STARTING_POINT',\n data: { startingPoint: parentMessage.createdAt },\n });\n onPressHeaderSubtitle();\n });\n const _onPressMediaMessage: NonNullable<GroupChannelThreadProps['MessageList']['onPressMediaMessage']> =\n useFreshCallback(async (message, deleteMessage, uri) => {\n await onBlurFragment();\n onPressMediaMessage(message, deleteMessage, uri);\n });\n\n useEffect(() => {\n return () => {\n onBlurFragment();\n };\n }, []);\n\n const renderItem: GroupChannelThreadProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n const content = renderMessage ? (\n renderMessage(props)\n ) : (\n <GroupChannelMessageRenderer hideParentMessage {...props} />\n );\n return <Box>{content}</Box>;\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListHeaderComponent: (\n <GroupChannelThreadModule.ParentMessageInfo\n channel={channel}\n currentUserId={currentUser?.userId}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n />\n ),\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [flatListProps],\n );\n\n const onResetMessageList = useCallback(async () => {\n return await resetWithStartingPoint(Number.MAX_SAFE_INTEGER);\n }, []);\n\n const onResetMessageListWithStartingPoint = useCallback(async (startingPoint: number) => {\n return await resetWithStartingPoint(startingPoint);\n }, []);\n\n const onPending = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelThreadPubSub.publish({ type: 'MESSAGE_SENT_PENDING', data: { message } });\n };\n\n const onSent = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelThreadPubSub.publish({ type: 'MESSAGE_SENT_SUCCESS', data: { message } });\n };\n\n const updateIfParentMessage = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n if (message.messageId === parentMessage.parentMessageId) {\n setParentMessage(message);\n }\n };\n\n const onPressSendUserMessage: GroupChannelThreadProps['Input']['onPressSendUserMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendUserMessage(params);\n const message = await sendUserMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressSendFileMessage: GroupChannelThreadProps['Input']['onPressSendFileMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendFileMessage(params);\n const fileSize = (processedParams.file as File)?.size ?? processedParams.fileSize;\n const uploadSizeLimit = sbOptions.appInfo.uploadSizeLimit;\n\n if (fileSize && uploadSizeLimit && fileSize > uploadSizeLimit) {\n const sizeLimitString = `${getReadableFileSize(uploadSizeLimit)} MB`;\n toast.show(STRINGS.TOAST.FILE_UPLOAD_SIZE_LIMIT_EXCEEDED_ERROR(sizeLimitString), 'error');\n return;\n } else {\n const message = await sendFileMessage(processedParams, onPending);\n onSent(message);\n }\n },\n );\n const onPressUpdateUserMessage: GroupChannelThreadProps['Input']['onPressUpdateUserMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateUserMessage(params);\n const updatedMessage = await updateUserMessage(message.messageId, processedParams);\n updateIfParentMessage(updatedMessage);\n },\n );\n const onPressUpdateFileMessage: GroupChannelThreadProps['Input']['onPressUpdateFileMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateFileMessage(params);\n const updatedMessage = await updateFileMessage(message.messageId, processedParams);\n updateIfParentMessage(updatedMessage);\n },\n );\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n if (!value) resetNewMessages();\n setScrolledAwayFromBottom(value);\n });\n\n return (\n <GroupChannelThreadModule.Provider\n channel={channel}\n parentMessage={_parentMessage}\n groupChannelThreadPubSub={groupChannelThreadPubSub}\n keyboardAvoidOffset={keyboardAvoidOffset}\n threadedMessages={messages}\n >\n <GroupChannelThreadModule.Header onPressLeft={_onPressHeaderLeft} onPressSubtitle={_onPressHeaderSubtitle} />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelThreadModule.StatusLoading />}>\n <GroupChannelThreadModule.MessageList\n channel={channel}\n onResetMessageList={onResetMessageList}\n onResetMessageListWithStartingPoint={onResetMessageListWithStartingPoint}\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n renderMessage={renderItem}\n messages={messages}\n newMessages={newMessages}\n onTopReached={loadPrevious}\n onBottomReached={loadNext}\n hasNext={hasNext}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={_onPressMediaMessage}\n flatListProps={memoizedFlatListProps}\n startingPoint={startingPoint}\n />\n <GroupChannelThreadModule.Input\n SuggestedMentionList={GroupChannelThreadModule.SuggestedMentionList}\n shouldRenderInput={shouldRenderInput(channel)}\n onPressSendUserMessage={onPressSendUserMessage}\n onPressSendFileMessage={onPressSendFileMessage}\n onPressUpdateUserMessage={onPressUpdateUserMessage}\n onPressUpdateFileMessage={onPressUpdateFileMessage}\n />\n </StatusComposition>\n </GroupChannelThreadModule.Provider>\n );\n };\n};\n\nfunction shouldRenderInput(channel: SendbirdGroupChannel) {\n if (channel.isBroadcast) {\n return channel.myRole === 'operator';\n }\n\n return true;\n}\n\nexport function threadMessageComparator(a: SendbirdMessage, b: SendbirdMessage) {\n return messageComparator(a, b) * -1;\n}\n\nexport default createGroupChannelThreadFragment;\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AAExE,SAASC,GAAG,EAAEC,QAAQ,QAAQ,yCAAyC;AACvE,SAASC,6BAA6B,QAAQ,uBAAuB;AACrE,SAKEC,mBAAmB,QACd,uBAAuB;AAC9B,SACEC,IAAI,EACJC,IAAI,EACJC,oBAAoB,EACpBC,iBAAiB,EACjBC,gBAAgB,EAChBC,aAAa,QACR,uBAAuB;AAE9B,OAAOC,2BAA2B,MAAM,2CAA2C;AACnF,OAAOC,iBAAiB,MAAM,iCAAiC;AAC/D,OAAOC,8BAA8B,MAAM,oEAAoE;AAO/G,SAASC,eAAe,EAAEC,kBAAkB,EAAEC,eAAe,QAAQ,qBAAqB;AAC1F,OAAOC,MAAM,MAAM,iBAAiB;AAEpC,MAAMC,gCAAgC,GACpCC,UAA8C,IACf;EAC/B,MAAMC,wBAAwB,GAAGP,8BAA8B,CAACM,UAAU,CAAC;EAE3E,OAAOE,IAAA,IAkBD;IAAA,IAlBE;MACNC,aAAa;MACbC,qBAAqB,GAAG,IAAI;MAC5BC,iBAAiB,GAAGnB,IAAI;MACxBoB,qBAAqB,GAAGpB,IAAI;MAC5BqB,mBAAmB,GAAGrB,IAAI;MAC1BsB,sBAAsB,GAAGtB,IAAI;MAC7BuB,gBAAgB,GAAGvB,IAAI;MACvBwB,uBAAuB,GAAGvB,IAAI;MAC9BwB,uBAAuB,GAAGxB,IAAI;MAC9ByB,yBAAyB,GAAGzB,IAAI;MAChC0B,yBAAyB,GAAG1B,IAAI;MAChC2B,OAAO;MACPC,aAAa;MACbC,aAAa;MACbC,mBAAmB;MACnBC,cAAc,GAAGC,uBAAuB;MACxCC;IACF,CAAC,GAAAlB,IAAA;IACC,MAAM;MAAEmB,aAAa;MAAEC;IAAgB,CAAC,GAAG1B,kBAAkB,EAAE;IAC/D,MAAM;MAAE2B,GAAG;MAAEC,WAAW;MAAEC,SAAS;MAAEC,yBAAyB;MAAEC;IAA4B,CAAC,GAAG9B,eAAe,EAAE;IAEjH,MAAM,CAAC+B,wBAAwB,CAAC,GAAG/C,QAAQ,CAAC,MAAMiB,MAAM,EAA0C,CAAC;IACnG,MAAM,CAAC+B,sBAAsB,EAAEC,yBAAyB,CAAC,GAAGjD,QAAQ,CAAC,KAAK,CAAC;IAC3E,MAAMkD,yBAAyB,GAAGxC,aAAa,CAACsC,sBAAsB,CAAC;IAEvE,MAAMG,KAAK,GAAGjD,QAAQ,EAAE;IACxB,MAAM;MAAEkD;IAAQ,CAAC,GAAGtC,eAAe,EAAE;IACrC,MAAM,CAACuC,cAAc,EAAEC,gBAAgB,CAAC,GAAGtD,QAAQ,CAACkC,aAAa,CAAC;IAElE,MAAM;MACJqB,OAAO;MACPC,QAAQ;MACRC,WAAW;MACXC,gBAAgB;MAChBC,QAAQ;MACRC,YAAY;MACZC,OAAO;MACPC,eAAe;MACfC,eAAe;MACfC,iBAAiB;MACjBC,iBAAiB;MACjBC,aAAa;MACbC,aAAa;MACbC;IACF,CAAC,GAAGjE,6BAA6B,CAACuC,GAAG,EAAET,OAAO,EAAEoB,cAAc,EAAE;MAC9DgB,sBAAsB,EAAEA,CAAA,KAAMnB,yBAAyB,CAACoB,OAAO;MAC/DC,kBAAkBA,CAACf,QAAQ,EAAE;QAC3BT,wBAAwB,CAACyB,OAAO,CAAC;UAAEC,IAAI,EAAE,mBAAmB;UAAEC,IAAI,EAAE;YAAElB;UAAS;QAAE,CAAC,CAAC;MACrF,CAAC;MACDmB,iBAAiBA,CAACnB,QAAQ,EAAE;QAC1BT,wBAAwB,CAACyB,OAAO,CAAC;UAAEC,IAAI,EAAE,kBAAkB;UAAEC,IAAI,EAAE;YAAElB;UAAS;QAAE,CAAC,CAAC;MACpF,CAAC;MACDoB,sBAAsBA,CAAC1C,aAAa,EAAE;QACpCoB,gBAAgB,CAACpB,aAAa,CAAC;MACjC,CAAC;MACDP,sBAAsB,EAAEA,CAAA,KAAM;QAC5BwB,KAAK,CAAC0B,IAAI,CAACzB,OAAO,CAAC0B,KAAK,CAACC,mCAAmC,EAAE,OAAO,CAAC;QACtEpD,sBAAsB,aAAtBA,sBAAsB,uBAAtBA,sBAAsB,EAAI;MAC5B,CAAC;MACDC,gBAAgB;MAChBoD,mBAAmB,EAAEpD,gBAAgB;MACrCS,cAAc;MACd4C,UAAU,EAAE1E,oBAAoB;MAChC2E,iBAAiB,EAAEtC,SAAS,CAACuC,KAAK,CAACC,YAAY,CAACnD,OAAO,CAACoD,eAAe;MACvElD;IACF,CAAC,CAAC;IAEF,MAAMmD,cAAc,GAAGA,CAAA,KAAM;MAC3B,OAAOC,OAAO,CAACC,UAAU,CAAC,CAAChD,aAAa,CAACiD,KAAK,EAAE,EAAEhD,eAAe,CAACgD,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,MAAMC,kBAAkB,GAAGjF,gBAAgB,CAAC,YAAY;MACtD,MAAM6E,cAAc,EAAE;MACtBzC,yBAAyB,CAAC8C,UAAU,EAAE;MACtCnE,iBAAiB,EAAE;IACrB,CAAC,CAAC;IACF,MAAMoE,sBAAsB,GAAGnF,gBAAgB,CAAC,YAAY;MAC1D,MAAM6E,cAAc,EAAE;MACtBzC,yBAAyB,CAAC8C,UAAU,EAAE;MACtC7C,2BAA2B,CAAC7B,MAAM,CAACuD,OAAO,CAAC;QACzCC,IAAI,EAAE,qCAAqC;QAC3CC,IAAI,EAAE;UAAEvC,aAAa,EAAED,aAAa,CAAC2D;QAAU;MACjD,CAAC,CAAC;MACFpE,qBAAqB,EAAE;IACzB,CAAC,CAAC;IACF,MAAMqE,oBAAgG,GACpGrF,gBAAgB,CAAC,OAAOsF,OAAO,EAAE5B,aAAa,EAAE6B,GAAG,KAAK;MACtD,MAAMV,cAAc,EAAE;MACtB5D,mBAAmB,CAACqE,OAAO,EAAE5B,aAAa,EAAE6B,GAAG,CAAC;IAClD,CAAC,CAAC;IAEJlG,SAAS,CAAC,MAAM;MACd,OAAO,MAAM;QACXwF,cAAc,EAAE;MAClB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;IAEN,MAAMW,UAAmE,GAAGxF,gBAAgB,CAAEyF,KAAK,IAAK;MACtG,MAAMC,OAAO,GAAG7E,aAAa,GAC3BA,aAAa,CAAC4E,KAAK,CAAC,gBAEpBtG,KAAA,CAAAwG,aAAA,CAACzF,2BAA2B,EAAA0F,QAAA;QAACC,iBAAiB;MAAA,GAAKJ,KAAK,EACzD;MACD,oBAAOtG,KAAA,CAAAwG,aAAA,CAACnG,GAAG,QAAEkG,OAAO,CAAO;IAC7B,CAAC,CAAC;IAEF,MAAMI,qBAAqB,GAAGxG,OAAO,CACnC,OAAO;MACLyG,mBAAmB,eACjB5G,KAAA,CAAAwG,aAAA,CAAChF,wBAAwB,CAACqF,iBAAiB;QACzCxE,OAAO,EAAEA,OAAQ;QACjByE,aAAa,EAAE/D,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEgE,MAAO;QACnCC,eAAe,EAAEzC,aAAc;QAC/BzC,mBAAmB,EAAEoE;MAAqB,EAE7C;MACDe,qBAAqB,EAAE;QAAEC,QAAQ,EAAE;MAAE,CAAC;MACtC,GAAGvE;IACL,CAAC,CAAC,EACF,CAACA,aAAa,CAAC,CAChB;IAED,MAAMwE,kBAAkB,GAAGlH,WAAW,CAAC,YAAY;MACjD,OAAO,MAAMuE,sBAAsB,CAAC4C,MAAM,CAACC,gBAAgB,CAAC;IAC9D,CAAC,EAAE,EAAE,CAAC;IAEN,MAAMC,mCAAmC,GAAGrH,WAAW,CAAC,MAAOsC,aAAqB,IAAK;MACvF,OAAO,MAAMiC,sBAAsB,CAACjC,aAAa,CAAC;IACpD,CAAC,EAAE,EAAE,CAAC;IAEN,MAAMgF,SAAS,GAAIpB,OAAkD,IAAK;MACxEhD,wBAAwB,CAACyB,OAAO,CAAC;QAAEC,IAAI,EAAE,sBAAsB;QAAEC,IAAI,EAAE;UAAEqB;QAAQ;MAAE,CAAC,CAAC;IACvF,CAAC;IAED,MAAMqB,MAAM,GAAIrB,OAAkD,IAAK;MACrEhD,wBAAwB,CAACyB,OAAO,CAAC;QAAEC,IAAI,EAAE,sBAAsB;QAAEC,IAAI,EAAE;UAAEqB;QAAQ;MAAE,CAAC,CAAC;IACvF,CAAC;IAED,MAAMsB,qBAAqB,GAAItB,OAAkD,IAAK;MACpF,IAAIA,OAAO,CAACuB,SAAS,KAAKpF,aAAa,CAACqF,eAAe,EAAE;QACvDjE,gBAAgB,CAACyC,OAAO,CAAC;MAC3B;IACF,CAAC;IAED,MAAMyB,sBAAkF,GAAG/G,gBAAgB,CACzG,MAAOgH,MAAM,IAAK;MAChB,MAAMC,eAAe,GAAG,MAAM7F,uBAAuB,CAAC4F,MAAM,CAAC;MAC7D,MAAM1B,OAAO,GAAG,MAAMhC,eAAe,CAAC2D,eAAe,EAAEP,SAAS,CAAC;MACjEC,MAAM,CAACrB,OAAO,CAAC;IACjB,CAAC,CACF;IACD,MAAM4B,sBAAkF,GAAGlH,gBAAgB,CACzG,MAAOgH,MAAM,IAAK;MAAA,IAAAG,qBAAA;MAChB,MAAMF,eAAe,GAAG,MAAM5F,uBAAuB,CAAC2F,MAAM,CAAC;MAC7D,MAAMI,QAAQ,GAAG,EAAAD,qBAAA,GAACF,eAAe,CAACI,IAAI,cAAAF,qBAAA,uBAArBA,qBAAA,CAAgCG,IAAI,KAAIL,eAAe,CAACG,QAAQ;MACjF,MAAMG,eAAe,GAAGpF,SAAS,CAACqF,OAAO,CAACD,eAAe;MAEzD,IAAIH,QAAQ,IAAIG,eAAe,IAAIH,QAAQ,GAAGG,eAAe,EAAE;QAC7D,MAAME,eAAe,GAAI,GAAE9H,mBAAmB,CAAC4H,eAAe,CAAE,KAAI;QACpE7E,KAAK,CAAC0B,IAAI,CAACzB,OAAO,CAAC0B,KAAK,CAACqD,qCAAqC,CAACD,eAAe,CAAC,EAAE,OAAO,CAAC;QACzF;MACF,CAAC,MAAM;QACL,MAAMnC,OAAO,GAAG,MAAMjC,eAAe,CAAC4D,eAAe,EAAEP,SAAS,CAAC;QACjEC,MAAM,CAACrB,OAAO,CAAC;MACjB;IACF,CAAC,CACF;IACD,MAAMqC,wBAAsF,GAAG3H,gBAAgB,CAC7G,OAAOsF,OAAO,EAAE0B,MAAM,KAAK;MACzB,MAAMC,eAAe,GAAG,MAAM3F,yBAAyB,CAAC0F,MAAM,CAAC;MAC/D,MAAMY,cAAc,GAAG,MAAMpE,iBAAiB,CAAC8B,OAAO,CAACuB,SAAS,EAAEI,eAAe,CAAC;MAClFL,qBAAqB,CAACgB,cAAc,CAAC;IACvC,CAAC,CACF;IACD,MAAMC,wBAAsF,GAAG7H,gBAAgB,CAC7G,OAAOsF,OAAO,EAAE0B,MAAM,KAAK;MACzB,MAAMC,eAAe,GAAG,MAAM1F,yBAAyB,CAACyF,MAAM,CAAC;MAC/D,MAAMY,cAAc,GAAG,MAAMrE,iBAAiB,CAAC+B,OAAO,CAACuB,SAAS,EAAEI,eAAe,CAAC;MAClFL,qBAAqB,CAACgB,cAAc,CAAC;IACvC,CAAC,CACF;IACD,MAAME,wBAAwB,GAAG9H,gBAAgB,CAAE+H,KAAc,IAAK;MACpE,IAAI,CAACA,KAAK,EAAE9E,gBAAgB,EAAE;MAC9BT,yBAAyB,CAACuF,KAAK,CAAC;IAClC,CAAC,CAAC;IAEF,oBACE5I,KAAA,CAAAwG,aAAA,CAAChF,wBAAwB,CAACqH,QAAQ;MAChCxG,OAAO,EAAEA,OAAQ;MACjBC,aAAa,EAAEmB,cAAe;MAC9BN,wBAAwB,EAAEA,wBAAyB;MACnDX,mBAAmB,EAAEA,mBAAoB;MACzCsG,gBAAgB,EAAElF;IAAS,gBAE3B5D,KAAA,CAAAwG,aAAA,CAAChF,wBAAwB,CAACuH,MAAM;MAACC,WAAW,EAAElD,kBAAmB;MAACmD,eAAe,EAAEjD;IAAuB,EAAG,eAC7GhG,KAAA,CAAAwG,aAAA,CAACxF,iBAAiB;MAAC2C,OAAO,EAAEA,OAAQ;MAACuF,gBAAgB,eAAElJ,KAAA,CAAAwG,aAAA,CAAChF,wBAAwB,CAAC2H,aAAa;IAAI,gBAChGnJ,KAAA,CAAAwG,aAAA,CAAChF,wBAAwB,CAAC4H,WAAW;MACnC/G,OAAO,EAAEA,OAAQ;MACjB8E,kBAAkB,EAAEA,kBAAmB;MACvCG,mCAAmC,EAAEA,mCAAoC;MACzE3F,qBAAqB,EAAEA,qBAAsB;MAC7CmF,aAAa,EAAE/D,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEgE,MAAO;MACnCrF,aAAa,EAAE2E,UAAW;MAC1BzC,QAAQ,EAAEA,QAAS;MACnBC,WAAW,EAAEA,WAAY;MACzBwF,YAAY,EAAErF,YAAa;MAC3BsF,eAAe,EAAEvF,QAAS;MAC1BE,OAAO,EAAEA,OAAQ;MACjBb,sBAAsB,EAAEA,sBAAuB;MAC/CuF,wBAAwB,EAAEA,wBAAyB;MACnDY,qBAAqB,EAAEjF,aAAc;MACrC0C,eAAe,EAAEzC,aAAc;MAC/BzC,mBAAmB,EAAEoE,oBAAqB;MAC1CvD,aAAa,EAAEgE,qBAAsB;MACrCpE,aAAa,EAAEA;IAAc,EAC7B,eACFvC,KAAA,CAAAwG,aAAA,CAAChF,wBAAwB,CAACgI,KAAK;MAC7BC,oBAAoB,EAAEjI,wBAAwB,CAACiI,oBAAqB;MACpEC,iBAAiB,EAAEA,iBAAiB,CAACrH,OAAO,CAAE;MAC9CuF,sBAAsB,EAAEA,sBAAuB;MAC/CG,sBAAsB,EAAEA,sBAAuB;MAC/CS,wBAAwB,EAAEA,wBAAyB;MACnDE,wBAAwB,EAAEA;IAAyB,EACnD,CACgB,CACc;EAExC,CAAC;AACH,CAAC;AAED,SAASgB,iBAAiBA,CAACrH,OAA6B,EAAE;EACxD,IAAIA,OAAO,CAACsH,WAAW,EAAE;IACvB,OAAOtH,OAAO,CAACuH,MAAM,KAAK,UAAU;EACtC;EAEA,OAAO,IAAI;AACb;AAEA,OAAO,SAASlH,uBAAuBA,CAACmH,CAAkB,EAAEC,CAAkB,EAAE;EAC9E,OAAOlJ,iBAAiB,CAACiJ,CAAC,EAAEC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrC;AAEA,eAAexI,gCAAgC"}
@@ -75,9 +75,12 @@ const useMentionSuggestion = params => {
75
75
  limit: mentionManager.config.suggestionLimit + 1
76
76
  }).next().then(members => members.filter(member => member.userId !== (currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId))).then(members => members.slice(0, mentionManager.config.suggestionLimit));
77
77
  } else {
78
- return freshChannel.members.sort((a, b) => {
78
+ return freshChannel.members
79
+ // NOTE: When using 'org.webkit:android-jsc', there is a problem with sorting lists that include words starting with uppercase and lowercase letters.
80
+ // To ensure consistent sorting regardless of the JSC, we compare the words in lowercase.
81
+ .sort((a, b) => {
79
82
  var _a$nickname;
80
- return (_a$nickname = a.nickname) === null || _a$nickname === void 0 ? void 0 : _a$nickname.localeCompare(b.nickname);
83
+ return (_a$nickname = a.nickname) === null || _a$nickname === void 0 ? void 0 : _a$nickname.toLowerCase().localeCompare(b.nickname.toLowerCase());
81
84
  }).filter(member => {
82
85
  var _member$nickname;
83
86
  return ((_member$nickname = member.nickname) === null || _member$nickname === void 0 ? void 0 : _member$nickname.toLowerCase().startsWith(searchString.toLowerCase())) && member.userId !== (currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) && member.isActive;
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useRef","useState","useChannelHandler","isDifferentChannel","useAsyncEffect","useDebounceEffect","useUniqHandlerId","useSendbirdChat","useMentionSuggestion","params","text","selection","channel","mentionedUsers","freshChannel","setFreshChannel","refresh","url","id","sdk","onUserJoined","eventChannel","onUserLeft","onUserBanned","isGroupChannel","mentionManager","currentUser","members","setMembers","searchStringRangeRef","start","end","searchLimitedRef","updateSearchStringRange","selectionIndex","searchString","current","getSearchStringRangeInText","updateSearchLimited","mentionCount","mentionLimit","resetRefs","fetchMembers","selectionRanged","selectionContainsMentionedUser","some","it","rangeHelpers","overlaps","range","isTriggered","isValidSearchString","getSearchString","limited","length","config","isSuper","createMemberListQuery","nicknameStartsWithFilter","limit","suggestionLimit","next","then","filter","member","userId","slice","sort","a","b","_a$nickname","nickname","localeCompare","_member$nickname","toLowerCase","startsWith","isActive","catch","debounceMills","reset","searchStringRange","searchLimited"],"sources":["useMentionSuggestion.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport type { SendbirdChatSDK, SendbirdGroupChannel, SendbirdMember, SendbirdUser } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, useAsyncEffect, useDebounceEffect, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../hooks/useContext';\nimport type { Range } from '../types';\n\nconst useMentionSuggestion = (params: {\n text: string;\n selection: Range;\n mentionedUsers: { user: SendbirdUser; range: Range }[];\n sdk: SendbirdChatSDK;\n channel: SendbirdGroupChannel;\n}) => {\n const { text, selection, channel, mentionedUsers } = params;\n\n const [freshChannel, setFreshChannel] = useState(channel);\n\n useAsyncEffect(async () => {\n setFreshChannel(await channel.refresh());\n }, [channel.url]);\n\n const id = useUniqHandlerId('useMentionSuggestion');\n\n useChannelHandler(params.sdk, id, {\n onUserJoined(eventChannel) {\n if (isDifferentChannel(eventChannel, channel)) return;\n setFreshChannel(eventChannel);\n },\n onUserLeft(eventChannel) {\n if (isDifferentChannel(eventChannel, channel)) return;\n setFreshChannel(eventChannel);\n },\n onUserBanned(eventChannel) {\n if (isDifferentChannel(eventChannel, channel)) return;\n if (!eventChannel.isGroupChannel()) return;\n setFreshChannel(eventChannel);\n },\n });\n\n const { mentionManager, currentUser } = useSendbirdChat();\n const [members, setMembers] = useState<SendbirdMember[]>([]);\n\n const searchStringRangeRef = useRef<Range>({ start: 0, end: 0 });\n const searchLimitedRef = useRef(false);\n\n const updateSearchStringRange = (selectionIndex: number, searchString: string) => {\n searchStringRangeRef.current = mentionManager.getSearchStringRangeInText(selectionIndex, searchString);\n return searchStringRangeRef.current;\n };\n const updateSearchLimited = (mentionCount: number, mentionLimit: number) => {\n searchLimitedRef.current = mentionCount >= mentionLimit;\n return searchLimitedRef.current;\n };\n const resetRefs = () => {\n searchLimitedRef.current = false;\n searchStringRangeRef.current = { start: 0, end: 0 };\n };\n\n const fetchMembers = async (): Promise<SendbirdMember[]> => {\n resetRefs();\n\n const selectionRanged = selection.start !== selection.end;\n if (selectionRanged) return [];\n\n const selectionContainsMentionedUser = mentionedUsers.some((it) =>\n mentionManager.rangeHelpers.overlaps(it.range, selection, 'underMore'),\n );\n if (selectionContainsMentionedUser) return [];\n\n const { isTriggered, isValidSearchString, searchString } = mentionManager.getSearchString(text, selection.start);\n if (!isTriggered() || !isValidSearchString()) return [];\n\n const limited = updateSearchLimited(mentionedUsers.length, mentionManager.config.mentionLimit);\n if (limited) return [];\n\n updateSearchStringRange(selection.start, searchString);\n\n if (freshChannel.isSuper) {\n return freshChannel\n .createMemberListQuery({\n nicknameStartsWithFilter: searchString,\n limit: mentionManager.config.suggestionLimit + 1,\n })\n .next()\n .then((members) => members.filter((member) => member.userId !== currentUser?.userId))\n .then((members) => members.slice(0, mentionManager.config.suggestionLimit));\n } else {\n return freshChannel.members\n .sort((a, b) => a.nickname?.localeCompare(b.nickname))\n .filter(\n (member) =>\n member.nickname?.toLowerCase().startsWith(searchString.toLowerCase()) &&\n member.userId !== currentUser?.userId &&\n member.isActive,\n )\n .slice(0, mentionManager.config.suggestionLimit);\n }\n };\n\n useDebounceEffect(\n () => {\n return fetchMembers()\n .then(setMembers)\n .catch(() => setMembers([]));\n },\n mentionManager.config.debounceMills,\n [text, selection],\n );\n\n return {\n members,\n reset: useCallback(() => setMembers([]), []),\n searchStringRange: searchStringRangeRef.current,\n searchLimited: searchLimitedRef.current,\n };\n};\n\nexport default useMentionSuggestion;\n"],"mappings":"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"}
1
+ {"version":3,"names":["useCallback","useRef","useState","useChannelHandler","isDifferentChannel","useAsyncEffect","useDebounceEffect","useUniqHandlerId","useSendbirdChat","useMentionSuggestion","params","text","selection","channel","mentionedUsers","freshChannel","setFreshChannel","refresh","url","id","sdk","onUserJoined","eventChannel","onUserLeft","onUserBanned","isGroupChannel","mentionManager","currentUser","members","setMembers","searchStringRangeRef","start","end","searchLimitedRef","updateSearchStringRange","selectionIndex","searchString","current","getSearchStringRangeInText","updateSearchLimited","mentionCount","mentionLimit","resetRefs","fetchMembers","selectionRanged","selectionContainsMentionedUser","some","it","rangeHelpers","overlaps","range","isTriggered","isValidSearchString","getSearchString","limited","length","config","isSuper","createMemberListQuery","nicknameStartsWithFilter","limit","suggestionLimit","next","then","filter","member","userId","slice","sort","a","b","_a$nickname","nickname","toLowerCase","localeCompare","_member$nickname","startsWith","isActive","catch","debounceMills","reset","searchStringRange","searchLimited"],"sources":["useMentionSuggestion.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\nimport { useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport type { SendbirdChatSDK, SendbirdGroupChannel, SendbirdMember, SendbirdUser } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, useAsyncEffect, useDebounceEffect, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../hooks/useContext';\nimport type { Range } from '../types';\n\nconst useMentionSuggestion = (params: {\n text: string;\n selection: Range;\n mentionedUsers: { user: SendbirdUser; range: Range }[];\n sdk: SendbirdChatSDK;\n channel: SendbirdGroupChannel;\n}) => {\n const { text, selection, channel, mentionedUsers } = params;\n\n const [freshChannel, setFreshChannel] = useState(channel);\n\n useAsyncEffect(async () => {\n setFreshChannel(await channel.refresh());\n }, [channel.url]);\n\n const id = useUniqHandlerId('useMentionSuggestion');\n\n useChannelHandler(params.sdk, id, {\n onUserJoined(eventChannel) {\n if (isDifferentChannel(eventChannel, channel)) return;\n setFreshChannel(eventChannel);\n },\n onUserLeft(eventChannel) {\n if (isDifferentChannel(eventChannel, channel)) return;\n setFreshChannel(eventChannel);\n },\n onUserBanned(eventChannel) {\n if (isDifferentChannel(eventChannel, channel)) return;\n if (!eventChannel.isGroupChannel()) return;\n setFreshChannel(eventChannel);\n },\n });\n\n const { mentionManager, currentUser } = useSendbirdChat();\n const [members, setMembers] = useState<SendbirdMember[]>([]);\n\n const searchStringRangeRef = useRef<Range>({ start: 0, end: 0 });\n const searchLimitedRef = useRef(false);\n\n const updateSearchStringRange = (selectionIndex: number, searchString: string) => {\n searchStringRangeRef.current = mentionManager.getSearchStringRangeInText(selectionIndex, searchString);\n return searchStringRangeRef.current;\n };\n const updateSearchLimited = (mentionCount: number, mentionLimit: number) => {\n searchLimitedRef.current = mentionCount >= mentionLimit;\n return searchLimitedRef.current;\n };\n const resetRefs = () => {\n searchLimitedRef.current = false;\n searchStringRangeRef.current = { start: 0, end: 0 };\n };\n\n const fetchMembers = async (): Promise<SendbirdMember[]> => {\n resetRefs();\n\n const selectionRanged = selection.start !== selection.end;\n if (selectionRanged) return [];\n\n const selectionContainsMentionedUser = mentionedUsers.some((it) =>\n mentionManager.rangeHelpers.overlaps(it.range, selection, 'underMore'),\n );\n if (selectionContainsMentionedUser) return [];\n\n const { isTriggered, isValidSearchString, searchString } = mentionManager.getSearchString(text, selection.start);\n if (!isTriggered() || !isValidSearchString()) return [];\n\n const limited = updateSearchLimited(mentionedUsers.length, mentionManager.config.mentionLimit);\n if (limited) return [];\n\n updateSearchStringRange(selection.start, searchString);\n\n if (freshChannel.isSuper) {\n return freshChannel\n .createMemberListQuery({\n nicknameStartsWithFilter: searchString,\n limit: mentionManager.config.suggestionLimit + 1,\n })\n .next()\n .then((members) => members.filter((member) => member.userId !== currentUser?.userId))\n .then((members) => members.slice(0, mentionManager.config.suggestionLimit));\n } else {\n return (\n freshChannel.members\n // NOTE: When using 'org.webkit:android-jsc', there is a problem with sorting lists that include words starting with uppercase and lowercase letters.\n // To ensure consistent sorting regardless of the JSC, we compare the words in lowercase.\n .sort((a, b) => a.nickname?.toLowerCase().localeCompare(b.nickname.toLowerCase()))\n .filter(\n (member) =>\n member.nickname?.toLowerCase().startsWith(searchString.toLowerCase()) &&\n member.userId !== currentUser?.userId &&\n member.isActive,\n )\n .slice(0, mentionManager.config.suggestionLimit)\n );\n }\n };\n\n useDebounceEffect(\n () => {\n return fetchMembers()\n .then(setMembers)\n .catch(() => setMembers([]));\n },\n mentionManager.config.debounceMills,\n [text, selection],\n );\n\n return {\n members,\n reset: useCallback(() => setMembers([]), []),\n searchStringRange: searchStringRangeRef.current,\n searchLimited: searchLimitedRef.current,\n };\n};\n\nexport default useMentionSuggestion;\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAErD,SAASC,iBAAiB,QAAQ,4BAA4B;AAE9D,SAASC,kBAAkB,EAAEC,cAAc,EAAEC,iBAAiB,EAAEC,gBAAgB,QAAQ,uBAAuB;AAE/G,SAASC,eAAe,QAAQ,qBAAqB;AAGrD,MAAMC,oBAAoB,GAAIC,MAM7B,IAAK;EACJ,MAAM;IAAEC,IAAI;IAAEC,SAAS;IAAEC,OAAO;IAAEC;EAAe,CAAC,GAAGJ,MAAM;EAE3D,MAAM,CAACK,YAAY,EAAEC,eAAe,CAAC,GAAGd,QAAQ,CAACW,OAAO,CAAC;EAEzDR,cAAc,CAAC,YAAY;IACzBW,eAAe,CAAC,MAAMH,OAAO,CAACI,OAAO,EAAE,CAAC;EAC1C,CAAC,EAAE,CAACJ,OAAO,CAACK,GAAG,CAAC,CAAC;EAEjB,MAAMC,EAAE,GAAGZ,gBAAgB,CAAC,sBAAsB,CAAC;EAEnDJ,iBAAiB,CAACO,MAAM,CAACU,GAAG,EAAED,EAAE,EAAE;IAChCE,YAAYA,CAACC,YAAY,EAAE;MACzB,IAAIlB,kBAAkB,CAACkB,YAAY,EAAET,OAAO,CAAC,EAAE;MAC/CG,eAAe,CAACM,YAAY,CAAC;IAC/B,CAAC;IACDC,UAAUA,CAACD,YAAY,EAAE;MACvB,IAAIlB,kBAAkB,CAACkB,YAAY,EAAET,OAAO,CAAC,EAAE;MAC/CG,eAAe,CAACM,YAAY,CAAC;IAC/B,CAAC;IACDE,YAAYA,CAACF,YAAY,EAAE;MACzB,IAAIlB,kBAAkB,CAACkB,YAAY,EAAET,OAAO,CAAC,EAAE;MAC/C,IAAI,CAACS,YAAY,CAACG,cAAc,EAAE,EAAE;MACpCT,eAAe,CAACM,YAAY,CAAC;IAC/B;EACF,CAAC,CAAC;EAEF,MAAM;IAAEI,cAAc;IAAEC;EAAY,CAAC,GAAGnB,eAAe,EAAE;EACzD,MAAM,CAACoB,OAAO,EAAEC,UAAU,CAAC,GAAG3B,QAAQ,CAAmB,EAAE,CAAC;EAE5D,MAAM4B,oBAAoB,GAAG7B,MAAM,CAAQ;IAAE8B,KAAK,EAAE,CAAC;IAAEC,GAAG,EAAE;EAAE,CAAC,CAAC;EAChE,MAAMC,gBAAgB,GAAGhC,MAAM,CAAC,KAAK,CAAC;EAEtC,MAAMiC,uBAAuB,GAAGA,CAACC,cAAsB,EAAEC,YAAoB,KAAK;IAChFN,oBAAoB,CAACO,OAAO,GAAGX,cAAc,CAACY,0BAA0B,CAACH,cAAc,EAAEC,YAAY,CAAC;IACtG,OAAON,oBAAoB,CAACO,OAAO;EACrC,CAAC;EACD,MAAME,mBAAmB,GAAGA,CAACC,YAAoB,EAAEC,YAAoB,KAAK;IAC1ER,gBAAgB,CAACI,OAAO,GAAGG,YAAY,IAAIC,YAAY;IACvD,OAAOR,gBAAgB,CAACI,OAAO;EACjC,CAAC;EACD,MAAMK,SAAS,GAAGA,CAAA,KAAM;IACtBT,gBAAgB,CAACI,OAAO,GAAG,KAAK;IAChCP,oBAAoB,CAACO,OAAO,GAAG;MAAEN,KAAK,EAAE,CAAC;MAAEC,GAAG,EAAE;IAAE,CAAC;EACrD,CAAC;EAED,MAAMW,YAAY,GAAG,MAAAA,CAAA,KAAuC;IAC1DD,SAAS,EAAE;IAEX,MAAME,eAAe,GAAGhC,SAAS,CAACmB,KAAK,KAAKnB,SAAS,CAACoB,GAAG;IACzD,IAAIY,eAAe,EAAE,OAAO,EAAE;IAE9B,MAAMC,8BAA8B,GAAG/B,cAAc,CAACgC,IAAI,CAAEC,EAAE,IAC5DrB,cAAc,CAACsB,YAAY,CAACC,QAAQ,CAACF,EAAE,CAACG,KAAK,EAAEtC,SAAS,EAAE,WAAW,CAAC,CACvE;IACD,IAAIiC,8BAA8B,EAAE,OAAO,EAAE;IAE7C,MAAM;MAAEM,WAAW;MAAEC,mBAAmB;MAAEhB;IAAa,CAAC,GAAGV,cAAc,CAAC2B,eAAe,CAAC1C,IAAI,EAAEC,SAAS,CAACmB,KAAK,CAAC;IAChH,IAAI,CAACoB,WAAW,EAAE,IAAI,CAACC,mBAAmB,EAAE,EAAE,OAAO,EAAE;IAEvD,MAAME,OAAO,GAAGf,mBAAmB,CAACzB,cAAc,CAACyC,MAAM,EAAE7B,cAAc,CAAC8B,MAAM,CAACf,YAAY,CAAC;IAC9F,IAAIa,OAAO,EAAE,OAAO,EAAE;IAEtBpB,uBAAuB,CAACtB,SAAS,CAACmB,KAAK,EAAEK,YAAY,CAAC;IAEtD,IAAIrB,YAAY,CAAC0C,OAAO,EAAE;MACxB,OAAO1C,YAAY,CAChB2C,qBAAqB,CAAC;QACrBC,wBAAwB,EAAEvB,YAAY;QACtCwB,KAAK,EAAElC,cAAc,CAAC8B,MAAM,CAACK,eAAe,GAAG;MACjD,CAAC,CAAC,CACDC,IAAI,EAAE,CACNC,IAAI,CAAEnC,OAAO,IAAKA,OAAO,CAACoC,MAAM,CAAEC,MAAM,IAAKA,MAAM,CAACC,MAAM,MAAKvC,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEuC,MAAM,EAAC,CAAC,CACpFH,IAAI,CAAEnC,OAAO,IAAKA,OAAO,CAACuC,KAAK,CAAC,CAAC,EAAEzC,cAAc,CAAC8B,MAAM,CAACK,eAAe,CAAC,CAAC;IAC/E,CAAC,MAAM;MACL,OACE9C,YAAY,CAACa;MACX;MACA;MAAA,CACCwC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC;QAAA,IAAAC,WAAA;QAAA,QAAAA,WAAA,GAAKF,CAAC,CAACG,QAAQ,cAAAD,WAAA,uBAAVA,WAAA,CAAYE,WAAW,EAAE,CAACC,aAAa,CAACJ,CAAC,CAACE,QAAQ,CAACC,WAAW,EAAE,CAAC;MAAA,EAAC,CACjFT,MAAM,CACJC,MAAM;QAAA,IAAAU,gBAAA;QAAA,OACL,EAAAA,gBAAA,GAAAV,MAAM,CAACO,QAAQ,cAAAG,gBAAA,uBAAfA,gBAAA,CAAiBF,WAAW,EAAE,CAACG,UAAU,CAACxC,YAAY,CAACqC,WAAW,EAAE,CAAC,KACrER,MAAM,CAACC,MAAM,MAAKvC,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEuC,MAAM,KACrCD,MAAM,CAACY,QAAQ;MAAA,EAClB,CACAV,KAAK,CAAC,CAAC,EAAEzC,cAAc,CAAC8B,MAAM,CAACK,eAAe,CAAC;IAEtD;EACF,CAAC;EAEDvD,iBAAiB,CACf,MAAM;IACJ,OAAOqC,YAAY,EAAE,CAClBoB,IAAI,CAAClC,UAAU,CAAC,CAChBiD,KAAK,CAAC,MAAMjD,UAAU,CAAC,EAAE,CAAC,CAAC;EAChC,CAAC,EACDH,cAAc,CAAC8B,MAAM,CAACuB,aAAa,EACnC,CAACpE,IAAI,EAAEC,SAAS,CAAC,CAClB;EAED,OAAO;IACLgB,OAAO;IACPoD,KAAK,EAAEhF,WAAW,CAAC,MAAM6B,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAC5CoD,iBAAiB,EAAEnD,oBAAoB,CAACO,OAAO;IAC/C6C,aAAa,EAAEjD,gBAAgB,CAACI;EAClC,CAAC;AACH,CAAC;AAED,eAAe5B,oBAAoB"}
@@ -34,6 +34,7 @@ export { default as createGroupChannelRegisterOperatorFragment } from './fragmen
34
34
  export { default as createGroupChannelMutedMembersFragment } from './fragments/createGroupChannelMutedMembersFragment';
35
35
  export { default as createGroupChannelBannedUsersFragment } from './fragments/createGroupChannelBannedUsersFragment';
36
36
  export { default as createGroupChannelNotificationsFragment } from './fragments/createGroupChannelNotificationsFragment';
37
+ export { default as createGroupChannelThreadFragment } from './fragments/createGroupChannelThreadFragment';
37
38
  export { default as createMessageSearchFragment } from './fragments/createMessageSearchFragment';
38
39
 
39
40
  /** Fragments - open channels **/
@@ -94,6 +95,8 @@ export * from './domain/groupChannelNotifications';
94
95
  export * from './domain/groupChannelNotifications/types';
95
96
  export * from './domain/groupChannelUserList/types';
96
97
  export * from './domain/messageSearch/types';
98
+ export * from './domain/groupChannelThread';
99
+ export * from './domain/groupChannelThread/types';
97
100
 
98
101
  /** Feature - open channels **/
99
102
  export * from './domain/openChannel';
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","Logger","PromisePolyfill","default","ChannelInput","ChannelMessageList","GroupChannelMessageRenderer","OpenChannelMessageRenderer","ReactionAddons","ReactionBottomSheets","ChannelCover","ChatFlatList","FileViewer","MessageSearchResultItem","NewMessagesButton","ProviderLayout","ScrollToBottomButton","StatusComposition","TypedPlaceholder","UserActionBar","UserSelectableBar","createGroupChannelCreateFragment","createGroupChannelFragment","createGroupChannelSettingsFragment","createGroupChannelInviteFragment","createGroupChannelListFragment","createGroupChannelMembersFragment","createGroupChannelModerationFragment","createGroupChannelOperatorsFragment","createGroupChannelRegisterOperatorFragment","createGroupChannelMutedMembersFragment","createGroupChannelBannedUsersFragment","createGroupChannelNotificationsFragment","createMessageSearchFragment","createOpenChannelFragment","createOpenChannelParticipantsFragment","createOpenChannelSettingsFragment","createOpenChannelListFragment","createOpenChannelCreateFragment","createOpenChannelModerationFragment","createOpenChannelBannedUsersFragment","createOpenChannelMutedParticipantsFragment","createOpenChannelOperatorsFragment","createOpenChannelRegisterOperatorFragment","SendbirdChatContext","SendbirdChatProvider","PlatformServiceContext","PlatformServiceProvider","UserProfileContext","UserProfileProvider","LocalizationContext","LocalizationProvider","useConnection","usePushTokenRegistration","createBaseStringSet","StringSetEn","createNativeFileService","createNativeClipboardService","createNativeNotificationService","createNativeMediaService","createNativePlayerService","createNativeRecorderService","createExpoFileService","createExpoClipboardService","createExpoNotificationService","createExpoMediaService","createExpoPlayerService","createExpoRecorderService","SendbirdUIKitContainer","SendbirdUIKit","SBUError","SBUUtils","setLogLevel","__DEV__","setTitle","OS","apply"],"sources":["index.ts"],"sourcesContent":["import { Platform } from 'react-native';\n\nimport { Logger } from '@sendbird/uikit-utils';\n\nimport { PromisePolyfill } from './utils/promise';\n\n/** Components **/\nexport { default as ChannelInput } from './components/ChannelInput';\nexport { default as ChannelMessageList } from './components/ChannelMessageList';\nexport { default as GroupChannelMessageRenderer } from './components/GroupChannelMessageRenderer';\nexport { default as OpenChannelMessageRenderer } from './components/OpenChannelMessageRenderer';\nexport { ReactionAddons } from './components/ReactionAddons';\nexport { ReactionBottomSheets } from './components/ReactionBottomSheets';\nexport { default as ChannelCover } from './components/ChannelCover';\nexport { default as ChatFlatList } from './components/ChatFlatList';\nexport { default as FileViewer } from './components/FileViewer';\nexport { default as MessageSearchResultItem } from './components/MessageSearchResultItem';\nexport { default as NewMessagesButton } from './components/NewMessagesButton';\nexport { default as ProviderLayout } from './components/ProviderLayout';\nexport { default as ScrollToBottomButton } from './components/ScrollToBottomButton';\nexport { default as StatusComposition } from './components/StatusComposition';\nexport { default as TypedPlaceholder } from './components/TypedPlaceholder';\nexport { default as UserActionBar } from './components/UserActionBar';\nexport { default as UserSelectableBar } from './components/UserSelectableBar';\n\n/** Fragments - group channels **/\nexport { default as createGroupChannelCreateFragment } from './fragments/createGroupChannelCreateFragment';\nexport { default as createGroupChannelFragment } from './fragments/createGroupChannelFragment';\nexport { default as createGroupChannelSettingsFragment } from './fragments/createGroupChannelSettingsFragment';\nexport { default as createGroupChannelInviteFragment } from './fragments/createGroupChannelInviteFragment';\nexport { default as createGroupChannelListFragment } from './fragments/createGroupChannelListFragment';\nexport { default as createGroupChannelMembersFragment } from './fragments/createGroupChannelMembersFragment';\nexport { default as createGroupChannelModerationFragment } from './fragments/createGroupChannelModerationFragment';\nexport { default as createGroupChannelOperatorsFragment } from './fragments/createGroupChannelOperatorsFragment';\nexport { default as createGroupChannelRegisterOperatorFragment } from './fragments/createGroupChannelRegisterOperatorFragment';\nexport { default as createGroupChannelMutedMembersFragment } from './fragments/createGroupChannelMutedMembersFragment';\nexport { default as createGroupChannelBannedUsersFragment } from './fragments/createGroupChannelBannedUsersFragment';\nexport { default as createGroupChannelNotificationsFragment } from './fragments/createGroupChannelNotificationsFragment';\nexport { default as createMessageSearchFragment } from './fragments/createMessageSearchFragment';\n\n/** Fragments - open channels **/\nexport { default as createOpenChannelFragment } from './fragments/createOpenChannelFragment';\nexport { default as createOpenChannelParticipantsFragment } from './fragments/createOpenChannelParticipantsFragment';\nexport { default as createOpenChannelSettingsFragment } from './fragments/createOpenChannelSettingsFragment';\nexport { default as createOpenChannelListFragment } from './fragments/createOpenChannelListFragment';\nexport { default as createOpenChannelCreateFragment } from './fragments/createOpenChannelCreateFragment';\nexport { default as createOpenChannelModerationFragment } from './fragments/createOpenChannelModerationFragment';\nexport { default as createOpenChannelBannedUsersFragment } from './fragments/createOpenChannelBannedUsersFragment';\nexport { default as createOpenChannelMutedParticipantsFragment } from './fragments/createOpenChannelMutedParticipantsFragment';\nexport { default as createOpenChannelOperatorsFragment } from './fragments/createOpenChannelOperatorsFragment';\nexport { default as createOpenChannelRegisterOperatorFragment } from './fragments/createOpenChannelRegisterOperatorFragment';\n\n/** Context **/\nexport { SendbirdChatContext, SendbirdChatProvider } from './contexts/SendbirdChatCtx';\nexport { PlatformServiceContext, PlatformServiceProvider } from './contexts/PlatformServiceCtx';\nexport { UserProfileContext, UserProfileProvider } from './contexts/UserProfileCtx';\nexport { LocalizationContext, LocalizationProvider } from './contexts/LocalizationCtx';\n\n/** Hooks **/\nexport { default as useConnection } from './hooks/useConnection';\nexport { default as usePushTokenRegistration } from './hooks/usePushTokenRegistration';\nexport * from './hooks/useContext';\n\n/** Localization **/\nexport { createBaseStringSet } from './localization/createBaseStringSet';\nexport { default as StringSetEn } from './localization/StringSet.en';\nexport * from './localization/StringSet.type';\n\n/** Platform API **/\nexport { default as createNativeFileService } from './platform/createFileService.native';\nexport { default as createNativeClipboardService } from './platform/createClipboardService.native';\nexport { default as createNativeNotificationService } from './platform/createNotificationService.native';\nexport { default as createNativeMediaService } from './platform/createMediaService.native';\nexport { default as createNativePlayerService } from './platform/createPlayerService.native';\nexport { default as createNativeRecorderService } from './platform/createRecorderService.native';\nexport { default as createExpoFileService } from './platform/createFileService.expo';\nexport { default as createExpoClipboardService } from './platform/createClipboardService.expo';\nexport { default as createExpoNotificationService } from './platform/createNotificationService.expo';\nexport { default as createExpoMediaService } from './platform/createMediaService.expo';\nexport { default as createExpoPlayerService } from './platform/createPlayerService.expo';\nexport { default as createExpoRecorderService } from './platform/createRecorderService.expo';\nexport * from './platform/types';\n\n/** Feature - shared **/\nexport * from './domain/userList';\nexport * from './domain/userList/types';\n\n/** Feature - group channels **/\nexport * from './domain/groupChannel';\nexport * from './domain/groupChannel/types';\n\nexport * from './domain/groupChannelSettings';\nexport * from './domain/groupChannelSettings/types';\n\nexport * from './domain/groupChannelList';\nexport * from './domain/groupChannelList/types';\n\nexport * from './domain/groupChannelNotifications';\nexport * from './domain/groupChannelNotifications/types';\n\nexport * from './domain/groupChannelUserList/types';\n\nexport * from './domain/messageSearch/types';\n\n/** Feature - open channels **/\nexport * from './domain/openChannel';\nexport * from './domain/openChannel/types';\n\nexport * from './domain/openChannelSettings';\nexport * from './domain/openChannelSettings/types';\n\nexport * from './domain/openChannelList';\nexport * from './domain/openChannelList/types';\n\nexport * from './domain/openChannelCreate';\nexport * from './domain/openChannelCreate/types';\n\nexport * from './domain/openChannelModeration';\nexport * from './domain/openChannelModeration/types';\n\nexport * from './domain/openChannelBannedUsers';\nexport * from './domain/openChannelBannedUsers/types';\n\nexport * from './domain/openChannelMutedParticipants';\nexport * from './domain/openChannelMutedParticipants/types';\n\nexport * from './domain/openChannelOperators';\nexport * from './domain/openChannelOperators/types';\n\nexport * from './domain/openChannelUserList/types';\n\n/** UIKit **/\nexport { default as SendbirdUIKitContainer, SendbirdUIKit } from './containers/SendbirdUIKitContainer';\nexport type { SendbirdUIKitContainerProps } from './containers/SendbirdUIKitContainer';\nexport { default as SBUError } from './libs/SBUError';\nexport { default as SBUUtils } from './libs/SBUUtils';\nexport * from './types';\n\nLogger.setLogLevel(__DEV__ ? 'warn' : 'none');\nLogger.setTitle(`[UIKIT_${Platform.OS}]`);\n\n// NOTE: In Hermes, not all implementations of Promise are included\nPromisePolyfill.apply();\n"],"mappings":"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"}
1
+ {"version":3,"names":["Platform","Logger","PromisePolyfill","default","ChannelInput","ChannelMessageList","GroupChannelMessageRenderer","OpenChannelMessageRenderer","ReactionAddons","ReactionBottomSheets","ChannelCover","ChatFlatList","FileViewer","MessageSearchResultItem","NewMessagesButton","ProviderLayout","ScrollToBottomButton","StatusComposition","TypedPlaceholder","UserActionBar","UserSelectableBar","createGroupChannelCreateFragment","createGroupChannelFragment","createGroupChannelSettingsFragment","createGroupChannelInviteFragment","createGroupChannelListFragment","createGroupChannelMembersFragment","createGroupChannelModerationFragment","createGroupChannelOperatorsFragment","createGroupChannelRegisterOperatorFragment","createGroupChannelMutedMembersFragment","createGroupChannelBannedUsersFragment","createGroupChannelNotificationsFragment","createGroupChannelThreadFragment","createMessageSearchFragment","createOpenChannelFragment","createOpenChannelParticipantsFragment","createOpenChannelSettingsFragment","createOpenChannelListFragment","createOpenChannelCreateFragment","createOpenChannelModerationFragment","createOpenChannelBannedUsersFragment","createOpenChannelMutedParticipantsFragment","createOpenChannelOperatorsFragment","createOpenChannelRegisterOperatorFragment","SendbirdChatContext","SendbirdChatProvider","PlatformServiceContext","PlatformServiceProvider","UserProfileContext","UserProfileProvider","LocalizationContext","LocalizationProvider","useConnection","usePushTokenRegistration","createBaseStringSet","StringSetEn","createNativeFileService","createNativeClipboardService","createNativeNotificationService","createNativeMediaService","createNativePlayerService","createNativeRecorderService","createExpoFileService","createExpoClipboardService","createExpoNotificationService","createExpoMediaService","createExpoPlayerService","createExpoRecorderService","SendbirdUIKitContainer","SendbirdUIKit","SBUError","SBUUtils","setLogLevel","__DEV__","setTitle","OS","apply"],"sources":["index.ts"],"sourcesContent":["import { Platform } from 'react-native';\n\nimport { Logger } from '@sendbird/uikit-utils';\n\nimport { PromisePolyfill } from './utils/promise';\n\n/** Components **/\nexport { default as ChannelInput } from './components/ChannelInput';\nexport { default as ChannelMessageList } from './components/ChannelMessageList';\nexport { default as GroupChannelMessageRenderer } from './components/GroupChannelMessageRenderer';\nexport { default as OpenChannelMessageRenderer } from './components/OpenChannelMessageRenderer';\nexport { ReactionAddons } from './components/ReactionAddons';\nexport { ReactionBottomSheets } from './components/ReactionBottomSheets';\nexport { default as ChannelCover } from './components/ChannelCover';\nexport { default as ChatFlatList } from './components/ChatFlatList';\nexport { default as FileViewer } from './components/FileViewer';\nexport { default as MessageSearchResultItem } from './components/MessageSearchResultItem';\nexport { default as NewMessagesButton } from './components/NewMessagesButton';\nexport { default as ProviderLayout } from './components/ProviderLayout';\nexport { default as ScrollToBottomButton } from './components/ScrollToBottomButton';\nexport { default as StatusComposition } from './components/StatusComposition';\nexport { default as TypedPlaceholder } from './components/TypedPlaceholder';\nexport { default as UserActionBar } from './components/UserActionBar';\nexport { default as UserSelectableBar } from './components/UserSelectableBar';\n\n/** Fragments - group channels **/\nexport { default as createGroupChannelCreateFragment } from './fragments/createGroupChannelCreateFragment';\nexport { default as createGroupChannelFragment } from './fragments/createGroupChannelFragment';\nexport { default as createGroupChannelSettingsFragment } from './fragments/createGroupChannelSettingsFragment';\nexport { default as createGroupChannelInviteFragment } from './fragments/createGroupChannelInviteFragment';\nexport { default as createGroupChannelListFragment } from './fragments/createGroupChannelListFragment';\nexport { default as createGroupChannelMembersFragment } from './fragments/createGroupChannelMembersFragment';\nexport { default as createGroupChannelModerationFragment } from './fragments/createGroupChannelModerationFragment';\nexport { default as createGroupChannelOperatorsFragment } from './fragments/createGroupChannelOperatorsFragment';\nexport { default as createGroupChannelRegisterOperatorFragment } from './fragments/createGroupChannelRegisterOperatorFragment';\nexport { default as createGroupChannelMutedMembersFragment } from './fragments/createGroupChannelMutedMembersFragment';\nexport { default as createGroupChannelBannedUsersFragment } from './fragments/createGroupChannelBannedUsersFragment';\nexport { default as createGroupChannelNotificationsFragment } from './fragments/createGroupChannelNotificationsFragment';\nexport { default as createGroupChannelThreadFragment } from './fragments/createGroupChannelThreadFragment';\nexport { default as createMessageSearchFragment } from './fragments/createMessageSearchFragment';\n\n/** Fragments - open channels **/\nexport { default as createOpenChannelFragment } from './fragments/createOpenChannelFragment';\nexport { default as createOpenChannelParticipantsFragment } from './fragments/createOpenChannelParticipantsFragment';\nexport { default as createOpenChannelSettingsFragment } from './fragments/createOpenChannelSettingsFragment';\nexport { default as createOpenChannelListFragment } from './fragments/createOpenChannelListFragment';\nexport { default as createOpenChannelCreateFragment } from './fragments/createOpenChannelCreateFragment';\nexport { default as createOpenChannelModerationFragment } from './fragments/createOpenChannelModerationFragment';\nexport { default as createOpenChannelBannedUsersFragment } from './fragments/createOpenChannelBannedUsersFragment';\nexport { default as createOpenChannelMutedParticipantsFragment } from './fragments/createOpenChannelMutedParticipantsFragment';\nexport { default as createOpenChannelOperatorsFragment } from './fragments/createOpenChannelOperatorsFragment';\nexport { default as createOpenChannelRegisterOperatorFragment } from './fragments/createOpenChannelRegisterOperatorFragment';\n\n/** Context **/\nexport { SendbirdChatContext, SendbirdChatProvider } from './contexts/SendbirdChatCtx';\nexport { PlatformServiceContext, PlatformServiceProvider } from './contexts/PlatformServiceCtx';\nexport { UserProfileContext, UserProfileProvider } from './contexts/UserProfileCtx';\nexport { LocalizationContext, LocalizationProvider } from './contexts/LocalizationCtx';\n\n/** Hooks **/\nexport { default as useConnection } from './hooks/useConnection';\nexport { default as usePushTokenRegistration } from './hooks/usePushTokenRegistration';\nexport * from './hooks/useContext';\n\n/** Localization **/\nexport { createBaseStringSet } from './localization/createBaseStringSet';\nexport { default as StringSetEn } from './localization/StringSet.en';\nexport * from './localization/StringSet.type';\n\n/** Platform API **/\nexport { default as createNativeFileService } from './platform/createFileService.native';\nexport { default as createNativeClipboardService } from './platform/createClipboardService.native';\nexport { default as createNativeNotificationService } from './platform/createNotificationService.native';\nexport { default as createNativeMediaService } from './platform/createMediaService.native';\nexport { default as createNativePlayerService } from './platform/createPlayerService.native';\nexport { default as createNativeRecorderService } from './platform/createRecorderService.native';\nexport { default as createExpoFileService } from './platform/createFileService.expo';\nexport { default as createExpoClipboardService } from './platform/createClipboardService.expo';\nexport { default as createExpoNotificationService } from './platform/createNotificationService.expo';\nexport { default as createExpoMediaService } from './platform/createMediaService.expo';\nexport { default as createExpoPlayerService } from './platform/createPlayerService.expo';\nexport { default as createExpoRecorderService } from './platform/createRecorderService.expo';\nexport * from './platform/types';\n\n/** Feature - shared **/\nexport * from './domain/userList';\nexport * from './domain/userList/types';\n\n/** Feature - group channels **/\nexport * from './domain/groupChannel';\nexport * from './domain/groupChannel/types';\n\nexport * from './domain/groupChannelSettings';\nexport * from './domain/groupChannelSettings/types';\n\nexport * from './domain/groupChannelList';\nexport * from './domain/groupChannelList/types';\n\nexport * from './domain/groupChannelNotifications';\nexport * from './domain/groupChannelNotifications/types';\n\nexport * from './domain/groupChannelUserList/types';\n\nexport * from './domain/messageSearch/types';\n\nexport * from './domain/groupChannelThread';\nexport * from './domain/groupChannelThread/types';\n\n/** Feature - open channels **/\nexport * from './domain/openChannel';\nexport * from './domain/openChannel/types';\n\nexport * from './domain/openChannelSettings';\nexport * from './domain/openChannelSettings/types';\n\nexport * from './domain/openChannelList';\nexport * from './domain/openChannelList/types';\n\nexport * from './domain/openChannelCreate';\nexport * from './domain/openChannelCreate/types';\n\nexport * from './domain/openChannelModeration';\nexport * from './domain/openChannelModeration/types';\n\nexport * from './domain/openChannelBannedUsers';\nexport * from './domain/openChannelBannedUsers/types';\n\nexport * from './domain/openChannelMutedParticipants';\nexport * from './domain/openChannelMutedParticipants/types';\n\nexport * from './domain/openChannelOperators';\nexport * from './domain/openChannelOperators/types';\n\nexport * from './domain/openChannelUserList/types';\n\n/** UIKit **/\nexport { default as SendbirdUIKitContainer, SendbirdUIKit } from './containers/SendbirdUIKitContainer';\nexport type { SendbirdUIKitContainerProps } from './containers/SendbirdUIKitContainer';\nexport { default as SBUError } from './libs/SBUError';\nexport { default as SBUUtils } from './libs/SBUUtils';\nexport * from './types';\n\nLogger.setLogLevel(__DEV__ ? 'warn' : 'none');\nLogger.setTitle(`[UIKIT_${Platform.OS}]`);\n\n// NOTE: In Hermes, not all implementations of Promise are included\nPromisePolyfill.apply();\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["InternalLocalCacheStorage","MemoryStorage","constructor","_defineProperty","getAllKeys","Object","keys","_data","getItem","key","removeItem","setItem","value","EmojiManager","internalStorage","arguments","length","undefined","container","get","emojiStorage","strItem","freeze","JSON","parse","set","stringify","emojiContainer","category","emojiCategories","_emojiCategoryMap","id","emoji","emojis","_allEmojiMap","_allEmoji","values","emojiCategoryMap","allEmojiMap","allEmoji","emojiHash","_this$emojiStorage$co"],"sources":["EmojiManager.ts"],"sourcesContent":["import type { SendbirdEmoji, SendbirdEmojiCategory, SendbirdEmojiContainer } from '@sendbird/uikit-utils';\n\nimport type { LocalCacheStorage } from '../types';\nimport InternalLocalCacheStorage from './InternalLocalCacheStorage';\n\nclass MemoryStorage implements LocalCacheStorage {\n _data: Record<string, string> = {};\n\n async getAllKeys(): Promise<readonly string[] | string[]> {\n return Object.keys(this._data);\n }\n\n async getItem(key: string): Promise<string | null> {\n return this._data[key];\n }\n\n async removeItem(key: string): Promise<void> {\n delete this._data[key];\n }\n\n async setItem(key: string, value: string): Promise<void> {\n this._data[key] = value;\n }\n}\n\nclass EmojiManager {\n static key = 'sendbird-uikit@emoji-manager';\n\n constructor(\n private internalStorage: InternalLocalCacheStorage = new InternalLocalCacheStorage(new MemoryStorage()),\n ) {}\n\n private emojiStorage = {\n container: null as null | SendbirdEmojiContainer,\n get: async () => {\n if (!this.emojiStorage.container) {\n const strItem = await this.internalStorage.getItem(EmojiManager.key);\n if (strItem) this.emojiStorage.container = Object.freeze(JSON.parse(strItem));\n }\n return this.emojiStorage.container;\n },\n set: async (container: SendbirdEmojiContainer) => {\n this.emojiStorage.container = Object.freeze(container);\n await this.internalStorage.setItem(EmojiManager.key, JSON.stringify(container));\n },\n };\n\n private _emojiCategoryMap: Record<string, SendbirdEmojiCategory> = {};\n public get emojiCategoryMap() {\n return this._emojiCategoryMap;\n }\n\n private _allEmojiMap: Record<string, SendbirdEmoji> = {};\n public get allEmojiMap() {\n return this._allEmojiMap;\n }\n\n private _allEmoji: SendbirdEmoji[] = [];\n public get allEmoji() {\n return this._allEmoji;\n }\n\n public init = async (emojiContainer?: SendbirdEmojiContainer) => {\n if (emojiContainer) await this.emojiStorage.set(emojiContainer);\n\n const container = await this.emojiStorage.get();\n\n if (container) {\n for (const category of container.emojiCategories) {\n this._emojiCategoryMap[category.id] = category;\n for (const emoji of category.emojis) {\n this._allEmojiMap[emoji.key] = emoji;\n }\n }\n this._allEmoji = Object.values(this._allEmojiMap);\n }\n };\n\n public get emojiHash() {\n return this.emojiStorage.container?.emojiHash;\n }\n}\n\nexport default EmojiManager;\n"],"mappings":"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"}
1
+ {"version":3,"names":["InternalLocalCacheStorage","MemoryStorage","constructor","_defineProperty","getAllKeys","Object","keys","_data","getItem","key","removeItem","setItem","value","EmojiManager","internalStorage","arguments","length","undefined","container","get","emojiStorage","strItem","freeze","JSON","parse","set","stringify","emojiContainer","category","emojiCategories","_emojiCategoryMap","id","emoji","emojis","_allEmojiMap","_allEmoji","values","emojiCategoryMap","allEmojiMap","allEmoji","emojiHash","_this$emojiStorage$co"],"sources":["EmojiManager.ts"],"sourcesContent":["import type { SendbirdEmoji, SendbirdEmojiCategory, SendbirdEmojiContainer } from '@sendbird/uikit-utils';\n\nimport type { AsyncLocalCacheStorage } from '../types';\nimport InternalLocalCacheStorage from './InternalLocalCacheStorage';\n\nclass MemoryStorage implements AsyncLocalCacheStorage {\n _data: Record<string, string> = {};\n\n async getAllKeys(): Promise<readonly string[] | string[]> {\n return Object.keys(this._data);\n }\n\n async getItem(key: string): Promise<string | null> {\n return this._data[key];\n }\n\n async removeItem(key: string): Promise<void> {\n delete this._data[key];\n }\n\n async setItem(key: string, value: string): Promise<void> {\n this._data[key] = value;\n }\n}\n\nclass EmojiManager {\n static key = 'sendbird-uikit@emoji-manager';\n\n constructor(\n private internalStorage: InternalLocalCacheStorage = new InternalLocalCacheStorage(new MemoryStorage()),\n ) {}\n\n private emojiStorage = {\n container: null as null | SendbirdEmojiContainer,\n get: async () => {\n if (!this.emojiStorage.container) {\n const strItem = await this.internalStorage.getItem(EmojiManager.key);\n if (strItem) this.emojiStorage.container = Object.freeze(JSON.parse(strItem));\n }\n return this.emojiStorage.container;\n },\n set: async (container: SendbirdEmojiContainer) => {\n this.emojiStorage.container = Object.freeze(container);\n await this.internalStorage.setItem(EmojiManager.key, JSON.stringify(container));\n },\n };\n\n private _emojiCategoryMap: Record<string, SendbirdEmojiCategory> = {};\n public get emojiCategoryMap() {\n return this._emojiCategoryMap;\n }\n\n private _allEmojiMap: Record<string, SendbirdEmoji> = {};\n public get allEmojiMap() {\n return this._allEmojiMap;\n }\n\n private _allEmoji: SendbirdEmoji[] = [];\n public get allEmoji() {\n return this._allEmoji;\n }\n\n public init = async (emojiContainer?: SendbirdEmojiContainer) => {\n if (emojiContainer) await this.emojiStorage.set(emojiContainer);\n\n const container = await this.emojiStorage.get();\n\n if (container) {\n for (const category of container.emojiCategories) {\n this._emojiCategoryMap[category.id] = category;\n for (const emoji of category.emojis) {\n this._allEmojiMap[emoji.key] = emoji;\n }\n }\n this._allEmoji = Object.values(this._allEmojiMap);\n }\n };\n\n public get emojiHash() {\n return this.emojiStorage.container?.emojiHash;\n }\n}\n\nexport default EmojiManager;\n"],"mappings":";;;AAGA,OAAOA,yBAAyB,MAAM,6BAA6B;AAEnE,MAAMC,aAAa,CAAmC;EAAAC,YAAA;IAAAC,eAAA,gBACpB,CAAC,CAAC;EAAA;EAElC,MAAMC,UAAUA,CAAA,EAA0C;IACxD,OAAOC,MAAM,CAACC,IAAI,CAAC,IAAI,CAACC,KAAK,CAAC;EAChC;EAEA,MAAMC,OAAOA,CAACC,GAAW,EAA0B;IACjD,OAAO,IAAI,CAACF,KAAK,CAACE,GAAG,CAAC;EACxB;EAEA,MAAMC,UAAUA,CAACD,GAAW,EAAiB;IAC3C,OAAO,IAAI,CAACF,KAAK,CAACE,GAAG,CAAC;EACxB;EAEA,MAAME,OAAOA,CAACF,GAAW,EAAEG,KAAa,EAAiB;IACvD,IAAI,CAACL,KAAK,CAACE,GAAG,CAAC,GAAGG,KAAK;EACzB;AACF;AAEA,MAAMC,YAAY,CAAC;EAGjBX,WAAWA,CAAA,EAET;IAAA,IADQY,eAA0C,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAIf,yBAAyB,CAAC,IAAIC,aAAa,EAAE,CAAC;IAAA,KAA/Fa,eAA0C,GAA1CA,eAA0C;IAAAX,eAAA,uBAG7B;MACrBe,SAAS,EAAE,IAAqC;MAChDC,GAAG,EAAE,MAAAA,CAAA,KAAY;QACf,IAAI,CAAC,IAAI,CAACC,YAAY,CAACF,SAAS,EAAE;UAChC,MAAMG,OAAO,GAAG,MAAM,IAAI,CAACP,eAAe,CAACN,OAAO,CAACK,YAAY,CAACJ,GAAG,CAAC;UACpE,IAAIY,OAAO,EAAE,IAAI,CAACD,YAAY,CAACF,SAAS,GAAGb,MAAM,CAACiB,MAAM,CAACC,IAAI,CAACC,KAAK,CAACH,OAAO,CAAC,CAAC;QAC/E;QACA,OAAO,IAAI,CAACD,YAAY,CAACF,SAAS;MACpC,CAAC;MACDO,GAAG,EAAE,MAAOP,SAAiC,IAAK;QAChD,IAAI,CAACE,YAAY,CAACF,SAAS,GAAGb,MAAM,CAACiB,MAAM,CAACJ,SAAS,CAAC;QACtD,MAAM,IAAI,CAACJ,eAAe,CAACH,OAAO,CAACE,YAAY,CAACJ,GAAG,EAAEc,IAAI,CAACG,SAAS,CAACR,SAAS,CAAC,CAAC;MACjF;IACF,CAAC;IAAAf,eAAA,4BAEkE,CAAC,CAAC;IAAAA,eAAA,uBAKf,CAAC,CAAC;IAAAA,eAAA,oBAKnB,EAAE;IAAAA,eAAA,eAKzB,MAAOwB,cAAuC,IAAK;MAC/D,IAAIA,cAAc,EAAE,MAAM,IAAI,CAACP,YAAY,CAACK,GAAG,CAACE,cAAc,CAAC;MAE/D,MAAMT,SAAS,GAAG,MAAM,IAAI,CAACE,YAAY,CAACD,GAAG,EAAE;MAE/C,IAAID,SAAS,EAAE;QACb,KAAK,MAAMU,QAAQ,IAAIV,SAAS,CAACW,eAAe,EAAE;UAChD,IAAI,CAACC,iBAAiB,CAACF,QAAQ,CAACG,EAAE,CAAC,GAAGH,QAAQ;UAC9C,KAAK,MAAMI,KAAK,IAAIJ,QAAQ,CAACK,MAAM,EAAE;YACnC,IAAI,CAACC,YAAY,CAACF,KAAK,CAACvB,GAAG,CAAC,GAAGuB,KAAK;UACtC;QACF;QACA,IAAI,CAACG,SAAS,GAAG9B,MAAM,CAAC+B,MAAM,CAAC,IAAI,CAACF,YAAY,CAAC;MACnD;IACF,CAAC;EA9CE;EAkBH,IAAWG,gBAAgBA,CAAA,EAAG;IAC5B,OAAO,IAAI,CAACP,iBAAiB;EAC/B;EAGA,IAAWQ,WAAWA,CAAA,EAAG;IACvB,OAAO,IAAI,CAACJ,YAAY;EAC1B;EAGA,IAAWK,QAAQA,CAAA,EAAG;IACpB,OAAO,IAAI,CAACJ,SAAS;EACvB;EAkBA,IAAWK,SAASA,CAAA,EAAG;IAAA,IAAAC,qBAAA;IACrB,QAAAA,qBAAA,GAAO,IAAI,CAACrB,YAAY,CAACF,SAAS,cAAAuB,qBAAA,uBAA3BA,qBAAA,CAA6BD,SAAS;EAC/C;AACF;AAACrC,eAAA,CAxDKU,YAAY,SACH,8BAA8B;AAyD7C,eAAeA,YAAY"}
@@ -4,44 +4,90 @@ function _toPrimitive(input, hint) { if (typeof input !== "object" || input ===
4
4
  import { ASYNC_NOOP } from '@sendbird/uikit-utils';
5
5
  export default class InternalLocalCacheStorage {
6
6
  constructor(storage) {
7
- this.storage = storage;
7
+ _defineProperty(this, "_mmkv", void 0);
8
+ _defineProperty(this, "_async", void 0);
8
9
  _defineProperty(this, "clear", ASYNC_NOOP);
9
10
  _defineProperty(this, "flushGetRequests", ASYNC_NOOP);
11
+ if ('getString' in storage) {
12
+ this._mmkv = storage;
13
+ } else {
14
+ this._async = storage;
15
+ }
10
16
  }
11
- getAllKeys() {
12
- return this.storage.getAllKeys();
17
+ async getAllKeys() {
18
+ if (this._mmkv) {
19
+ return this._mmkv.getAllKeys();
20
+ } else if (this._async) {
21
+ return this._async.getAllKeys();
22
+ } else {
23
+ return [];
24
+ }
13
25
  }
14
- getItem(key) {
15
- return this.storage.getItem(key);
26
+ async getItem(key) {
27
+ if (this._mmkv) {
28
+ return this._mmkv.getString(key) ?? null;
29
+ } else if (this._async) {
30
+ return this._async.getItem(key);
31
+ } else {
32
+ return null;
33
+ }
16
34
  }
17
- removeItem(key) {
18
- return this.storage.removeItem(key);
35
+ async removeItem(key) {
36
+ if (this._mmkv) {
37
+ this._mmkv.delete(key);
38
+ } else if (this._async) {
39
+ return this._async.removeItem(key);
40
+ }
19
41
  }
20
- setItem(key, value) {
21
- return this.storage.setItem(key, value);
42
+ async setItem(key, value) {
43
+ if (this._mmkv) {
44
+ this._mmkv.set(key, value);
45
+ } else if (this._async) {
46
+ return this._async.setItem(key, value);
47
+ }
22
48
  }
23
49
  async multiGet(keys) {
24
- if (this.storage.multiGet) {
25
- return this.storage.multiGet(keys);
26
- } else {
50
+ if (this._mmkv) {
27
51
  return Promise.all(keys.map(async key => [key, await this.getItem(key)]));
52
+ } else if (this._async) {
53
+ var _this$_async;
54
+ if ((_this$_async = this._async) !== null && _this$_async !== void 0 && _this$_async.multiGet) {
55
+ return this._async.multiGet(keys);
56
+ } else {
57
+ return Promise.all(keys.map(async key => [key, await this.getItem(key)]));
58
+ }
59
+ } else {
60
+ return [];
28
61
  }
29
62
  }
30
63
  async multiRemove(keys) {
31
- if (this.storage.multiRemove) {
32
- await this.storage.multiRemove(keys);
33
- } else {
64
+ if (this._mmkv) {
34
65
  await Promise.all(keys.map(async key => this.removeItem(key)));
66
+ } else if (this._async) {
67
+ var _this$_async2;
68
+ if ((_this$_async2 = this._async) !== null && _this$_async2 !== void 0 && _this$_async2.multiRemove) {
69
+ await this._async.multiRemove(keys);
70
+ } else {
71
+ await Promise.all(keys.map(async key => this.removeItem(key)));
72
+ }
35
73
  }
36
74
  }
37
75
  async multiSet(keyValuePairs) {
38
- if (this.storage.multiSet) {
39
- await this.storage.multiSet(keyValuePairs);
40
- } else {
76
+ if (this._mmkv) {
41
77
  await Promise.all(keyValuePairs.map(_ref => {
42
78
  let [key, value] = _ref;
43
- return this.storage.setItem(key, value);
79
+ return this.setItem(key, value);
44
80
  }));
81
+ } else if (this._async) {
82
+ var _this$_async3;
83
+ if ((_this$_async3 = this._async) !== null && _this$_async3 !== void 0 && _this$_async3.multiSet) {
84
+ await this._async.multiSet(keyValuePairs);
85
+ } else {
86
+ await Promise.all(keyValuePairs.map(_ref2 => {
87
+ let [key, value] = _ref2;
88
+ return this.setItem(key, value);
89
+ }));
90
+ }
45
91
  }
46
92
  }
47
93
  }