@sendbird/uikit-react-native 3.5.4 → 3.6.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 (234) hide show
  1. package/lib/commonjs/components/ChannelInput/SendInput.js +23 -6
  2. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  3. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  4. package/lib/commonjs/components/ChannelMessageList/index.js +22 -4
  5. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  6. package/lib/commonjs/components/ChannelThreadMessageList/index.js +349 -0
  7. package/lib/commonjs/components/ChannelThreadMessageList/index.js.map +1 -0
  8. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +2 -2
  9. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  10. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js +100 -0
  11. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js.map +1 -0
  12. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +24 -6
  13. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  14. package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js +23 -6
  15. package/lib/commonjs/components/ReactionAddons/MessageReactionAddon.js.map +1 -1
  16. package/lib/commonjs/components/ThreadChatFlatList/index.js +76 -0
  17. package/lib/commonjs/components/ThreadChatFlatList/index.js.map +1 -0
  18. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js +41 -0
  19. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js.map +1 -0
  20. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js +74 -0
  21. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js.map +1 -0
  22. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js +42 -0
  23. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js.map +1 -0
  24. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js +94 -0
  25. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map +1 -0
  26. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js +61 -0
  27. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js.map +1 -0
  28. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js +127 -0
  29. package/lib/commonjs/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js.map +1 -0
  30. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js +206 -0
  31. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js.map +1 -0
  32. package/lib/commonjs/containers/SendbirdUIKitContainer.js +3 -0
  33. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  34. package/lib/commonjs/contexts/SendbirdChatCtx.js +7 -0
  35. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  36. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +28 -5
  37. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  38. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +14 -4
  39. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  40. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  41. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadHeader.js +82 -0
  42. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadHeader.js.map +1 -0
  43. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadInput.js +44 -0
  44. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadInput.js.map +1 -0
  45. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +127 -0
  46. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -0
  47. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +315 -0
  48. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -0
  49. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js +27 -0
  50. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js.map +1 -0
  51. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js +27 -0
  52. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js.map +1 -0
  53. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js +195 -0
  54. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js.map +1 -0
  55. package/lib/commonjs/domain/groupChannelThread/index.js +69 -0
  56. package/lib/commonjs/domain/groupChannelThread/index.js.map +1 -0
  57. package/lib/commonjs/domain/groupChannelThread/module/createGroupChannelThreadModule.js +42 -0
  58. package/lib/commonjs/domain/groupChannelThread/module/createGroupChannelThreadModule.js.map +1 -0
  59. package/lib/commonjs/domain/groupChannelThread/module/moduleContext.js +148 -0
  60. package/lib/commonjs/domain/groupChannelThread/module/moduleContext.js.map +1 -0
  61. package/lib/commonjs/domain/groupChannelThread/types.js +6 -0
  62. package/lib/commonjs/domain/groupChannelThread/types.js.map +1 -0
  63. package/lib/commonjs/fragments/createGroupChannelFragment.js +30 -5
  64. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  65. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js +267 -0
  66. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js.map +1 -0
  67. package/lib/commonjs/hooks/useMentionSuggestion.js +5 -2
  68. package/lib/commonjs/hooks/useMentionSuggestion.js.map +1 -1
  69. package/lib/commonjs/index.js +72 -40
  70. package/lib/commonjs/index.js.map +1 -1
  71. package/lib/commonjs/libs/VoiceMessageStatusManager.js +66 -0
  72. package/lib/commonjs/libs/VoiceMessageStatusManager.js.map +1 -0
  73. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  74. package/lib/commonjs/localization/createBaseStringSet.js +25 -3
  75. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  76. package/lib/commonjs/version.js +1 -1
  77. package/lib/commonjs/version.js.map +1 -1
  78. package/lib/module/components/ChannelInput/SendInput.js +23 -6
  79. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  80. package/lib/module/components/ChannelInput/index.js.map +1 -1
  81. package/lib/module/components/ChannelMessageList/index.js +22 -4
  82. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  83. package/lib/module/components/ChannelThreadMessageList/index.js +341 -0
  84. package/lib/module/components/ChannelThreadMessageList/index.js.map +1 -0
  85. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js +2 -2
  86. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.js.map +1 -1
  87. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js +92 -0
  88. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.js.map +1 -0
  89. package/lib/module/components/GroupChannelMessageRenderer/index.js +24 -6
  90. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  91. package/lib/module/components/ReactionAddons/MessageReactionAddon.js +23 -6
  92. package/lib/module/components/ReactionAddons/MessageReactionAddon.js.map +1 -1
  93. package/lib/module/components/ThreadChatFlatList/index.js +66 -0
  94. package/lib/module/components/ThreadChatFlatList/index.js.map +1 -0
  95. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js +34 -0
  96. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.js.map +1 -0
  97. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js +67 -0
  98. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.js.map +1 -0
  99. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js +34 -0
  100. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.js.map +1 -0
  101. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js +87 -0
  102. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.js.map +1 -0
  103. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js +54 -0
  104. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.js.map +1 -0
  105. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js +119 -0
  106. package/lib/module/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.js.map +1 -0
  107. package/lib/module/components/ThreadParentMessageRenderer/index.js +196 -0
  108. package/lib/module/components/ThreadParentMessageRenderer/index.js.map +1 -0
  109. package/lib/module/containers/SendbirdUIKitContainer.js +3 -0
  110. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  111. package/lib/module/contexts/SendbirdChatCtx.js +6 -0
  112. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  113. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +30 -6
  114. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  115. package/lib/module/domain/groupChannel/module/moduleContext.js +14 -4
  116. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  117. package/lib/module/domain/groupChannel/types.js.map +1 -1
  118. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadHeader.js +73 -0
  119. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadHeader.js.map +1 -0
  120. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadInput.js +34 -0
  121. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadInput.js.map +1 -0
  122. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +117 -0
  123. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -0
  124. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +305 -0
  125. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -0
  126. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js +19 -0
  127. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.js.map +1 -0
  128. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js +19 -0
  129. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.js.map +1 -0
  130. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js +185 -0
  131. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.js.map +1 -0
  132. package/lib/module/domain/groupChannelThread/index.js +9 -0
  133. package/lib/module/domain/groupChannelThread/index.js.map +1 -0
  134. package/lib/module/domain/groupChannelThread/module/createGroupChannelThreadModule.js +34 -0
  135. package/lib/module/domain/groupChannelThread/module/createGroupChannelThreadModule.js.map +1 -0
  136. package/lib/module/domain/groupChannelThread/module/moduleContext.js +137 -0
  137. package/lib/module/domain/groupChannelThread/module/moduleContext.js.map +1 -0
  138. package/lib/module/domain/groupChannelThread/types.js +2 -0
  139. package/lib/module/domain/groupChannelThread/types.js.map +1 -0
  140. package/lib/module/fragments/createGroupChannelFragment.js +33 -7
  141. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  142. package/lib/module/fragments/createGroupChannelThreadFragment.js +257 -0
  143. package/lib/module/fragments/createGroupChannelThreadFragment.js.map +1 -0
  144. package/lib/module/hooks/useMentionSuggestion.js +5 -2
  145. package/lib/module/hooks/useMentionSuggestion.js.map +1 -1
  146. package/lib/module/index.js +3 -0
  147. package/lib/module/index.js.map +1 -1
  148. package/lib/module/libs/VoiceMessageStatusManager.js +59 -0
  149. package/lib/module/libs/VoiceMessageStatusManager.js.map +1 -0
  150. package/lib/module/localization/StringSet.type.js.map +1 -1
  151. package/lib/module/localization/createBaseStringSet.js +27 -4
  152. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  153. package/lib/module/version.js +1 -1
  154. package/lib/module/version.js.map +1 -1
  155. package/lib/typescript/src/components/ChannelInput/index.d.ts +1 -0
  156. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +5 -2
  157. package/lib/typescript/src/components/ChannelThreadMessageList/index.d.ts +55 -0
  158. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.d.ts +1 -1
  159. package/lib/typescript/src/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.d.ts +9 -0
  160. package/lib/typescript/src/components/GroupChannelMessageRenderer/index.d.ts +3 -1
  161. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +3 -1
  162. package/lib/typescript/src/components/ReactionAddons/MessageReactionAddon.d.ts +3 -1
  163. package/lib/typescript/src/components/ReactionAddons/index.d.ts +2 -1
  164. package/lib/typescript/src/components/ThreadChatFlatList/index.d.ts +9 -0
  165. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.d.ts +4 -0
  166. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.d.ts +4 -0
  167. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.d.ts +9 -0
  168. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.d.ts +13 -0
  169. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.d.ts +10 -0
  170. package/lib/typescript/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.d.ts +10 -0
  171. package/lib/typescript/src/components/ThreadParentMessageRenderer/index.d.ts +20 -0
  172. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +2 -4
  173. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +15 -1
  174. package/lib/typescript/src/domain/groupChannel/types.d.ts +4 -1
  175. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadHeader.d.ts +4 -0
  176. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadInput.d.ts +3 -0
  177. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.d.ts +7 -0
  178. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.d.ts +8 -0
  179. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.d.ts +3 -0
  180. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.d.ts +3 -0
  181. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.d.ts +4 -0
  182. package/lib/typescript/src/domain/groupChannelThread/index.d.ts +8 -0
  183. package/lib/typescript/src/domain/groupChannelThread/module/createGroupChannelThreadModule.d.ts +3 -0
  184. package/lib/typescript/src/domain/groupChannelThread/module/moduleContext.d.ts +3 -0
  185. package/lib/typescript/src/domain/groupChannelThread/types.d.ts +136 -0
  186. package/lib/typescript/src/domain/openChannel/component/OpenChannelHeader.d.ts +1 -1
  187. package/lib/typescript/src/fragments/createGroupChannelThreadFragment.d.ts +5 -0
  188. package/lib/typescript/src/hooks/useChannelInputItems.d.ts +1 -1
  189. package/lib/typescript/src/index.d.ts +3 -0
  190. package/lib/typescript/src/libs/VoiceMessageStatusManager.d.ts +11 -0
  191. package/lib/typescript/src/localization/StringSet.type.d.ts +23 -0
  192. package/lib/typescript/src/localization/createBaseStringSet.d.ts +1 -1
  193. package/lib/typescript/src/version.d.ts +1 -1
  194. package/package.json +6 -6
  195. package/src/components/ChannelInput/SendInput.tsx +24 -5
  196. package/src/components/ChannelInput/index.tsx +1 -0
  197. package/src/components/ChannelMessageList/index.tsx +27 -5
  198. package/src/components/ChannelThreadMessageList/index.tsx +406 -0
  199. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageParentMessage.tsx +3 -3
  200. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageReplyInfo.tsx +96 -0
  201. package/src/components/GroupChannelMessageRenderer/index.tsx +21 -5
  202. package/src/components/ReactionAddons/MessageReactionAddon.tsx +38 -5
  203. package/src/components/ThreadChatFlatList/index.tsx +63 -0
  204. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.image.tsx +36 -0
  205. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.tsx +61 -0
  206. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.video.tsx +45 -0
  207. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.file.voice.tsx +107 -0
  208. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.tsx +133 -0
  209. package/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.tsx +65 -0
  210. package/src/components/ThreadParentMessageRenderer/index.tsx +194 -0
  211. package/src/containers/SendbirdUIKitContainer.tsx +4 -3
  212. package/src/contexts/SendbirdChatCtx.tsx +20 -0
  213. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +37 -8
  214. package/src/domain/groupChannel/module/moduleContext.tsx +12 -2
  215. package/src/domain/groupChannel/types.ts +5 -0
  216. package/src/domain/groupChannelThread/component/GroupChannelThreadHeader.tsx +63 -0
  217. package/src/domain/groupChannelThread/component/GroupChannelThreadInput.tsx +38 -0
  218. package/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.tsx +105 -0
  219. package/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.tsx +326 -0
  220. package/src/domain/groupChannelThread/component/GroupChannelThreadStatusEmpty.tsx +18 -0
  221. package/src/domain/groupChannelThread/component/GroupChannelThreadStatusLoading.tsx +18 -0
  222. package/src/domain/groupChannelThread/component/GroupChannelThreadSuggestedMentionList.tsx +174 -0
  223. package/src/domain/groupChannelThread/index.ts +8 -0
  224. package/src/domain/groupChannelThread/module/createGroupChannelThreadModule.tsx +35 -0
  225. package/src/domain/groupChannelThread/module/moduleContext.tsx +165 -0
  226. package/src/domain/groupChannelThread/types.ts +184 -0
  227. package/src/fragments/createGroupChannelFragment.tsx +38 -8
  228. package/src/fragments/createGroupChannelThreadFragment.tsx +280 -0
  229. package/src/hooks/useMentionSuggestion.ts +13 -9
  230. package/src/index.ts +4 -0
  231. package/src/libs/VoiceMessageStatusManager.ts +56 -0
  232. package/src/localization/StringSet.type.ts +27 -0
  233. package/src/localization/createBaseStringSet.ts +33 -4
  234. package/src/version.ts +1 -1
@@ -0,0 +1,349 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
10
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
11
+ var _uikitUtils = require("@sendbird/uikit-utils");
12
+ var _useContext = require("../../hooks/useContext");
13
+ var _SBUUtils = _interopRequireDefault(require("../../libs/SBUUtils"));
14
+ var _ReactionAddons = require("../ReactionAddons");
15
+ var _ThreadChatFlatList = _interopRequireDefault(require("../ThreadChatFlatList"));
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ 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); }
18
+ const ChannelThreadMessageList = (_ref, ref) => {
19
+ let {
20
+ searchItem,
21
+ hasNext,
22
+ channel,
23
+ onEditMessage,
24
+ onDeleteMessage,
25
+ onResendFailedMessage,
26
+ onPressMediaMessage,
27
+ currentUserId,
28
+ renderNewMessagesButton,
29
+ renderScrollToBottomButton,
30
+ renderMessage,
31
+ messages,
32
+ newMessages,
33
+ enableMessageGrouping,
34
+ onScrolledAwayFromBottom,
35
+ scrolledAwayFromBottom,
36
+ onBottomReached,
37
+ onTopReached,
38
+ flatListProps,
39
+ onPressNewMessagesButton,
40
+ onPressScrollToBottomButton
41
+ } = _ref;
42
+ const {
43
+ STRINGS
44
+ } = (0, _useContext.useLocalization)();
45
+ const {
46
+ colors
47
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
48
+ const {
49
+ show
50
+ } = (0, _useContext.useUserProfile)();
51
+ const {
52
+ left,
53
+ right
54
+ } = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
55
+ const createMessagePressActions = useCreateMessagePressActions({
56
+ channel,
57
+ currentUserId,
58
+ onEditMessage,
59
+ onDeleteMessage,
60
+ onResendFailedMessage,
61
+ onPressMediaMessage
62
+ });
63
+ const safeAreaLayout = {
64
+ paddingLeft: left,
65
+ paddingRight: right
66
+ };
67
+ const renderItem = (0, _uikitUtils.useFreshCallback)(_ref2 => {
68
+ let {
69
+ item,
70
+ index
71
+ } = _ref2;
72
+ const {
73
+ onPress,
74
+ onLongPress,
75
+ bottomSheetItem
76
+ } = createMessagePressActions({
77
+ message: item
78
+ });
79
+ return renderMessage({
80
+ message: item,
81
+ prevMessage: messages[index - 1],
82
+ nextMessage: messages[index + 1],
83
+ onPress,
84
+ onLongPress,
85
+ onShowUserProfile: show,
86
+ enableMessageGrouping,
87
+ channel,
88
+ currentUserId,
89
+ focused: ((searchItem === null || searchItem === void 0 ? void 0 : searchItem.startingPoint) ?? -1) === item.createdAt,
90
+ bottomSheetItem,
91
+ isFirstItem: index === 0
92
+ });
93
+ });
94
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
95
+ style: [{
96
+ flex: 1,
97
+ backgroundColor: colors.background
98
+ }, safeAreaLayout]
99
+ }, channel.isFrozen && /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.ChannelFrozenBanner, {
100
+ style: styles.frozenBanner,
101
+ text: STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN
102
+ }), /*#__PURE__*/_react.default.createElement(_ThreadChatFlatList.default, _extends({}, flatListProps, {
103
+ onTopReached: onTopReached,
104
+ onBottomReached: onBottomReached,
105
+ onScrolledAwayFromBottom: onScrolledAwayFromBottom,
106
+ ref: ref,
107
+ data: messages,
108
+ renderItem: renderItem,
109
+ keyExtractor: _uikitUtils.messageKeyExtractor,
110
+ contentContainerStyle: [
111
+ // { minHeight: '100%', justifyContent: 'flex-end' },
112
+ channel.isFrozen && styles.frozenListPadding, flatListProps === null || flatListProps === void 0 ? void 0 : flatListProps.contentContainerStyle]
113
+ })), renderNewMessagesButton && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
114
+ style: [styles.newMsgButton, safeAreaLayout]
115
+ }, renderNewMessagesButton({
116
+ visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),
117
+ onPress: () => onPressNewMessagesButton(),
118
+ newMessages
119
+ })), renderScrollToBottomButton && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
120
+ style: [styles.scrollButton, safeAreaLayout]
121
+ }, renderScrollToBottomButton({
122
+ visible: hasNext() || scrolledAwayFromBottom,
123
+ onPress: () => onPressScrollToBottomButton()
124
+ })));
125
+ };
126
+ const useCreateMessagePressActions = _ref3 => {
127
+ let {
128
+ channel,
129
+ currentUserId,
130
+ onResendFailedMessage,
131
+ onEditMessage,
132
+ onDeleteMessage,
133
+ onPressMediaMessage
134
+ } = _ref3;
135
+ const {
136
+ colors
137
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
138
+ const {
139
+ STRINGS
140
+ } = (0, _useContext.useLocalization)();
141
+ const toast = (0, _uikitReactNativeFoundation.useToast)();
142
+ const {
143
+ openSheet
144
+ } = (0, _uikitReactNativeFoundation.useBottomSheet)();
145
+ const {
146
+ alert
147
+ } = (0, _uikitReactNativeFoundation.useAlert)();
148
+ const {
149
+ clipboardService,
150
+ fileService
151
+ } = (0, _useContext.usePlatformService)();
152
+ const {
153
+ sbOptions
154
+ } = (0, _useContext.useSendbirdChat)();
155
+ const onResendFailure = error => {
156
+ toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error');
157
+ _uikitUtils.Logger.error(STRINGS.TOAST.RESEND_MSG_ERROR, error);
158
+ };
159
+ const onDeleteFailure = error => {
160
+ toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');
161
+ _uikitUtils.Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);
162
+ };
163
+ const onCopyText = message => {
164
+ if (message.isUserMessage()) {
165
+ clipboardService.setString(message.message || '');
166
+ toast.show(STRINGS.TOAST.COPY_OK, 'success');
167
+ }
168
+ };
169
+ const onDownloadFile = message => {
170
+ if (message.isFileMessage()) {
171
+ if ((0, _uikitUtils.toMegabyte)(message.size) > 4) {
172
+ toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');
173
+ }
174
+ fileService.save({
175
+ fileUrl: message.url,
176
+ fileName: message.name,
177
+ fileType: message.type
178
+ }).then(response => {
179
+ toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');
180
+ _uikitUtils.Logger.log('File saved to', response);
181
+ }).catch(err => {
182
+ toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');
183
+ _uikitUtils.Logger.log('File save failure', err);
184
+ });
185
+ }
186
+ };
187
+ const onOpenFile = message => {
188
+ if (message.isFileMessage()) {
189
+ const fileType = (0, _uikitUtils.getFileType)(message.type || (0, _uikitUtils.getFileExtension)(message.name));
190
+ if (['image', 'video', 'audio'].includes(fileType)) {
191
+ onPressMediaMessage === null || onPressMediaMessage === void 0 ? void 0 : onPressMediaMessage(message, () => onDeleteMessage(message), (0, _uikitUtils.getAvailableUriFromFileMessage)(message));
192
+ } else {
193
+ _SBUUtils.default.openURL(message.url);
194
+ }
195
+ }
196
+ };
197
+ const openSheetForFailedMessage = message => {
198
+ openSheet({
199
+ sheetItems: [{
200
+ title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,
201
+ onPress: () => onResendFailedMessage(message).catch(onResendFailure)
202
+ }, {
203
+ title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,
204
+ titleColor: colors.ui.dialog.default.none.destructive,
205
+ onPress: () => alertForMessageDelete(message)
206
+ }]
207
+ });
208
+ };
209
+ const alertForMessageDelete = message => {
210
+ alert({
211
+ title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,
212
+ buttons: [{
213
+ text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL
214
+ }, {
215
+ text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,
216
+ style: 'destructive',
217
+ onPress: () => {
218
+ onDeleteMessage(message).catch(onDeleteFailure);
219
+ }
220
+ }]
221
+ });
222
+ };
223
+ return _ref4 => {
224
+ let {
225
+ message
226
+ } = _ref4;
227
+ if (!message.isUserMessage() && !message.isFileMessage()) return {};
228
+ const sheetItems = [];
229
+ const menu = {
230
+ copy: message => ({
231
+ icon: 'copy',
232
+ title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,
233
+ onPress: () => onCopyText(message)
234
+ }),
235
+ edit: message => ({
236
+ icon: 'edit',
237
+ title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,
238
+ onPress: () => onEditMessage(message)
239
+ }),
240
+ delete: message => ({
241
+ disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,
242
+ icon: 'delete',
243
+ title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,
244
+ onPress: () => alertForMessageDelete(message)
245
+ }),
246
+ download: message => ({
247
+ icon: 'download',
248
+ title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,
249
+ onPress: () => onDownloadFile(message)
250
+ })
251
+ };
252
+ if (message.isUserMessage()) {
253
+ sheetItems.push(menu.copy(message));
254
+ if (!channel.isEphemeral) {
255
+ if ((0, _uikitUtils.isMyMessage)(message, currentUserId) && message.sendingStatus === 'succeeded') {
256
+ sheetItems.push(menu.edit(message));
257
+ sheetItems.push(menu.delete(message));
258
+ }
259
+ }
260
+ }
261
+ if (message.isFileMessage()) {
262
+ if (!(0, _uikitUtils.isVoiceMessage)(message)) {
263
+ sheetItems.push(menu.download(message));
264
+ }
265
+ if (!channel.isEphemeral) {
266
+ if ((0, _uikitUtils.isMyMessage)(message, currentUserId) && message.sendingStatus === 'succeeded') {
267
+ sheetItems.push(menu.delete(message));
268
+ }
269
+ }
270
+ }
271
+ const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;
272
+ const bottomSheetItem = {
273
+ sheetItems,
274
+ HeaderComponent: (0, _uikitUtils.shouldRenderReaction)(channel, channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions)) ? _ref5 => {
275
+ let {
276
+ onClose
277
+ } = _ref5;
278
+ return /*#__PURE__*/_react.default.createElement(_ReactionAddons.ReactionAddons.BottomSheet, {
279
+ message: message,
280
+ channel: channel,
281
+ onClose: onClose
282
+ });
283
+ } : undefined
284
+ };
285
+ switch (true) {
286
+ case message.sendingStatus === 'pending':
287
+ {
288
+ return {
289
+ onPress: undefined,
290
+ onLongPress: undefined,
291
+ bottomSheetItem: undefined
292
+ };
293
+ }
294
+ case message.sendingStatus === 'failed':
295
+ {
296
+ return {
297
+ onPress: () => onResendFailedMessage(message).catch(onResendFailure),
298
+ onLongPress: () => openSheetForFailedMessage(message),
299
+ bottomSheetItem
300
+ };
301
+ }
302
+ case message.isFileMessage():
303
+ {
304
+ return {
305
+ onPress: () => onOpenFile(message),
306
+ onLongPress: () => openSheet(bottomSheetItem),
307
+ bottomSheetItem
308
+ };
309
+ }
310
+ default:
311
+ {
312
+ return {
313
+ onPress: undefined,
314
+ onLongPress: () => openSheet(bottomSheetItem),
315
+ bottomSheetItem
316
+ };
317
+ }
318
+ }
319
+ };
320
+ };
321
+ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
322
+ frozenBanner: {
323
+ position: 'absolute',
324
+ zIndex: 999,
325
+ top: 8,
326
+ left: 8,
327
+ right: 8
328
+ },
329
+ frozenListPadding: {
330
+ paddingBottom: 32
331
+ },
332
+ newMsgButton: {
333
+ position: 'absolute',
334
+ zIndex: 999,
335
+ bottom: 10,
336
+ alignSelf: 'center'
337
+ },
338
+ scrollButton: {
339
+ position: 'absolute',
340
+ zIndex: 998,
341
+ bottom: 10,
342
+ right: 16
343
+ }
344
+ });
345
+
346
+ // NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop
347
+ var _default = /*#__PURE__*/_react.default.forwardRef(ChannelThreadMessageList);
348
+ exports.default = _default;
349
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_SBUUtils","_ReactionAddons","_ThreadChatFlatList","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","ChannelThreadMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","STRINGS","useLocalization","colors","useUIKitTheme","show","useUserProfile","left","right","useSafeAreaInsets","createMessagePressActions","useCreateMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","_ref2","item","index","onPress","onLongPress","bottomSheetItem","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","isFirstItem","createElement","View","style","flex","backgroundColor","background","isFrozen","ChannelFrozenBanner","styles","frozenBanner","text","LABELS","CHANNEL_MESSAGE_LIST_FROZEN","data","keyExtractor","messageKeyExtractor","contentContainerStyle","frozenListPadding","newMsgButton","visible","scrollButton","_ref3","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","sbOptions","useSendbirdChat","onResendFailure","error","TOAST","RESEND_MSG_ERROR","Logger","onDeleteFailure","DELETE_MSG_ERROR","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","toMegabyte","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","getFileType","getFileExtension","includes","getAvailableUriFromFileMessage","SBUUtils","openURL","openSheetForFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","alertForMessageDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref4","menu","copy","icon","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","threadInfo","replyCount","undefined","CHANNEL_MESSAGE_DELETE","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","isMyMessage","sendingStatus","isVoiceMessage","configs","uikitWithAppInfo","groupChannel","HeaderComponent","shouldRenderReaction","isGroupChannel","isSuper","enableReactionsSupergroup","enableReactions","_ref5","onClose","ReactionAddons","BottomSheet","createStyleSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","_default","React","forwardRef","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { Ref } from 'react';\nimport { FlatList, FlatListProps, ListRenderItem, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n BottomSheetItem,\n ChannelFrozenBanner,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n isVoiceMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport { useLocalization, usePlatformService, useSendbirdChat, useUserProfile } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport { ReactionAddons } from '../ReactionAddons';\nimport ThreadChatFlatList from '../ThreadChatFlatList';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\nexport type ChannelThreadMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<HandleableMessage | void>;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelThreadMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelThreadMessageListProps<T>['enableMessageGrouping'];\n bottomSheetItem?: BottomSheetItem;\n isFirstItem: boolean;\n }) => React.ReactElement | null;\n renderNewMessagesButton:\n | null\n | ((props: { visible: boolean; onPress: () => void; newMessages: SendbirdMessage[] }) => React.ReactElement | null);\n renderScrollToBottomButton: null | ((props: { visible: boolean; onPress: () => void }) => React.ReactElement | null);\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelThreadMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n }: ChannelThreadMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const { left, right } = useSafeAreaInsets();\n const createMessagePressActions = useCreateMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: item });\n return renderMessage({\n message: item,\n prevMessage: messages[index - 1],\n nextMessage: messages[index + 1],\n onPress,\n onLongPress,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n bottomSheetItem,\n isFirstItem: index === 0,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ThreadChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelThreadMessageListProps<T>,\n 'channel' | 'currentUserId' | 'onEditMessage' | 'onDeleteMessage' | 'onResendFailedMessage' | 'onPressMediaMessage'\n>): CreateMessagePressActions => {\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onResendFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.RESEND_MSG_ERROR, error);\n };\n\n const onDeleteFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);\n };\n\n const onCopyText = (message: HandleableMessage) => {\n if (message.isUserMessage()) {\n clipboardService.setString(message.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n }\n };\n\n const onDownloadFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n if (toMegabyte(message.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: message.url, fileName: message.name, fileType: message.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n const onOpenFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n const fileType = getFileType(message.type || getFileExtension(message.name));\n if (['image', 'video', 'audio'].includes(fileType)) {\n onPressMediaMessage?.(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));\n } else {\n SBUUtils.openURL(message.url);\n }\n }\n };\n\n const openSheetForFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => alertForMessageDelete(message),\n },\n ],\n });\n };\n\n const alertForMessageDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n { text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(onDeleteFailure);\n },\n },\n ],\n });\n };\n\n return ({ message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return {};\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const menu = {\n copy: (message: HandleableMessage) => ({\n icon: 'copy' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => onCopyText(message),\n }),\n edit: (message: HandleableMessage) => ({\n icon: 'edit' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(message),\n }),\n delete: (message: HandleableMessage) => ({\n disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,\n icon: 'delete' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => alertForMessageDelete(message),\n }),\n download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n }\n }\n\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions),\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n switch (true) {\n case message.sendingStatus === 'pending': {\n return {\n onPress: undefined,\n onLongPress: undefined,\n bottomSheetItem: undefined,\n };\n }\n\n case message.sendingStatus === 'failed': {\n return {\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n onLongPress: () => openSheetForFailedMessage(message),\n bottomSheetItem,\n };\n }\n\n case message.isFileMessage(): {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n\n default: {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n }\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\n// NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop\nexport default React.forwardRef(ChannelThreadMessageList) as typeof ChannelThreadMessageList;\n"],"mappings":"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"}
@@ -144,7 +144,7 @@ const GroupChannelMessageParentMessage = _ref => {
144
144
  paddingLeft: variant === 'outgoing' ? 0 : 12,
145
145
  paddingRight: variant === 'outgoing' ? 12 : 0
146
146
  }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.PressBox, {
147
- onPress: () => onPress === null || onPress === void 0 ? void 0 : onPress(parentMessage),
147
+ onPress: () => onPress === null || onPress === void 0 ? void 0 : onPress(parentMessage, childMessage),
148
148
  style: styles.senderLabel
149
149
  }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
150
150
  icon: 'reply-filled',
@@ -161,7 +161,7 @@ const GroupChannelMessageParentMessage = _ref => {
161
161
  justifyContent: variant === 'outgoing' ? 'flex-end' : 'flex-start',
162
162
  style: styles.messageContainer
163
163
  }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.PressBox, {
164
- onPress: () => onPress === null || onPress === void 0 ? void 0 : onPress(parentMessage)
164
+ onPress: () => onPress === null || onPress === void 0 ? void 0 : onPress(parentMessage, childMessage)
165
165
  }, parentMessageComponent)));
166
166
  };
167
167
  const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_uikitReactNativeFoundation","_uikitUtils","_moduleContext","_useContext","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GroupChannelMessageParentMessage","_ref","variant","channel","message","childMessage","onPress","currentUser","useSendbirdChat","groupChannelPubSub","useContext","GroupChannelContexts","PubSub","select","colors","palette","useUIKitTheme","STRINGS","useLocalization","mediaService","usePlatformService","parentMessage","setParentMessage","useState","type","getMessageType","useEffect","subscribe","_ref2","data","updatedParent","messages","find","it","messageId","renderMessageWithText","createElement","Box","style","styles","bubbleContainer","backgroundColor","light","background100","dark","background400","Text","body3","color","onBackground03","suppressHighlighting","numberOfLines","ellipsizeMode","renderFileMessageAsVideoThumbnail","url","VideoThumbnail","image","iconSize","source","fetchThumbnailFromVideoSource","uri","getVideoThumbnail","timeMills","renderFileMessageAsPreview","ImageWithPlaceholder","renderFileMessageAsDownloadable","name","Icon","icon","getFileIconFromMessageType","size","containerStyle","fileIcon","truncate","mode","maxLen","parentMessageComponent","useIIFE","messageOffsetTimestamp","createdAt","LABELS","MESSAGE_UNAVAILABLE","getThumbnailUriFromFileMessage","VOICE_MESSAGE","alignItems","paddingLeft","paddingRight","PressBox","senderLabel","marginRight","caption1","REPLY_FROM_SENDER_TO_RECEIVER","userId","flexDirection","justifyContent","messageContainer","createStyleSheet","opacity","marginTop","marginBottom","maxWidth","overflow","borderRadius","paddingHorizontal","paddingBottom","paddingTop","width","height","_default","exports"],"sources":["GroupChannelMessageParentMessage.tsx"],"sourcesContent":["import React, { useContext, useEffect, useState } from 'react';\n\nimport {\n Box,\n Icon,\n ImageWithPlaceholder,\n PressBox,\n Text,\n VideoThumbnail,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUserMessage,\n getFileIconFromMessageType,\n getMessageType,\n getThumbnailUriFromFileMessage,\n truncate,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\n\ntype Props = {\n variant: 'outgoing' | 'incoming';\n channel: SendbirdGroupChannel;\n message: SendbirdUserMessage | SendbirdFileMessage;\n childMessage: SendbirdUserMessage | SendbirdFileMessage;\n onPress?: (message: SendbirdMessage) => void;\n};\n\nconst GroupChannelMessageParentMessage = ({ variant, channel, message, childMessage, onPress }: Props) => {\n const { currentUser } = useSendbirdChat();\n const groupChannelPubSub = useContext(GroupChannelContexts.PubSub);\n const { select, colors, palette } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const { mediaService } = usePlatformService();\n\n const [parentMessage, setParentMessage] = useState(() => message);\n const type = getMessageType(parentMessage);\n\n useEffect(() => {\n return groupChannelPubSub.subscribe(({ type, data }) => {\n if (type === 'MESSAGES_UPDATED') {\n const updatedParent = data.messages.find((it): it is SendbirdUserMessage | SendbirdFileMessage => {\n return it.messageId === parentMessage.messageId;\n });\n if (updatedParent) setParentMessage(updatedParent);\n }\n });\n }, []);\n\n const renderMessageWithText = (message: string) => {\n return (\n <Box\n style={styles.bubbleContainer}\n backgroundColor={select({ light: palette.background100, dark: palette.background400 })}\n >\n <Text body3 color={colors.onBackground03} suppressHighlighting numberOfLines={2} ellipsizeMode={'tail'}>\n {message}\n </Text>\n </Box>\n );\n };\n\n const renderFileMessageAsVideoThumbnail = (url: string) => {\n return (\n <VideoThumbnail\n style={styles.image}\n iconSize={18}\n source={url}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n />\n );\n };\n const renderFileMessageAsPreview = (url: string) => {\n return <ImageWithPlaceholder style={styles.image} source={{ uri: url }} />;\n };\n const renderFileMessageAsDownloadable = (name: string) => {\n return (\n <Box\n style={styles.bubbleContainer}\n backgroundColor={select({ light: palette.background100, dark: palette.background400 })}\n >\n <Icon\n icon={getFileIconFromMessageType(type)}\n size={16}\n color={colors.onBackground03}\n containerStyle={styles.fileIcon}\n />\n <Text body3 color={colors.onBackground03} numberOfLines={1} ellipsizeMode={'middle'}>\n {truncate(name, { mode: 'mid', maxLen: 20 })}\n </Text>\n </Box>\n );\n };\n\n const parentMessageComponent = useIIFE(() => {\n if (channel.messageOffsetTimestamp > parentMessage.createdAt) {\n return renderMessageWithText(STRINGS.LABELS.MESSAGE_UNAVAILABLE);\n }\n\n switch (type) {\n case 'user':\n case 'user.opengraph': {\n return renderMessageWithText((parentMessage as SendbirdUserMessage).message);\n }\n case 'file':\n case 'file.audio': {\n return renderFileMessageAsDownloadable((parentMessage as SendbirdFileMessage).name);\n }\n case 'file.video': {\n return renderFileMessageAsVideoThumbnail(getThumbnailUriFromFileMessage(parentMessage as SendbirdFileMessage));\n }\n case 'file.image': {\n return renderFileMessageAsPreview(getThumbnailUriFromFileMessage(parentMessage as SendbirdFileMessage));\n }\n case 'file.voice': {\n return renderMessageWithText(STRINGS.LABELS.VOICE_MESSAGE);\n }\n default: {\n return null;\n }\n }\n });\n\n return (\n <Box>\n <Box\n alignItems={variant === 'outgoing' ? 'flex-end' : 'flex-start'}\n paddingLeft={variant === 'outgoing' ? 0 : 12}\n paddingRight={variant === 'outgoing' ? 12 : 0}\n >\n <PressBox onPress={() => onPress?.(parentMessage)} style={styles.senderLabel}>\n <Icon icon={'reply-filled'} size={13} color={colors.onBackground03} containerStyle={{ marginRight: 4 }} />\n <Text caption1 color={colors.onBackground03}>\n {STRINGS.LABELS.REPLY_FROM_SENDER_TO_RECEIVER(childMessage, parentMessage, currentUser?.userId)}\n </Text>\n </PressBox>\n </Box>\n <Box\n flexDirection={'row'}\n justifyContent={variant === 'outgoing' ? 'flex-end' : 'flex-start'}\n style={styles.messageContainer}\n >\n <PressBox onPress={() => onPress?.(parentMessage)}>{parentMessageComponent}</PressBox>\n </Box>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n messageContainer: {\n opacity: 0.5,\n marginTop: 4,\n marginBottom: -6,\n },\n bubbleContainer: {\n maxWidth: 220,\n overflow: 'hidden',\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 16,\n paddingHorizontal: 12,\n paddingBottom: 12,\n paddingTop: 6,\n },\n image: {\n width: 156,\n height: 104,\n borderRadius: 16,\n overflow: 'hidden',\n },\n fileIcon: {\n width: 16,\n height: 16,\n borderRadius: 10,\n marginRight: 4,\n marginTop: 2,\n },\n senderLabel: {\n flexDirection: 'row',\n },\n});\n\nexport default GroupChannelMessageParentMessage;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,2BAAA,GAAAD,OAAA;AAUA,IAAAE,WAAA,GAAAF,OAAA;AAYA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAA8F,SAAAK,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAP,wBAAAW,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AAU9F,MAAMW,gCAAgC,GAAGC,IAAA,IAAiE;EAAA,IAAhE;IAAEC,OAAO;IAAEC,OAAO;IAAEC,OAAO;IAAEC,YAAY;IAAEC;EAAe,CAAC,GAAAL,IAAA;EACnG,MAAM;IAAEM;EAAY,CAAC,GAAG,IAAAC,2BAAe,GAAE;EACzC,MAAMC,kBAAkB,GAAG,IAAAC,iBAAU,EAACC,mCAAoB,CAACC,MAAM,CAAC;EAClE,MAAM;IAAEC,MAAM;IAAEC,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,yCAAa,GAAE;EACnD,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,2BAAe,GAAE;EACrC,MAAM;IAAEC;EAAa,CAAC,GAAG,IAAAC,8BAAkB,GAAE;EAE7C,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAG,IAAAC,eAAQ,EAAC,MAAMnB,OAAO,CAAC;EACjE,MAAMoB,IAAI,GAAG,IAAAC,0BAAc,EAACJ,aAAa,CAAC;EAE1C,IAAAK,gBAAS,EAAC,MAAM;IACd,OAAOjB,kBAAkB,CAACkB,SAAS,CAACC,KAAA,IAAoB;MAAA,IAAnB;QAAEJ,IAAI;QAAEK;MAAK,CAAC,GAAAD,KAAA;MACjD,IAAIJ,IAAI,KAAK,kBAAkB,EAAE;QAC/B,MAAMM,aAAa,GAAGD,IAAI,CAACE,QAAQ,CAACC,IAAI,CAAEC,EAAE,IAAsD;UAChG,OAAOA,EAAE,CAACC,SAAS,KAAKb,aAAa,CAACa,SAAS;QACjD,CAAC,CAAC;QACF,IAAIJ,aAAa,EAAER,gBAAgB,CAACQ,aAAa,CAAC;MACpD;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMK,qBAAqB,GAAI/B,OAAe,IAAK;IACjD,oBACEjC,MAAA,CAAAc,OAAA,CAAAmD,aAAA,CAAC9D,2BAAA,CAAA+D,GAAG;MACFC,KAAK,EAAEC,MAAM,CAACC,eAAgB;MAC9BC,eAAe,EAAE5B,MAAM,CAAC;QAAE6B,KAAK,EAAE3B,OAAO,CAAC4B,aAAa;QAAEC,IAAI,EAAE7B,OAAO,CAAC8B;MAAc,CAAC;IAAE,gBAEvF1E,MAAA,CAAAc,OAAA,CAAAmD,aAAA,CAAC9D,2BAAA,CAAAwE,IAAI;MAACC,KAAK;MAACC,KAAK,EAAElC,MAAM,CAACmC,cAAe;MAACC,oBAAoB;MAACC,aAAa,EAAE,CAAE;MAACC,aAAa,EAAE;IAAO,GACpGhD,OAAO,CACH,CACH;EAEV,CAAC;EAED,MAAMiD,iCAAiC,GAAIC,GAAW,IAAK;IACzD,oBACEnF,MAAA,CAAAc,OAAA,CAAAmD,aAAA,CAAC9D,2BAAA,CAAAiF,cAAc;MACbjB,KAAK,EAAEC,MAAM,CAACiB,KAAM;MACpBC,QAAQ,EAAE,EAAG;MACbC,MAAM,EAAEJ,GAAI;MACZK,6BAA6B,EAAGC,GAAG,IAAKzC,YAAY,CAAC0C,iBAAiB,CAAC;QAAEP,GAAG,EAAEM,GAAG;QAAEE,SAAS,EAAE;MAAK,CAAC;IAAE,EACtG;EAEN,CAAC;EACD,MAAMC,0BAA0B,GAAIT,GAAW,IAAK;IAClD,oBAAOnF,MAAA,CAAAc,OAAA,CAAAmD,aAAA,CAAC9D,2BAAA,CAAA0F,oBAAoB;MAAC1B,KAAK,EAAEC,MAAM,CAACiB,KAAM;MAACE,MAAM,EAAE;QAAEE,GAAG,EAAEN;MAAI;IAAE,EAAG;EAC5E,CAAC;EACD,MAAMW,+BAA+B,GAAIC,IAAY,IAAK;IACxD,oBACE/F,MAAA,CAAAc,OAAA,CAAAmD,aAAA,CAAC9D,2BAAA,CAAA+D,GAAG;MACFC,KAAK,EAAEC,MAAM,CAACC,eAAgB;MAC9BC,eAAe,EAAE5B,MAAM,CAAC;QAAE6B,KAAK,EAAE3B,OAAO,CAAC4B,aAAa;QAAEC,IAAI,EAAE7B,OAAO,CAAC8B;MAAc,CAAC;IAAE,gBAEvF1E,MAAA,CAAAc,OAAA,CAAAmD,aAAA,CAAC9D,2BAAA,CAAA6F,IAAI;MACHC,IAAI,EAAE,IAAAC,sCAA0B,EAAC7C,IAAI,CAAE;MACvC8C,IAAI,EAAE,EAAG;MACTtB,KAAK,EAAElC,MAAM,CAACmC,cAAe;MAC7BsB,cAAc,EAAEhC,MAAM,CAACiC;IAAS,EAChC,eACFrG,MAAA,CAAAc,OAAA,CAAAmD,aAAA,CAAC9D,2BAAA,CAAAwE,IAAI;MAACC,KAAK;MAACC,KAAK,EAAElC,MAAM,CAACmC,cAAe;MAACE,aAAa,EAAE,CAAE;MAACC,aAAa,EAAE;IAAS,GACjF,IAAAqB,oBAAQ,EAACP,IAAI,EAAE;MAAEQ,IAAI,EAAE,KAAK;MAAEC,MAAM,EAAE;IAAG,CAAC,CAAC,CACvC,CACH;EAEV,CAAC;EAED,MAAMC,sBAAsB,GAAG,IAAAC,mBAAO,EAAC,MAAM;IAC3C,IAAI1E,OAAO,CAAC2E,sBAAsB,GAAGzD,aAAa,CAAC0D,SAAS,EAAE;MAC5D,OAAO5C,qBAAqB,CAAClB,OAAO,CAAC+D,MAAM,CAACC,mBAAmB,CAAC;IAClE;IAEA,QAAQzD,IAAI;MACV,KAAK,MAAM;MACX,KAAK,gBAAgB;QAAE;UACrB,OAAOW,qBAAqB,CAAEd,aAAa,CAAyBjB,OAAO,CAAC;QAC9E;MACA,KAAK,MAAM;MACX,KAAK,YAAY;QAAE;UACjB,OAAO6D,+BAA+B,CAAE5C,aAAa,CAAyB6C,IAAI,CAAC;QACrF;MACA,KAAK,YAAY;QAAE;UACjB,OAAOb,iCAAiC,CAAC,IAAA6B,0CAA8B,EAAC7D,aAAa,CAAwB,CAAC;QAChH;MACA,KAAK,YAAY;QAAE;UACjB,OAAO0C,0BAA0B,CAAC,IAAAmB,0CAA8B,EAAC7D,aAAa,CAAwB,CAAC;QACzG;MACA,KAAK,YAAY;QAAE;UACjB,OAAOc,qBAAqB,CAAClB,OAAO,CAAC+D,MAAM,CAACG,aAAa,CAAC;QAC5D;MACA;QAAS;UACP,OAAO,IAAI;QACb;IAAC;EAEL,CAAC,CAAC;EAEF,oBACEhH,MAAA,CAAAc,OAAA,CAAAmD,aAAA,CAAC9D,2BAAA,CAAA+D,GAAG,qBACFlE,MAAA,CAAAc,OAAA,CAAAmD,aAAA,CAAC9D,2BAAA,CAAA+D,GAAG;IACF+C,UAAU,EAAElF,OAAO,KAAK,UAAU,GAAG,UAAU,GAAG,YAAa;IAC/DmF,WAAW,EAAEnF,OAAO,KAAK,UAAU,GAAG,CAAC,GAAG,EAAG;IAC7CoF,YAAY,EAAEpF,OAAO,KAAK,UAAU,GAAG,EAAE,GAAG;EAAE,gBAE9C/B,MAAA,CAAAc,OAAA,CAAAmD,aAAA,CAAC9D,2BAAA,CAAAiH,QAAQ;IAACjF,OAAO,EAAEA,CAAA,KAAMA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAGe,aAAa,CAAE;IAACiB,KAAK,EAAEC,MAAM,CAACiD;EAAY,gBAC3ErH,MAAA,CAAAc,OAAA,CAAAmD,aAAA,CAAC9D,2BAAA,CAAA6F,IAAI;IAACC,IAAI,EAAE,cAAe;IAACE,IAAI,EAAE,EAAG;IAACtB,KAAK,EAAElC,MAAM,CAACmC,cAAe;IAACsB,cAAc,EAAE;MAAEkB,WAAW,EAAE;IAAE;EAAE,EAAG,eAC1GtH,MAAA,CAAAc,OAAA,CAAAmD,aAAA,CAAC9D,2BAAA,CAAAwE,IAAI;IAAC4C,QAAQ;IAAC1C,KAAK,EAAElC,MAAM,CAACmC;EAAe,GACzChC,OAAO,CAAC+D,MAAM,CAACW,6BAA6B,CAACtF,YAAY,EAAEgB,aAAa,EAAEd,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEqF,MAAM,CAAC,CAC1F,CACE,CACP,eACNzH,MAAA,CAAAc,OAAA,CAAAmD,aAAA,CAAC9D,2BAAA,CAAA+D,GAAG;IACFwD,aAAa,EAAE,KAAM;IACrBC,cAAc,EAAE5F,OAAO,KAAK,UAAU,GAAG,UAAU,GAAG,YAAa;IACnEoC,KAAK,EAAEC,MAAM,CAACwD;EAAiB,gBAE/B5H,MAAA,CAAAc,OAAA,CAAAmD,aAAA,CAAC9D,2BAAA,CAAAiH,QAAQ;IAACjF,OAAO,EAAEA,CAAA,KAAMA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAGe,aAAa;EAAE,GAAEuD,sBAAsB,CAAY,CAClF,CACF;AAEV,CAAC;AAED,MAAMrC,MAAM,GAAG,IAAAyD,4CAAgB,EAAC;EAC9BD,gBAAgB,EAAE;IAChBE,OAAO,EAAE,GAAG;IACZC,SAAS,EAAE,CAAC;IACZC,YAAY,EAAE,CAAC;EACjB,CAAC;EACD3D,eAAe,EAAE;IACf4D,QAAQ,EAAE,GAAG;IACbC,QAAQ,EAAE,QAAQ;IAClBR,aAAa,EAAE,KAAK;IACpBT,UAAU,EAAE,QAAQ;IACpBkB,YAAY,EAAE,EAAE;IAChBC,iBAAiB,EAAE,EAAE;IACrBC,aAAa,EAAE,EAAE;IACjBC,UAAU,EAAE;EACd,CAAC;EACDjD,KAAK,EAAE;IACLkD,KAAK,EAAE,GAAG;IACVC,MAAM,EAAE,GAAG;IACXL,YAAY,EAAE,EAAE;IAChBD,QAAQ,EAAE;EACZ,CAAC;EACD7B,QAAQ,EAAE;IACRkC,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVL,YAAY,EAAE,EAAE;IAChBb,WAAW,EAAE,CAAC;IACdS,SAAS,EAAE;EACb,CAAC;EACDV,WAAW,EAAE;IACXK,aAAa,EAAE;EACjB;AACF,CAAC,CAAC;AAAC,IAAAe,QAAA,GAEY5G,gCAAgC;AAAA6G,OAAA,CAAA5H,OAAA,GAAA2H,QAAA"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_uikitReactNativeFoundation","_uikitUtils","_moduleContext","_useContext","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GroupChannelMessageParentMessage","_ref","variant","channel","message","childMessage","onPress","currentUser","useSendbirdChat","groupChannelPubSub","useContext","GroupChannelContexts","PubSub","select","colors","palette","useUIKitTheme","STRINGS","useLocalization","mediaService","usePlatformService","parentMessage","setParentMessage","useState","type","getMessageType","useEffect","subscribe","_ref2","data","updatedParent","messages","find","it","messageId","renderMessageWithText","createElement","Box","style","styles","bubbleContainer","backgroundColor","light","background100","dark","background400","Text","body3","color","onBackground03","suppressHighlighting","numberOfLines","ellipsizeMode","renderFileMessageAsVideoThumbnail","url","VideoThumbnail","image","iconSize","source","fetchThumbnailFromVideoSource","uri","getVideoThumbnail","timeMills","renderFileMessageAsPreview","ImageWithPlaceholder","renderFileMessageAsDownloadable","name","Icon","icon","getFileIconFromMessageType","size","containerStyle","fileIcon","truncate","mode","maxLen","parentMessageComponent","useIIFE","messageOffsetTimestamp","createdAt","LABELS","MESSAGE_UNAVAILABLE","getThumbnailUriFromFileMessage","VOICE_MESSAGE","alignItems","paddingLeft","paddingRight","PressBox","senderLabel","marginRight","caption1","REPLY_FROM_SENDER_TO_RECEIVER","userId","flexDirection","justifyContent","messageContainer","createStyleSheet","opacity","marginTop","marginBottom","maxWidth","overflow","borderRadius","paddingHorizontal","paddingBottom","paddingTop","width","height","_default","exports"],"sources":["GroupChannelMessageParentMessage.tsx"],"sourcesContent":["import React, { useContext, useEffect, useState } from 'react';\n\nimport {\n Box,\n Icon,\n ImageWithPlaceholder,\n PressBox,\n Text,\n VideoThumbnail,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUserMessage,\n getFileIconFromMessageType,\n getMessageType,\n getThumbnailUriFromFileMessage,\n truncate,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { GroupChannelContexts } from '../../domain/groupChannel/module/moduleContext';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\n\ntype Props = {\n variant: 'outgoing' | 'incoming';\n channel: SendbirdGroupChannel;\n message: SendbirdUserMessage | SendbirdFileMessage;\n childMessage: SendbirdUserMessage | SendbirdFileMessage;\n onPress?: (parentMessage: SendbirdMessage, childMessage: SendbirdUserMessage | SendbirdFileMessage) => void;\n};\n\nconst GroupChannelMessageParentMessage = ({ variant, channel, message, childMessage, onPress }: Props) => {\n const { currentUser } = useSendbirdChat();\n const groupChannelPubSub = useContext(GroupChannelContexts.PubSub);\n const { select, colors, palette } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const { mediaService } = usePlatformService();\n\n const [parentMessage, setParentMessage] = useState(() => message);\n const type = getMessageType(parentMessage);\n\n useEffect(() => {\n return groupChannelPubSub.subscribe(({ type, data }) => {\n if (type === 'MESSAGES_UPDATED') {\n const updatedParent = data.messages.find((it): it is SendbirdUserMessage | SendbirdFileMessage => {\n return it.messageId === parentMessage.messageId;\n });\n if (updatedParent) setParentMessage(updatedParent);\n }\n });\n }, []);\n\n const renderMessageWithText = (message: string) => {\n return (\n <Box\n style={styles.bubbleContainer}\n backgroundColor={select({ light: palette.background100, dark: palette.background400 })}\n >\n <Text body3 color={colors.onBackground03} suppressHighlighting numberOfLines={2} ellipsizeMode={'tail'}>\n {message}\n </Text>\n </Box>\n );\n };\n\n const renderFileMessageAsVideoThumbnail = (url: string) => {\n return (\n <VideoThumbnail\n style={styles.image}\n iconSize={18}\n source={url}\n fetchThumbnailFromVideoSource={(uri) => mediaService.getVideoThumbnail({ url: uri, timeMills: 1000 })}\n />\n );\n };\n const renderFileMessageAsPreview = (url: string) => {\n return <ImageWithPlaceholder style={styles.image} source={{ uri: url }} />;\n };\n const renderFileMessageAsDownloadable = (name: string) => {\n return (\n <Box\n style={styles.bubbleContainer}\n backgroundColor={select({ light: palette.background100, dark: palette.background400 })}\n >\n <Icon\n icon={getFileIconFromMessageType(type)}\n size={16}\n color={colors.onBackground03}\n containerStyle={styles.fileIcon}\n />\n <Text body3 color={colors.onBackground03} numberOfLines={1} ellipsizeMode={'middle'}>\n {truncate(name, { mode: 'mid', maxLen: 20 })}\n </Text>\n </Box>\n );\n };\n\n const parentMessageComponent = useIIFE(() => {\n if (channel.messageOffsetTimestamp > parentMessage.createdAt) {\n return renderMessageWithText(STRINGS.LABELS.MESSAGE_UNAVAILABLE);\n }\n\n switch (type) {\n case 'user':\n case 'user.opengraph': {\n return renderMessageWithText((parentMessage as SendbirdUserMessage).message);\n }\n case 'file':\n case 'file.audio': {\n return renderFileMessageAsDownloadable((parentMessage as SendbirdFileMessage).name);\n }\n case 'file.video': {\n return renderFileMessageAsVideoThumbnail(getThumbnailUriFromFileMessage(parentMessage as SendbirdFileMessage));\n }\n case 'file.image': {\n return renderFileMessageAsPreview(getThumbnailUriFromFileMessage(parentMessage as SendbirdFileMessage));\n }\n case 'file.voice': {\n return renderMessageWithText(STRINGS.LABELS.VOICE_MESSAGE);\n }\n default: {\n return null;\n }\n }\n });\n\n return (\n <Box>\n <Box\n alignItems={variant === 'outgoing' ? 'flex-end' : 'flex-start'}\n paddingLeft={variant === 'outgoing' ? 0 : 12}\n paddingRight={variant === 'outgoing' ? 12 : 0}\n >\n <PressBox onPress={() => onPress?.(parentMessage, childMessage)} style={styles.senderLabel}>\n <Icon icon={'reply-filled'} size={13} color={colors.onBackground03} containerStyle={{ marginRight: 4 }} />\n <Text caption1 color={colors.onBackground03}>\n {STRINGS.LABELS.REPLY_FROM_SENDER_TO_RECEIVER(childMessage, parentMessage, currentUser?.userId)}\n </Text>\n </PressBox>\n </Box>\n <Box\n flexDirection={'row'}\n justifyContent={variant === 'outgoing' ? 'flex-end' : 'flex-start'}\n style={styles.messageContainer}\n >\n <PressBox onPress={() => onPress?.(parentMessage, childMessage)}>{parentMessageComponent}</PressBox>\n </Box>\n </Box>\n );\n};\n\nconst styles = createStyleSheet({\n messageContainer: {\n opacity: 0.5,\n marginTop: 4,\n marginBottom: -6,\n },\n bubbleContainer: {\n maxWidth: 220,\n overflow: 'hidden',\n flexDirection: 'row',\n alignItems: 'center',\n borderRadius: 16,\n paddingHorizontal: 12,\n paddingBottom: 12,\n paddingTop: 6,\n },\n image: {\n width: 156,\n height: 104,\n borderRadius: 16,\n overflow: 'hidden',\n },\n fileIcon: {\n width: 16,\n height: 16,\n borderRadius: 10,\n marginRight: 4,\n marginTop: 2,\n },\n senderLabel: {\n flexDirection: 'row',\n },\n});\n\nexport default GroupChannelMessageParentMessage;\n"],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
9
+ var _useContext = require("../../hooks/useContext");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ const AVATAR_LIMIT = 5;
12
+ const createRepliedUserAvatars = mostRepliedUsers => {
13
+ if (!mostRepliedUsers || mostRepliedUsers.length === 0) return null;
14
+ const {
15
+ palette
16
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
17
+ return mostRepliedUsers.slice(0, AVATAR_LIMIT).map((user, index) => {
18
+ if (index < AVATAR_LIMIT - 1) {
19
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
20
+ style: styles.avatarContainer,
21
+ key: index
22
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Avatar, {
23
+ size: 20,
24
+ uri: user === null || user === void 0 ? void 0 : user.profileUrl
25
+ }));
26
+ } else {
27
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
28
+ style: styles.avatarContainer,
29
+ key: index
30
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Avatar, {
31
+ size: 20,
32
+ uri: user === null || user === void 0 ? void 0 : user.profileUrl
33
+ }), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Box, {
34
+ style: styles.avatarOverlay,
35
+ backgroundColor: palette.overlay01
36
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
37
+ icon: 'plus',
38
+ size: 14,
39
+ style: styles.plusIcon,
40
+ color: 'white'
41
+ })));
42
+ }
43
+ });
44
+ };
45
+ const GroupChannelMessageReplyInfo = _ref => {
46
+ let {
47
+ channel,
48
+ message,
49
+ onPress
50
+ } = _ref;
51
+ const {
52
+ STRINGS
53
+ } = (0, _useContext.useLocalization)();
54
+ const {
55
+ select,
56
+ palette
57
+ } = (0, _uikitReactNativeFoundation.useUIKitTheme)();
58
+ if (!channel || !message.threadInfo || !message.threadInfo.replyCount) return null;
59
+ const replyCountText = STRINGS.GROUP_CHANNEL_THREAD.REPLY_COUNT(message.threadInfo.replyCount || 0, 99);
60
+ const onPressReply = () => {
61
+ onPress === null || onPress === void 0 ? void 0 : onPress(message);
62
+ };
63
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.PressBox, {
64
+ onPress: onPressReply,
65
+ style: styles.replyContainer
66
+ }, createRepliedUserAvatars(message.threadInfo.mostRepliedUsers), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Text, {
67
+ caption3: true,
68
+ color: select({
69
+ light: palette.primary300,
70
+ dark: palette.primary200
71
+ })
72
+ }, replyCountText));
73
+ };
74
+ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
75
+ replyContainer: {
76
+ flexDirection: 'row',
77
+ alignItems: 'center'
78
+ },
79
+ avatarContainer: {
80
+ marginRight: 4
81
+ },
82
+ avatarOverlay: {
83
+ position: 'absolute',
84
+ top: 0,
85
+ left: 0,
86
+ right: 0,
87
+ bottom: 0,
88
+ borderRadius: 10
89
+ },
90
+ plusIcon: {
91
+ position: 'absolute',
92
+ top: 3,
93
+ left: 3,
94
+ right: 0,
95
+ bottom: 0
96
+ }
97
+ });
98
+ var _default = /*#__PURE__*/_react.default.memo(GroupChannelMessageReplyInfo);
99
+ exports.default = _default;
100
+ //# sourceMappingURL=GroupChannelMessageReplyInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_uikitReactNativeFoundation","_useContext","obj","__esModule","default","AVATAR_LIMIT","createRepliedUserAvatars","mostRepliedUsers","length","palette","useUIKitTheme","slice","map","user","index","createElement","Box","style","styles","avatarContainer","key","Avatar","size","uri","profileUrl","avatarOverlay","backgroundColor","overlay01","Icon","icon","plusIcon","color","GroupChannelMessageReplyInfo","_ref","channel","message","onPress","STRINGS","useLocalization","select","threadInfo","replyCount","replyCountText","GROUP_CHANNEL_THREAD","REPLY_COUNT","onPressReply","PressBox","replyContainer","Text","caption3","light","primary300","dark","primary200","createStyleSheet","flexDirection","alignItems","marginRight","position","top","left","right","bottom","borderRadius","_default","React","memo","exports"],"sources":["GroupChannelMessageReplyInfo.tsx"],"sourcesContent":["import React from 'react';\n\nimport { User } from '@sendbird/chat';\nimport {\n Avatar,\n Box,\n Icon,\n PressBox,\n Text,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { SendbirdFileMessage, SendbirdGroupChannel, SendbirdMessage, SendbirdUserMessage } from '@sendbird/uikit-utils';\n\nimport { useLocalization } from '../../hooks/useContext';\n\nconst AVATAR_LIMIT = 5;\n\ntype Props = {\n channel: SendbirdGroupChannel;\n message: SendbirdMessage;\n onPress?: (message: SendbirdUserMessage | SendbirdFileMessage) => void;\n};\n\nconst createRepliedUserAvatars = (mostRepliedUsers: User[]) => {\n if (!mostRepliedUsers || mostRepliedUsers.length === 0) return null;\n\n const { palette } = useUIKitTheme();\n\n return mostRepliedUsers.slice(0, AVATAR_LIMIT).map((user, index) => {\n if (index < AVATAR_LIMIT - 1) {\n return (\n <Box style={styles.avatarContainer} key={index}>\n <Avatar size={20} uri={user?.profileUrl}></Avatar>\n </Box>\n );\n } else {\n return (\n <Box style={styles.avatarContainer} key={index}>\n <Avatar size={20} uri={user?.profileUrl}></Avatar>\n <Box style={styles.avatarOverlay} backgroundColor={palette.overlay01}>\n <Icon icon={'plus'} size={14} style={styles.plusIcon} color={'white'} />\n </Box>\n </Box>\n );\n }\n });\n};\n\nconst GroupChannelMessageReplyInfo = ({ channel, message, onPress }: Props) => {\n const { STRINGS } = useLocalization();\n const { select, palette } = useUIKitTheme();\n\n if (!channel || !message.threadInfo || !message.threadInfo.replyCount) return null;\n\n const replyCountText = STRINGS.GROUP_CHANNEL_THREAD.REPLY_COUNT(message.threadInfo.replyCount || 0, 99);\n const onPressReply = () => {\n onPress?.(message as SendbirdUserMessage | SendbirdFileMessage);\n };\n\n return (\n <PressBox onPress={onPressReply} style={styles.replyContainer}>\n {createRepliedUserAvatars(message.threadInfo.mostRepliedUsers)}\n <Text caption3 color={select({ light: palette.primary300, dark: palette.primary200 })}>\n {replyCountText}\n </Text>\n </PressBox>\n );\n};\n\nconst styles = createStyleSheet({\n replyContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n avatarContainer: {\n marginRight: 4,\n },\n avatarOverlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: 10,\n },\n plusIcon: {\n position: 'absolute',\n top: 3,\n left: 3,\n right: 0,\n bottom: 0,\n },\n});\n\nexport default React.memo(GroupChannelMessageReplyInfo);\n"],"mappings":"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"}