@sendbird/uikit-react-native 2.4.2 → 2.5.0-rc.1

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 (209) hide show
  1. package/lib/commonjs/components/ChannelMessageList/index.js +319 -0
  2. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -0
  3. package/lib/commonjs/components/ChatFlatList.js +30 -50
  4. package/lib/commonjs/components/ChatFlatList.js.map +1 -1
  5. package/lib/commonjs/components/MessageSearchResultItem.js +132 -0
  6. package/lib/commonjs/components/MessageSearchResultItem.js.map +1 -0
  7. package/lib/commonjs/components/ScrollToBottomButton.js +1 -1
  8. package/lib/commonjs/components/ScrollToBottomButton.js.map +1 -1
  9. package/lib/commonjs/constants.js +6 -2
  10. package/lib/commonjs/constants.js.map +1 -1
  11. package/lib/commonjs/containers/GroupChannelPreviewContainer.js +2 -2
  12. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
  13. package/lib/commonjs/containers/SendbirdUIKitContainer.js +4 -2
  14. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  15. package/lib/commonjs/contexts/SendbirdChatCtx.js +4 -2
  16. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -1
  17. package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js +4 -2
  18. package/lib/commonjs/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
  19. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +84 -301
  20. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  21. package/lib/commonjs/domain/groupChannel/component/GroupChannelSuggestedMentionList.js +2 -0
  22. package/lib/commonjs/domain/groupChannel/component/GroupChannelSuggestedMentionList.js.map +1 -1
  23. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +9 -2
  24. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  25. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  26. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +18 -4
  27. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  28. package/lib/commonjs/domain/groupChannelSettings/types.js.map +1 -1
  29. package/lib/commonjs/domain/messageSearch/component/MessageSearchHeader.js +105 -0
  30. package/lib/commonjs/domain/messageSearch/component/MessageSearchHeader.js.map +1 -0
  31. package/lib/commonjs/domain/messageSearch/component/MessageSearchList.js +40 -0
  32. package/lib/commonjs/domain/messageSearch/component/MessageSearchList.js.map +1 -0
  33. package/lib/commonjs/domain/messageSearch/component/MessageSearchStatusEmpty.js +22 -0
  34. package/lib/commonjs/domain/messageSearch/component/MessageSearchStatusEmpty.js.map +1 -0
  35. package/lib/commonjs/domain/messageSearch/component/MessageSearchStatusError.js +26 -0
  36. package/lib/commonjs/domain/messageSearch/component/MessageSearchStatusError.js.map +1 -0
  37. package/lib/commonjs/domain/messageSearch/component/MessageSearchStatusLoading.js +22 -0
  38. package/lib/commonjs/domain/messageSearch/component/MessageSearchStatusLoading.js.map +1 -0
  39. package/lib/commonjs/domain/messageSearch/index.js +62 -0
  40. package/lib/commonjs/domain/messageSearch/index.js.map +1 -0
  41. package/lib/commonjs/domain/messageSearch/module/createMessageSearchModule.js +36 -0
  42. package/lib/commonjs/domain/messageSearch/module/createMessageSearchModule.js.map +1 -0
  43. package/lib/commonjs/domain/messageSearch/module/moduleContext.js +25 -0
  44. package/lib/commonjs/domain/messageSearch/module/moduleContext.js.map +1 -0
  45. package/lib/commonjs/domain/messageSearch/types.js +6 -0
  46. package/lib/commonjs/domain/messageSearch/types.js.map +1 -0
  47. package/lib/commonjs/domain/openChannel/component/OpenChannelMessageList.js +38 -279
  48. package/lib/commonjs/domain/openChannel/component/OpenChannelMessageList.js.map +1 -1
  49. package/lib/commonjs/domain/openChannel/module/moduleContext.js +9 -2
  50. package/lib/commonjs/domain/openChannel/module/moduleContext.js.map +1 -1
  51. package/lib/commonjs/domain/openChannel/types.js.map +1 -1
  52. package/lib/commonjs/fragments/createGroupChannelFragment.js +107 -15
  53. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  54. package/lib/commonjs/fragments/createGroupChannelSettingsFragment.js +2 -0
  55. package/lib/commonjs/fragments/createGroupChannelSettingsFragment.js.map +1 -1
  56. package/lib/commonjs/fragments/createMessageSearchFragment.js +145 -0
  57. package/lib/commonjs/fragments/createMessageSearchFragment.js.map +1 -0
  58. package/lib/commonjs/fragments/createOpenChannelFragment.js +40 -8
  59. package/lib/commonjs/fragments/createOpenChannelFragment.js.map +1 -1
  60. package/lib/commonjs/hooks/useMentionSuggestion.js +17 -0
  61. package/lib/commonjs/hooks/useMentionSuggestion.js.map +1 -1
  62. package/lib/commonjs/index.js +60 -40
  63. package/lib/commonjs/index.js.map +1 -1
  64. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  65. package/lib/commonjs/localization/createBaseStringSet.js +33 -20
  66. package/lib/commonjs/localization/createBaseStringSet.js.map +1 -1
  67. package/lib/commonjs/utils/pubsub.js +21 -0
  68. package/lib/commonjs/utils/pubsub.js.map +1 -0
  69. package/lib/commonjs/version.js +1 -1
  70. package/lib/commonjs/version.js.map +1 -1
  71. package/lib/module/components/ChannelMessageList/index.js +311 -0
  72. package/lib/module/components/ChannelMessageList/index.js.map +1 -0
  73. package/lib/module/components/ChatFlatList.js +32 -52
  74. package/lib/module/components/ChatFlatList.js.map +1 -1
  75. package/lib/module/components/MessageSearchResultItem.js +124 -0
  76. package/lib/module/components/MessageSearchResultItem.js.map +1 -0
  77. package/lib/module/components/ScrollToBottomButton.js +1 -1
  78. package/lib/module/components/ScrollToBottomButton.js.map +1 -1
  79. package/lib/module/constants.js +3 -1
  80. package/lib/module/constants.js.map +1 -1
  81. package/lib/module/containers/GroupChannelPreviewContainer.js +2 -2
  82. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
  83. package/lib/module/containers/SendbirdUIKitContainer.js +4 -2
  84. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  85. package/lib/module/contexts/SendbirdChatCtx.js +4 -2
  86. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -1
  87. package/lib/module/domain/groupChannel/component/GroupChannelHeader.js +4 -2
  88. package/lib/module/domain/groupChannel/component/GroupChannelHeader.js.map +1 -1
  89. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +88 -305
  90. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  91. package/lib/module/domain/groupChannel/component/GroupChannelSuggestedMentionList.js +2 -0
  92. package/lib/module/domain/groupChannel/component/GroupChannelSuggestedMentionList.js.map +1 -1
  93. package/lib/module/domain/groupChannel/module/moduleContext.js +9 -2
  94. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  95. package/lib/module/domain/groupChannel/types.js.map +1 -1
  96. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +18 -4
  97. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  98. package/lib/module/domain/groupChannelSettings/types.js.map +1 -1
  99. package/lib/module/domain/messageSearch/component/MessageSearchHeader.js +96 -0
  100. package/lib/module/domain/messageSearch/component/MessageSearchHeader.js.map +1 -0
  101. package/lib/module/domain/messageSearch/component/MessageSearchList.js +32 -0
  102. package/lib/module/domain/messageSearch/component/MessageSearchList.js.map +1 -0
  103. package/lib/module/domain/messageSearch/component/MessageSearchStatusEmpty.js +14 -0
  104. package/lib/module/domain/messageSearch/component/MessageSearchStatusEmpty.js.map +1 -0
  105. package/lib/module/domain/messageSearch/component/MessageSearchStatusError.js +18 -0
  106. package/lib/module/domain/messageSearch/component/MessageSearchStatusError.js.map +1 -0
  107. package/lib/module/domain/messageSearch/component/MessageSearchStatusLoading.js +14 -0
  108. package/lib/module/domain/messageSearch/component/MessageSearchStatusLoading.js.map +1 -0
  109. package/lib/module/domain/messageSearch/index.js +8 -0
  110. package/lib/module/domain/messageSearch/index.js.map +1 -0
  111. package/lib/module/domain/messageSearch/module/createMessageSearchModule.js +28 -0
  112. package/lib/module/domain/messageSearch/module/createMessageSearchModule.js.map +1 -0
  113. package/lib/module/domain/messageSearch/module/moduleContext.js +14 -0
  114. package/lib/module/domain/messageSearch/module/moduleContext.js.map +1 -0
  115. package/lib/module/domain/messageSearch/types.js +2 -0
  116. package/lib/module/domain/messageSearch/types.js.map +1 -0
  117. package/lib/module/domain/openChannel/component/OpenChannelMessageList.js +40 -281
  118. package/lib/module/domain/openChannel/component/OpenChannelMessageList.js.map +1 -1
  119. package/lib/module/domain/openChannel/module/moduleContext.js +9 -2
  120. package/lib/module/domain/openChannel/module/moduleContext.js.map +1 -1
  121. package/lib/module/domain/openChannel/types.js.map +1 -1
  122. package/lib/module/fragments/createGroupChannelFragment.js +109 -17
  123. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  124. package/lib/module/fragments/createGroupChannelSettingsFragment.js +2 -0
  125. package/lib/module/fragments/createGroupChannelSettingsFragment.js.map +1 -1
  126. package/lib/module/fragments/createMessageSearchFragment.js +135 -0
  127. package/lib/module/fragments/createMessageSearchFragment.js.map +1 -0
  128. package/lib/module/fragments/createOpenChannelFragment.js +41 -9
  129. package/lib/module/fragments/createOpenChannelFragment.js.map +1 -1
  130. package/lib/module/hooks/useMentionSuggestion.js +18 -1
  131. package/lib/module/hooks/useMentionSuggestion.js.map +1 -1
  132. package/lib/module/index.js +2 -0
  133. package/lib/module/index.js.map +1 -1
  134. package/lib/module/localization/StringSet.type.js.map +1 -1
  135. package/lib/module/localization/createBaseStringSet.js +34 -21
  136. package/lib/module/localization/createBaseStringSet.js.map +1 -1
  137. package/lib/module/utils/pubsub.js +14 -0
  138. package/lib/module/utils/pubsub.js.map +1 -0
  139. package/lib/module/version.js +1 -1
  140. package/lib/module/version.js.map +1 -1
  141. package/lib/typescript/src/components/ChannelMessageList/index.d.ts +55 -0
  142. package/lib/typescript/src/components/ChatFlatList.d.ts +7 -8
  143. package/lib/typescript/src/components/MessageRenderer/index.d.ts +4 -0
  144. package/lib/typescript/src/components/MessageSearchResultItem.d.ts +2 -0
  145. package/lib/typescript/src/components/OpenChannelMessageRenderer/index.d.ts +1 -0
  146. package/lib/typescript/src/components/ScrollToBottomButton.d.ts +1 -1
  147. package/lib/typescript/src/constants.d.ts +3 -1
  148. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +2 -1
  149. package/lib/typescript/src/contexts/SendbirdChatCtx.d.ts +3 -1
  150. package/lib/typescript/src/domain/groupChannel/component/GroupChannelHeader.d.ts +1 -1
  151. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +3 -32
  152. package/lib/typescript/src/domain/groupChannel/types.d.ts +23 -35
  153. package/lib/typescript/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.d.ts +1 -1
  154. package/lib/typescript/src/domain/groupChannelSettings/types.d.ts +2 -0
  155. package/lib/typescript/src/domain/messageSearch/component/MessageSearchHeader.d.ts +3 -0
  156. package/lib/typescript/src/domain/messageSearch/component/MessageSearchList.d.ts +3 -0
  157. package/lib/typescript/src/domain/messageSearch/component/MessageSearchStatusEmpty.d.ts +2 -0
  158. package/lib/typescript/src/domain/messageSearch/component/MessageSearchStatusError.d.ts +3 -0
  159. package/lib/typescript/src/domain/messageSearch/component/MessageSearchStatusLoading.d.ts +2 -0
  160. package/lib/typescript/src/domain/messageSearch/index.d.ts +7 -0
  161. package/lib/typescript/src/domain/messageSearch/module/createMessageSearchModule.d.ts +3 -0
  162. package/lib/typescript/src/domain/messageSearch/module/moduleContext.d.ts +3 -0
  163. package/lib/typescript/src/domain/messageSearch/types.d.ts +53 -0
  164. package/lib/typescript/src/domain/openChannel/component/OpenChannelMessageList.d.ts +1 -37
  165. package/lib/typescript/src/domain/openChannel/types.d.ts +17 -36
  166. package/lib/typescript/src/fragments/createMessageSearchFragment.d.ts +3 -0
  167. package/lib/typescript/src/hooks/useMentionSuggestion.d.ts +3 -2
  168. package/lib/typescript/src/index.d.ts +2 -0
  169. package/lib/typescript/src/localization/StringSet.type.d.ts +17 -3
  170. package/lib/typescript/src/utils/pubsub.d.ts +6 -0
  171. package/lib/typescript/src/version.d.ts +1 -1
  172. package/package.json +8 -7
  173. package/src/components/ChannelMessageList/index.tsx +392 -0
  174. package/src/components/ChatFlatList.tsx +33 -51
  175. package/src/components/MessageSearchResultItem.tsx +125 -0
  176. package/src/components/ScrollToBottomButton.tsx +3 -4
  177. package/src/constants.ts +3 -1
  178. package/src/containers/GroupChannelPreviewContainer.tsx +2 -2
  179. package/src/containers/SendbirdUIKitContainer.tsx +2 -0
  180. package/src/contexts/SendbirdChatCtx.tsx +7 -1
  181. package/src/domain/groupChannel/component/GroupChannelHeader.tsx +9 -3
  182. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +73 -316
  183. package/src/domain/groupChannel/component/GroupChannelSuggestedMentionList.tsx +2 -1
  184. package/src/domain/groupChannel/module/moduleContext.tsx +10 -2
  185. package/src/domain/groupChannel/types.ts +49 -38
  186. package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +29 -13
  187. package/src/domain/groupChannelSettings/types.ts +2 -0
  188. package/src/domain/messageSearch/component/MessageSearchHeader.tsx +98 -0
  189. package/src/domain/messageSearch/component/MessageSearchList.tsx +26 -0
  190. package/src/domain/messageSearch/component/MessageSearchStatusEmpty.tsx +15 -0
  191. package/src/domain/messageSearch/component/MessageSearchStatusError.tsx +16 -0
  192. package/src/domain/messageSearch/component/MessageSearchStatusLoading.tsx +15 -0
  193. package/src/domain/messageSearch/index.ts +7 -0
  194. package/src/domain/messageSearch/module/createMessageSearchModule.tsx +21 -0
  195. package/src/domain/messageSearch/module/moduleContext.tsx +16 -0
  196. package/src/domain/messageSearch/types.ts +55 -0
  197. package/src/domain/openChannel/component/OpenChannelMessageList.tsx +35 -303
  198. package/src/domain/openChannel/module/moduleContext.tsx +8 -2
  199. package/src/domain/openChannel/types.ts +40 -38
  200. package/src/fragments/createGroupChannelFragment.tsx +114 -17
  201. package/src/fragments/createGroupChannelSettingsFragment.tsx +2 -0
  202. package/src/fragments/createMessageSearchFragment.tsx +159 -0
  203. package/src/fragments/createOpenChannelFragment.tsx +48 -12
  204. package/src/hooks/useMentionSuggestion.ts +23 -3
  205. package/src/index.ts +3 -0
  206. package/src/localization/StringSet.type.ts +20 -2
  207. package/src/localization/createBaseStringSet.ts +22 -2
  208. package/src/utils/pubsub.ts +20 -0
  209. package/src/version.ts +0 -2
@@ -5,14 +5,17 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
8
9
  var _uikitChatHooks = require("@sendbird/uikit-chat-hooks");
9
10
  var _uikitUtils = require("@sendbird/uikit-utils");
10
11
  var _MessageRenderer = _interopRequireDefault(require("../components/MessageRenderer"));
11
12
  var _NewMessagesButton = _interopRequireDefault(require("../components/NewMessagesButton"));
12
13
  var _ScrollToBottomButton = _interopRequireDefault(require("../components/ScrollToBottomButton"));
13
14
  var _StatusComposition = _interopRequireDefault(require("../components/StatusComposition"));
15
+ var _constants = require("../constants");
14
16
  var _createGroupChannelModule = _interopRequireDefault(require("../domain/groupChannel/module/createGroupChannelModule"));
15
17
  var _useContext = require("../hooks/useContext");
18
+ var _pubsub = _interopRequireDefault(require("../utils/pubsub"));
16
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
20
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
21
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -20,6 +23,7 @@ const createGroupChannelFragment = initModule => {
20
23
  const GroupChannelModule = (0, _createGroupChannelModule.default)(initModule);
21
24
  return _ref => {
22
25
  let {
26
+ searchItem,
23
27
  renderNewMessagesButton = props => /*#__PURE__*/_react.default.createElement(_NewMessagesButton.default, props),
24
28
  renderScrollToBottomButton = props => /*#__PURE__*/_react.default.createElement(_ScrollToBottomButton.default, props),
25
29
  renderMessage,
@@ -45,29 +49,46 @@ const createGroupChannelFragment = initModule => {
45
49
  sdk,
46
50
  currentUser
47
51
  } = (0, _useContext.useSendbirdChat)();
52
+ const [internalSearchItem, setInternalSearchItem] = (0, _react.useState)(searchItem);
53
+ const navigateFromMessageSearch = (0, _react.useCallback)(() => Boolean(searchItem), []);
54
+ const [groupChannelPubSub] = (0, _react.useState)(() => (0, _pubsub.default)());
55
+ const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = (0, _react.useState)(false);
56
+ const scrolledAwayFromBottomRef = (0, _uikitUtils.useRefTracker)(scrolledAwayFromBottom);
48
57
  const {
58
+ loading,
49
59
  messages,
50
- nextMessages,
51
- newMessagesFromMembers,
60
+ newMessages,
61
+ resetNewMessages,
52
62
  next,
53
63
  prev,
64
+ hasNext,
54
65
  sendFileMessage,
55
66
  sendUserMessage,
56
67
  updateFileMessage,
57
68
  updateUserMessage,
58
69
  resendMessage,
59
70
  deleteMessage,
60
- loading
71
+ resetWithStartingPoint
61
72
  } = (0, _uikitChatHooks.useGroupChannelMessages)(sdk, channel, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId, {
62
73
  collectionCreator,
63
74
  queryCreator,
64
75
  sortComparator,
65
76
  onChannelDeleted,
66
- enableCollectionWithoutLocalCache: !queryCreator
77
+ enableCollectionWithoutLocalCache: !queryCreator,
78
+ shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,
79
+ onMessagesReceived(messages) {
80
+ groupChannelPubSub.publish({
81
+ type: 'MESSAGES_RECEIVED',
82
+ data: {
83
+ messages
84
+ }
85
+ });
86
+ },
87
+ startingPoint: internalSearchItem === null || internalSearchItem === void 0 ? void 0 : internalSearchItem.startingPoint
67
88
  });
89
+ const MessageComponent = (0, _react.useCallback)(withFocusingAnimation(renderMessage ? props => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, renderMessage(props)) : _MessageRenderer.default), [renderMessage]);
68
90
  const _renderMessage = (0, _uikitUtils.useFreshCallback)(props => {
69
- if (renderMessage) return renderMessage(props);
70
- return /*#__PURE__*/_react.default.createElement(_MessageRenderer.default, props);
91
+ return /*#__PURE__*/_react.default.createElement(MessageComponent, props);
71
92
  });
72
93
  const memoizedFlatListProps = (0, _react.useMemo)(() => ({
73
94
  ListEmptyComponent: /*#__PURE__*/_react.default.createElement(GroupChannelModule.StatusEmpty, null),
@@ -75,14 +96,36 @@ const createGroupChannelFragment = initModule => {
75
96
  flexGrow: 1
76
97
  },
77
98
  ...flatListProps
78
- }), [loading, flatListProps]);
99
+ }), [flatListProps]);
100
+ const onResetMessageList = (0, _react.useCallback)(callback => {
101
+ resetWithStartingPoint(Number.MAX_SAFE_INTEGER, callback);
102
+ setInternalSearchItem(undefined);
103
+ }, []);
104
+ const onPending = message => {
105
+ groupChannelPubSub.publish({
106
+ type: 'MESSAGE_SENT_PENDING',
107
+ data: {
108
+ message
109
+ }
110
+ });
111
+ };
112
+ const onSent = message => {
113
+ groupChannelPubSub.publish({
114
+ type: 'MESSAGE_SENT_SUCCESS',
115
+ data: {
116
+ message
117
+ }
118
+ });
119
+ };
79
120
  const onPressSendUserMessage = (0, _uikitUtils.useFreshCallback)(async params => {
80
121
  const processedParams = await onBeforeSendUserMessage(params);
81
- await sendUserMessage(processedParams);
122
+ const message = await sendUserMessage(processedParams, onPending);
123
+ onSent(message);
82
124
  });
83
125
  const onPressSendFileMessage = (0, _uikitUtils.useFreshCallback)(async params => {
84
126
  const processedParams = await onBeforeSendFileMessage(params);
85
- await sendFileMessage(processedParams);
127
+ const message = await sendFileMessage(processedParams, onPending);
128
+ onSent(message);
86
129
  });
87
130
  const onPressUpdateUserMessage = (0, _uikitUtils.useFreshCallback)(async (message, params) => {
88
131
  const processedParams = await onBeforeUpdateUserMessage(params);
@@ -92,13 +135,18 @@ const createGroupChannelFragment = initModule => {
92
135
  const processedParams = await onBeforeUpdateFileMessage(params);
93
136
  await updateFileMessage(message.messageId, processedParams);
94
137
  });
138
+ const onScrolledAwayFromBottom = (0, _uikitUtils.useFreshCallback)(value => {
139
+ if (!value) resetNewMessages();
140
+ setScrolledAwayFromBottom(value);
141
+ });
95
142
 
96
143
  /** @deprecated **/
97
144
  const onSendFileMessage = (0, _uikitUtils.useFreshCallback)(async file => {
98
145
  const processedParams = await onBeforeSendFileMessage({
99
146
  file
100
147
  });
101
- await sendFileMessage(processedParams);
148
+ const message = await sendFileMessage(processedParams, onPending);
149
+ onSent(message);
102
150
  });
103
151
  /** @deprecated **/
104
152
  const onSendUserMessage = (0, _uikitUtils.useFreshCallback)(async (text, mention) => {
@@ -108,7 +156,8 @@ const createGroupChannelFragment = initModule => {
108
156
  mentionedMessageTemplate: mention === null || mention === void 0 ? void 0 : mention.messageTemplate,
109
157
  mentionType: mention === null || mention === void 0 ? void 0 : mention.type
110
158
  });
111
- await sendUserMessage(processedParams);
159
+ const message = await sendUserMessage(processedParams, onPending);
160
+ onSent(message);
112
161
  });
113
162
  /** @deprecated **/
114
163
  const onUpdateFileMessage = (0, _uikitUtils.useFreshCallback)(async (editedFile, message) => {
@@ -129,9 +178,11 @@ const createGroupChannelFragment = initModule => {
129
178
  });
130
179
  return /*#__PURE__*/_react.default.createElement(GroupChannelModule.Provider, {
131
180
  channel: channel,
181
+ groupChannelPubSub: groupChannelPubSub,
132
182
  enableTypingIndicator: enableTypingIndicator,
133
183
  keyboardAvoidOffset: keyboardAvoidOffset
134
184
  }, /*#__PURE__*/_react.default.createElement(GroupChannelModule.Header, {
185
+ shouldHideRight: navigateFromMessageSearch,
135
186
  onPressHeaderLeft: onPressHeaderLeft,
136
187
  onPressHeaderRight: onPressHeaderRight
137
188
  }), /*#__PURE__*/_react.default.createElement(_StatusComposition.default, {
@@ -139,21 +190,27 @@ const createGroupChannelFragment = initModule => {
139
190
  LoadingComponent: /*#__PURE__*/_react.default.createElement(GroupChannelModule.StatusLoading, null)
140
191
  }, /*#__PURE__*/_react.default.createElement(GroupChannelModule.MessageList, {
141
192
  channel: channel,
193
+ searchItem: internalSearchItem,
194
+ onResetMessageList: onResetMessageList,
142
195
  enableMessageGrouping: enableMessageGrouping,
143
196
  currentUserId: currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId,
144
197
  renderMessage: _renderMessage,
145
198
  messages: messages,
146
- nextMessages: nextMessages,
147
- newMessagesFromMembers: newMessagesFromMembers,
199
+ newMessages: newMessages,
148
200
  onTopReached: prev,
149
201
  onBottomReached: next,
202
+ hasNext: hasNext,
203
+ scrolledAwayFromBottom: scrolledAwayFromBottom,
204
+ onScrolledAwayFromBottom: onScrolledAwayFromBottom,
150
205
  renderNewMessagesButton: renderNewMessagesButton,
151
206
  renderScrollToBottomButton: renderScrollToBottomButton,
152
207
  onResendFailedMessage: resendMessage,
153
208
  onDeleteMessage: deleteMessage,
154
- onPressImageMessage: onPressImageMessage,
155
209
  onPressMediaMessage: onPressMediaMessage,
156
- flatListProps: memoizedFlatListProps
210
+ flatListProps: memoizedFlatListProps,
211
+ nextMessages: newMessages,
212
+ newMessagesFromMembers: newMessages,
213
+ onPressImageMessage: onPressImageMessage
157
214
  }), /*#__PURE__*/_react.default.createElement(GroupChannelModule.Input, {
158
215
  SuggestedMentionList: GroupChannelModule.SuggestedMentionList,
159
216
  shouldRenderInput: shouldRenderInput(channel),
@@ -174,6 +231,41 @@ function shouldRenderInput(channel) {
174
231
  }
175
232
  return true;
176
233
  }
234
+ function withFocusingAnimation(Component) {
235
+ return /*#__PURE__*/_react.default.memo(props => {
236
+ const translateY = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
237
+ (0, _react.useEffect)(() => {
238
+ if (props.focused) {
239
+ setTimeout(() => {
240
+ _reactNative.Animated.sequence([{
241
+ toValue: -10,
242
+ duration: 500
243
+ }, {
244
+ toValue: 0,
245
+ duration: 100
246
+ }, {
247
+ toValue: -10,
248
+ duration: 200
249
+ }, {
250
+ toValue: 0,
251
+ duration: 100
252
+ }].map(value => _reactNative.Animated.timing(translateY, {
253
+ ...value,
254
+ useNativeDriver: true,
255
+ easing: _reactNative.Easing.inOut(_reactNative.Easing.ease)
256
+ }))).start();
257
+ }, _constants.MESSAGE_SEARCH_SAFE_SCROLL_DELAY + _constants.MESSAGE_FOCUS_ANIMATION_DELAY);
258
+ }
259
+ }, [props.focused]);
260
+ return /*#__PURE__*/_react.default.createElement(_reactNative.Animated.View, {
261
+ style: {
262
+ transform: [{
263
+ translateY
264
+ }]
265
+ }
266
+ }, /*#__PURE__*/_react.default.createElement(Component, props));
267
+ });
268
+ }
177
269
  var _default = createGroupChannelFragment;
178
270
  exports.default = _default;
179
271
  //# sourceMappingURL=createGroupChannelFragment.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_uikitChatHooks","_uikitUtils","_MessageRenderer","_interopRequireDefault","_NewMessagesButton","_ScrollToBottomButton","_StatusComposition","_createGroupChannelModule","_useContext","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","createGroupChannelFragment","initModule","GroupChannelModule","createGroupChannelModule","_ref","renderNewMessagesButton","props","createElement","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","NOOP","onPressHeaderRight","onPressMediaMessage","onChannelDeleted","onBeforeSendUserMessage","PASS","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","keyboardAvoidOffset","queryCreator","collectionCreator","sortComparator","messageComparator","flatListProps","onPressImageMessage","sdk","currentUser","useSendbirdChat","messages","nextMessages","newMessagesFromMembers","next","prev","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","loading","useGroupChannelMessages","userId","enableCollectionWithoutLocalCache","_renderMessage","useFreshCallback","memoizedFlatListProps","useMemo","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","onPressUpdateUserMessage","message","messageId","onPressUpdateFileMessage","onSendFileMessage","file","onSendUserMessage","text","mention","mentionedUserIds","userIds","mentionedMessageTemplate","messageTemplate","mentionType","type","onUpdateFileMessage","editedFile","onUpdateUserMessage","editedText","Provider","Header","LoadingComponent","StatusLoading","MessageList","currentUserId","onTopReached","onBottomReached","onResendFailedMessage","onDeleteMessage","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole","_default","exports"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\n\nimport { useGroupChannelMessages } from '@sendbird/uikit-chat-hooks';\nimport { NOOP, PASS, SendbirdGroupChannel, messageComparator, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport MessageRenderer from '../components/MessageRenderer';\nimport NewMessagesButton from '../components/NewMessagesButton';\nimport ScrollToBottomButton from '../components/ScrollToBottomButton';\nimport StatusComposition from '../components/StatusComposition';\nimport createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';\nimport type { GroupChannelFragment, GroupChannelModule, GroupChannelProps } from '../domain/groupChannel/types';\nimport { useSendbirdChat } from '../hooks/useContext';\n\nconst createGroupChannelFragment = (initModule?: Partial<GroupChannelModule>): GroupChannelFragment => {\n const GroupChannelModule = createGroupChannelModule(initModule);\n\n return ({\n renderNewMessagesButton = (props) => <NewMessagesButton {...props} />,\n renderScrollToBottomButton = (props) => <ScrollToBottomButton {...props} />,\n renderMessage,\n enableMessageGrouping = true,\n enableTypingIndicator = true,\n onPressHeaderLeft = NOOP,\n onPressHeaderRight = NOOP,\n onPressMediaMessage = NOOP,\n onChannelDeleted = NOOP,\n onBeforeSendUserMessage = PASS,\n onBeforeSendFileMessage = PASS,\n onBeforeUpdateUserMessage = PASS,\n onBeforeUpdateFileMessage = PASS,\n channel,\n keyboardAvoidOffset,\n queryCreator,\n collectionCreator,\n sortComparator = messageComparator,\n flatListProps,\n onPressImageMessage,\n }) => {\n const { sdk, currentUser } = useSendbirdChat();\n\n const {\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n loading,\n } = useGroupChannelMessages(sdk, channel, currentUser?.userId, {\n collectionCreator,\n queryCreator,\n sortComparator,\n onChannelDeleted,\n enableCollectionWithoutLocalCache: !queryCreator,\n });\n\n const _renderMessage: GroupChannelProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n if (renderMessage) return renderMessage(props);\n return <MessageRenderer {...props} />;\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListEmptyComponent: <GroupChannelModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [loading, flatListProps],\n );\n\n const onPressSendUserMessage: GroupChannelProps['Input']['onPressSendUserMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendUserMessage(params);\n await sendUserMessage(processedParams);\n },\n );\n const onPressSendFileMessage: GroupChannelProps['Input']['onPressSendFileMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendFileMessage(params);\n await sendFileMessage(processedParams);\n },\n );\n const onPressUpdateUserMessage: GroupChannelProps['Input']['onPressUpdateUserMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateUserMessage(params);\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n const onPressUpdateFileMessage: GroupChannelProps['Input']['onPressUpdateFileMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateFileMessage(params);\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n\n /** @deprecated **/\n const onSendFileMessage: GroupChannelProps['Input']['onSendFileMessage'] = useFreshCallback(async (file) => {\n const processedParams = await onBeforeSendFileMessage({ file });\n await sendFileMessage(processedParams);\n });\n /** @deprecated **/\n const onSendUserMessage: GroupChannelProps['Input']['onSendUserMessage'] = useFreshCallback(\n async (text, mention) => {\n const processedParams = await onBeforeSendUserMessage({\n message: text,\n mentionedUserIds: mention?.userIds,\n mentionedMessageTemplate: mention?.messageTemplate,\n mentionType: mention?.type,\n });\n await sendUserMessage(processedParams);\n },\n );\n /** @deprecated **/\n const onUpdateFileMessage: GroupChannelProps['Input']['onUpdateFileMessage'] = useFreshCallback(\n async (editedFile, message) => {\n const processedParams = await onBeforeSendFileMessage({ file: editedFile });\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n /** @deprecated **/\n const onUpdateUserMessage: GroupChannelProps['Input']['onUpdateUserMessage'] = useFreshCallback(\n async (editedText, message, mention) => {\n const processedParams = await onBeforeSendUserMessage({\n message: editedText,\n mentionedUserIds: mention?.userIds,\n mentionedMessageTemplate: mention?.messageTemplate,\n mentionType: mention?.type,\n });\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n\n return (\n <GroupChannelModule.Provider\n channel={channel}\n enableTypingIndicator={enableTypingIndicator}\n keyboardAvoidOffset={keyboardAvoidOffset}\n >\n <GroupChannelModule.Header onPressHeaderLeft={onPressHeaderLeft} onPressHeaderRight={onPressHeaderRight} />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelModule.StatusLoading />}>\n <GroupChannelModule.MessageList\n channel={channel}\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n renderMessage={_renderMessage}\n messages={messages}\n nextMessages={nextMessages}\n newMessagesFromMembers={newMessagesFromMembers}\n onTopReached={prev}\n onBottomReached={next}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressImageMessage={onPressImageMessage}\n onPressMediaMessage={onPressMediaMessage}\n flatListProps={memoizedFlatListProps}\n />\n <GroupChannelModule.Input\n SuggestedMentionList={GroupChannelModule.SuggestedMentionList}\n shouldRenderInput={shouldRenderInput(channel)}\n onPressSendUserMessage={onPressSendUserMessage}\n onPressSendFileMessage={onPressSendFileMessage}\n onPressUpdateUserMessage={onPressUpdateUserMessage}\n onPressUpdateFileMessage={onPressUpdateFileMessage}\n onSendFileMessage={onSendFileMessage}\n onSendUserMessage={onSendUserMessage}\n onUpdateFileMessage={onUpdateFileMessage}\n onUpdateUserMessage={onUpdateUserMessage}\n />\n </StatusComposition>\n </GroupChannelModule.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 default createGroupChannelFragment;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_uikitChatHooks","_uikitUtils","_MessageRenderer","_interopRequireDefault","_NewMessagesButton","_ScrollToBottomButton","_StatusComposition","_constants","_createGroupChannelModule","_useContext","_pubsub","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","createGroupChannelFragment","initModule","GroupChannelModule","createGroupChannelModule","_ref","searchItem","renderNewMessagesButton","props","createElement","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","NOOP","onPressHeaderRight","onPressMediaMessage","onChannelDeleted","onBeforeSendUserMessage","PASS","onBeforeSendFileMessage","onBeforeUpdateUserMessage","onBeforeUpdateFileMessage","channel","keyboardAvoidOffset","queryCreator","collectionCreator","sortComparator","messageComparator","flatListProps","onPressImageMessage","sdk","currentUser","useSendbirdChat","internalSearchItem","setInternalSearchItem","useState","navigateFromMessageSearch","useCallback","Boolean","groupChannelPubSub","pubsub","scrolledAwayFromBottom","setScrolledAwayFromBottom","scrolledAwayFromBottomRef","useRefTracker","loading","messages","newMessages","resetNewMessages","next","prev","hasNext","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","resetWithStartingPoint","useGroupChannelMessages","userId","enableCollectionWithoutLocalCache","shouldCountNewMessages","current","onMessagesReceived","publish","type","data","startingPoint","MessageComponent","withFocusingAnimation","Fragment","MessageRenderer","_renderMessage","useFreshCallback","memoizedFlatListProps","useMemo","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","onResetMessageList","callback","Number","MAX_SAFE_INTEGER","undefined","onPending","message","onSent","onPressSendUserMessage","params","processedParams","onPressSendFileMessage","onPressUpdateUserMessage","messageId","onPressUpdateFileMessage","onScrolledAwayFromBottom","value","onSendFileMessage","file","onSendUserMessage","text","mention","mentionedUserIds","userIds","mentionedMessageTemplate","messageTemplate","mentionType","onUpdateFileMessage","editedFile","onUpdateUserMessage","editedText","Provider","Header","shouldHideRight","LoadingComponent","StatusLoading","MessageList","currentUserId","onTopReached","onBottomReached","onResendFailedMessage","onDeleteMessage","nextMessages","newMessagesFromMembers","Input","SuggestedMentionList","shouldRenderInput","isBroadcast","myRole","Component","React","memo","translateY","useRef","Animated","Value","useEffect","focused","setTimeout","sequence","toValue","duration","map","timing","useNativeDriver","easing","Easing","inOut","ease","start","MESSAGE_SEARCH_SAFE_SCROLL_DELAY","MESSAGE_FOCUS_ANIMATION_DELAY","View","style","transform","_default","exports"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Animated, Easing } from 'react-native';\n\nimport { useGroupChannelMessages } from '@sendbird/uikit-chat-hooks';\nimport {\n NOOP,\n PASS,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdUserMessage,\n messageComparator,\n useFreshCallback,\n useRefTracker,\n} from '@sendbird/uikit-utils';\n\nimport MessageRenderer from '../components/MessageRenderer';\nimport NewMessagesButton from '../components/NewMessagesButton';\nimport ScrollToBottomButton from '../components/ScrollToBottomButton';\nimport StatusComposition from '../components/StatusComposition';\nimport { MESSAGE_FOCUS_ANIMATION_DELAY, MESSAGE_SEARCH_SAFE_SCROLL_DELAY } from '../constants';\nimport createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';\nimport type {\n GroupChannelFragment,\n GroupChannelModule,\n GroupChannelProps,\n GroupChannelPubSubContextPayload,\n} from '../domain/groupChannel/types';\nimport { useSendbirdChat } from '../hooks/useContext';\nimport pubsub from '../utils/pubsub';\n\nconst createGroupChannelFragment = (initModule?: Partial<GroupChannelModule>): GroupChannelFragment => {\n const GroupChannelModule = createGroupChannelModule(initModule);\n\n return ({\n searchItem,\n renderNewMessagesButton = (props) => <NewMessagesButton {...props} />,\n renderScrollToBottomButton = (props) => <ScrollToBottomButton {...props} />,\n renderMessage,\n enableMessageGrouping = true,\n enableTypingIndicator = true,\n onPressHeaderLeft = NOOP,\n onPressHeaderRight = NOOP,\n onPressMediaMessage = NOOP,\n onChannelDeleted = NOOP,\n onBeforeSendUserMessage = PASS,\n onBeforeSendFileMessage = PASS,\n onBeforeUpdateUserMessage = PASS,\n onBeforeUpdateFileMessage = PASS,\n channel,\n keyboardAvoidOffset,\n queryCreator,\n collectionCreator,\n sortComparator = messageComparator,\n flatListProps,\n onPressImageMessage,\n }) => {\n const { sdk, currentUser } = useSendbirdChat();\n\n const [internalSearchItem, setInternalSearchItem] = useState(searchItem);\n const navigateFromMessageSearch = useCallback(() => Boolean(searchItem), []);\n\n const [groupChannelPubSub] = useState(() => pubsub<GroupChannelPubSubContextPayload>());\n const [scrolledAwayFromBottom, setScrolledAwayFromBottom] = useState(false);\n const scrolledAwayFromBottomRef = useRefTracker(scrolledAwayFromBottom);\n\n const {\n loading,\n messages,\n newMessages,\n resetNewMessages,\n next,\n prev,\n hasNext,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n } = useGroupChannelMessages(sdk, channel, currentUser?.userId, {\n collectionCreator,\n queryCreator,\n sortComparator,\n onChannelDeleted,\n enableCollectionWithoutLocalCache: !queryCreator,\n shouldCountNewMessages: () => scrolledAwayFromBottomRef.current,\n onMessagesReceived(messages) {\n groupChannelPubSub.publish({ type: 'MESSAGES_RECEIVED', data: { messages } });\n },\n startingPoint: internalSearchItem?.startingPoint,\n });\n\n const MessageComponent: GroupChannelProps['MessageList']['renderMessage'] = useCallback(\n withFocusingAnimation(renderMessage ? (props) => <>{renderMessage(props)}</> : MessageRenderer),\n [renderMessage],\n );\n\n const _renderMessage: GroupChannelProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n return <MessageComponent {...props} />;\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListEmptyComponent: <GroupChannelModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [flatListProps],\n );\n\n const onResetMessageList = useCallback((callback?: () => void) => {\n resetWithStartingPoint(Number.MAX_SAFE_INTEGER, callback);\n setInternalSearchItem(undefined);\n }, []);\n\n const onPending = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_PENDING', data: { message } });\n };\n\n const onSent = (message: SendbirdFileMessage | SendbirdUserMessage) => {\n groupChannelPubSub.publish({ type: 'MESSAGE_SENT_SUCCESS', data: { message } });\n };\n\n const onPressSendUserMessage: GroupChannelProps['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: GroupChannelProps['Input']['onPressSendFileMessage'] = useFreshCallback(\n async (params) => {\n const processedParams = await onBeforeSendFileMessage(params);\n const message = await sendFileMessage(processedParams, onPending);\n onSent(message);\n },\n );\n const onPressUpdateUserMessage: GroupChannelProps['Input']['onPressUpdateUserMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateUserMessage(params);\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n const onPressUpdateFileMessage: GroupChannelProps['Input']['onPressUpdateFileMessage'] = useFreshCallback(\n async (message, params) => {\n const processedParams = await onBeforeUpdateFileMessage(params);\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n const onScrolledAwayFromBottom = useFreshCallback((value: boolean) => {\n if (!value) resetNewMessages();\n setScrolledAwayFromBottom(value);\n });\n\n /** @deprecated **/\n const onSendFileMessage: GroupChannelProps['Input']['onSendFileMessage'] = useFreshCallback(async (file) => {\n const processedParams = await onBeforeSendFileMessage({ file });\n const message = await sendFileMessage(processedParams, onPending);\n onSent(message);\n });\n /** @deprecated **/\n const onSendUserMessage: GroupChannelProps['Input']['onSendUserMessage'] = useFreshCallback(\n async (text, mention) => {\n const processedParams = await onBeforeSendUserMessage({\n message: text,\n mentionedUserIds: mention?.userIds,\n mentionedMessageTemplate: mention?.messageTemplate,\n mentionType: mention?.type,\n });\n const message = await sendUserMessage(processedParams, onPending);\n onSent(message);\n },\n );\n /** @deprecated **/\n const onUpdateFileMessage: GroupChannelProps['Input']['onUpdateFileMessage'] = useFreshCallback(\n async (editedFile, message) => {\n const processedParams = await onBeforeSendFileMessage({ file: editedFile });\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n /** @deprecated **/\n const onUpdateUserMessage: GroupChannelProps['Input']['onUpdateUserMessage'] = useFreshCallback(\n async (editedText, message, mention) => {\n const processedParams = await onBeforeSendUserMessage({\n message: editedText,\n mentionedUserIds: mention?.userIds,\n mentionedMessageTemplate: mention?.messageTemplate,\n mentionType: mention?.type,\n });\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n\n return (\n <GroupChannelModule.Provider\n channel={channel}\n groupChannelPubSub={groupChannelPubSub}\n enableTypingIndicator={enableTypingIndicator}\n keyboardAvoidOffset={keyboardAvoidOffset}\n >\n <GroupChannelModule.Header\n shouldHideRight={navigateFromMessageSearch}\n onPressHeaderLeft={onPressHeaderLeft}\n onPressHeaderRight={onPressHeaderRight}\n />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelModule.StatusLoading />}>\n <GroupChannelModule.MessageList\n channel={channel}\n searchItem={internalSearchItem}\n onResetMessageList={onResetMessageList}\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n renderMessage={_renderMessage}\n messages={messages}\n newMessages={newMessages}\n onTopReached={prev}\n onBottomReached={next}\n hasNext={hasNext}\n scrolledAwayFromBottom={scrolledAwayFromBottom}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressMediaMessage={onPressMediaMessage}\n flatListProps={memoizedFlatListProps}\n nextMessages={newMessages}\n newMessagesFromMembers={newMessages}\n onPressImageMessage={onPressImageMessage}\n />\n <GroupChannelModule.Input\n SuggestedMentionList={GroupChannelModule.SuggestedMentionList}\n shouldRenderInput={shouldRenderInput(channel)}\n onPressSendUserMessage={onPressSendUserMessage}\n onPressSendFileMessage={onPressSendFileMessage}\n onPressUpdateUserMessage={onPressUpdateUserMessage}\n onPressUpdateFileMessage={onPressUpdateFileMessage}\n onSendFileMessage={onSendFileMessage}\n onSendUserMessage={onSendUserMessage}\n onUpdateFileMessage={onUpdateFileMessage}\n onUpdateUserMessage={onUpdateUserMessage}\n />\n </StatusComposition>\n </GroupChannelModule.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\nfunction withFocusingAnimation<P extends unknown & { focused: boolean }>(Component: React.ComponentType<P>) {\n return React.memo<P>((props) => {\n const translateY = useRef(new Animated.Value(0)).current;\n\n useEffect(() => {\n if (props.focused) {\n setTimeout(() => {\n Animated.sequence(\n [\n { toValue: -10, duration: 500 },\n { toValue: 0, duration: 100 },\n { toValue: -10, duration: 200 },\n { toValue: 0, duration: 100 },\n ].map((value) =>\n Animated.timing(translateY, { ...value, useNativeDriver: true, easing: Easing.inOut(Easing.ease) }),\n ),\n ).start();\n }, MESSAGE_SEARCH_SAFE_SCROLL_DELAY + MESSAGE_FOCUS_ANIMATION_DELAY);\n }\n }, [props.focused]);\n\n return (\n <Animated.View style={{ transform: [{ translateY }] }}>\n <Component {...props} />\n </Animated.View>\n );\n });\n}\n\nexport default createGroupChannelFragment;\n"],"mappings":"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"}
@@ -19,6 +19,7 @@ const createGroupChannelSettingsFragment = initModule => {
19
19
  channel,
20
20
  onPressMenuModeration,
21
21
  onPressMenuMembers,
22
+ onPressMenuSearchInChannel,
22
23
  onPressMenuLeaveChannel,
23
24
  onPressMenuNotification,
24
25
  menuItemsCreator
@@ -46,6 +47,7 @@ const createGroupChannelSettingsFragment = initModule => {
46
47
  menuItemsCreator: menuItemsCreator,
47
48
  onPressMenuModeration: onPressMenuModeration,
48
49
  onPressMenuMembers: onPressMenuMembers,
50
+ onPressMenuSearchInChannel: onPressMenuSearchInChannel,
49
51
  onPressMenuLeaveChannel: onPressMenuLeaveChannel,
50
52
  onPressMenuNotification: onPressMenuNotification
51
53
  })));
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_createGroupChannelSettingsModule","obj","__esModule","default","createGroupChannelSettingsFragment","initModule","GroupChannelSettingsModule","createGroupChannelSettingsModule","_ref","onPressHeaderLeft","NOOP","channel","onPressMenuModeration","onPressMenuMembers","onPressMenuLeaveChannel","onPressMenuNotification","menuItemsCreator","colors","useUIKitTheme","left","right","useSafeAreaInsets","createElement","Provider","Header","ScrollView","style","backgroundColor","background","contentContainerStyle","paddingLeft","styles","viewContainer","paddingHorizontal","paddingRight","Info","Menu","createStyleSheet","_default","exports"],"sources":["createGroupChannelSettingsFragment.tsx"],"sourcesContent":["import React from 'react';\nimport { ScrollView } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { NOOP } from '@sendbird/uikit-utils';\n\nimport createGroupChannelSettingsModule from '../domain/groupChannelSettings/module/createGroupChannelSettingsModule';\nimport type { GroupChannelSettingsFragment, GroupChannelSettingsModule } from '../domain/groupChannelSettings/types';\n\nconst createGroupChannelSettingsFragment = (\n initModule?: Partial<GroupChannelSettingsModule>,\n): GroupChannelSettingsFragment => {\n const GroupChannelSettingsModule = createGroupChannelSettingsModule(initModule);\n\n return ({\n onPressHeaderLeft = NOOP,\n channel,\n onPressMenuModeration,\n onPressMenuMembers,\n onPressMenuLeaveChannel,\n onPressMenuNotification,\n menuItemsCreator,\n }) => {\n const { colors } = useUIKitTheme();\n const { left, right } = useSafeAreaInsets();\n\n return (\n <GroupChannelSettingsModule.Provider channel={channel}>\n <GroupChannelSettingsModule.Header onPressHeaderLeft={onPressHeaderLeft} />\n <ScrollView\n style={{ backgroundColor: colors.background }}\n contentContainerStyle={{\n paddingLeft: left + styles.viewContainer.paddingHorizontal,\n paddingRight: right + styles.viewContainer.paddingHorizontal,\n }}\n >\n <GroupChannelSettingsModule.Info />\n <GroupChannelSettingsModule.Menu\n menuItemsCreator={menuItemsCreator}\n onPressMenuModeration={onPressMenuModeration}\n onPressMenuMembers={onPressMenuMembers}\n onPressMenuLeaveChannel={onPressMenuLeaveChannel}\n onPressMenuNotification={onPressMenuNotification}\n />\n </ScrollView>\n </GroupChannelSettingsModule.Provider>\n );\n };\n};\n\nconst styles = createStyleSheet({\n viewContainer: {\n paddingHorizontal: 16,\n },\n});\n\nexport default createGroupChannelSettingsFragment;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,2BAAA,GAAAF,OAAA;AAEA,IAAAG,2BAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAEA,IAAAK,iCAAA,GAAAN,sBAAA,CAAAC,OAAA;AAAsH,SAAAD,uBAAAO,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGtH,MAAMG,kCAAkC,GACtCC,UAAgD,IACf;EACjC,MAAMC,0BAA0B,GAAG,IAAAC,yCAAgC,EAACF,UAAU,CAAC;EAE/E,OAAOG,IAAA,IAQD;IAAA,IARE;MACNC,iBAAiB,GAAGC,gBAAI;MACxBC,OAAO;MACPC,qBAAqB;MACrBC,kBAAkB;MAClBC,uBAAuB;MACvBC,uBAAuB;MACvBC;IACF,CAAC,GAAAR,IAAA;IACC,MAAM;MAAES;IAAO,CAAC,GAAG,IAAAC,yCAAa,GAAE;IAClC,MAAM;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAG,IAAAC,6CAAiB,GAAE;IAE3C,oBACE5B,MAAA,CAAAU,OAAA,CAAAmB,aAAA,CAAChB,0BAA0B,CAACiB,QAAQ;MAACZ,OAAO,EAAEA;IAAQ,gBACpDlB,MAAA,CAAAU,OAAA,CAAAmB,aAAA,CAAChB,0BAA0B,CAACkB,MAAM;MAACf,iBAAiB,EAAEA;IAAkB,EAAG,eAC3EhB,MAAA,CAAAU,OAAA,CAAAmB,aAAA,CAAC1B,YAAA,CAAA6B,UAAU;MACTC,KAAK,EAAE;QAAEC,eAAe,EAAEV,MAAM,CAACW;MAAW,CAAE;MAC9CC,qBAAqB,EAAE;QACrBC,WAAW,EAAEX,IAAI,GAAGY,MAAM,CAACC,aAAa,CAACC,iBAAiB;QAC1DC,YAAY,EAAEd,KAAK,GAAGW,MAAM,CAACC,aAAa,CAACC;MAC7C;IAAE,gBAEFxC,MAAA,CAAAU,OAAA,CAAAmB,aAAA,CAAChB,0BAA0B,CAAC6B,IAAI,OAAG,eACnC1C,MAAA,CAAAU,OAAA,CAAAmB,aAAA,CAAChB,0BAA0B,CAAC8B,IAAI;MAC9BpB,gBAAgB,EAAEA,gBAAiB;MACnCJ,qBAAqB,EAAEA,qBAAsB;MAC7CC,kBAAkB,EAAEA,kBAAmB;MACvCC,uBAAuB,EAAEA,uBAAwB;MACjDC,uBAAuB,EAAEA;IAAwB,EACjD,CACS,CACuB;EAE1C,CAAC;AACH,CAAC;AAED,MAAMgB,MAAM,GAAG,IAAAM,4CAAgB,EAAC;EAC9BL,aAAa,EAAE;IACbC,iBAAiB,EAAE;EACrB;AACF,CAAC,CAAC;AAAC,IAAAK,QAAA,GAEYlC,kCAAkC;AAAAmC,OAAA,CAAApC,OAAA,GAAAmC,QAAA"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_createGroupChannelSettingsModule","obj","__esModule","default","createGroupChannelSettingsFragment","initModule","GroupChannelSettingsModule","createGroupChannelSettingsModule","_ref","onPressHeaderLeft","NOOP","channel","onPressMenuModeration","onPressMenuMembers","onPressMenuSearchInChannel","onPressMenuLeaveChannel","onPressMenuNotification","menuItemsCreator","colors","useUIKitTheme","left","right","useSafeAreaInsets","createElement","Provider","Header","ScrollView","style","backgroundColor","background","contentContainerStyle","paddingLeft","styles","viewContainer","paddingHorizontal","paddingRight","Info","Menu","createStyleSheet","_default","exports"],"sources":["createGroupChannelSettingsFragment.tsx"],"sourcesContent":["import React from 'react';\nimport { ScrollView } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { NOOP } from '@sendbird/uikit-utils';\n\nimport createGroupChannelSettingsModule from '../domain/groupChannelSettings/module/createGroupChannelSettingsModule';\nimport type { GroupChannelSettingsFragment, GroupChannelSettingsModule } from '../domain/groupChannelSettings/types';\n\nconst createGroupChannelSettingsFragment = (\n initModule?: Partial<GroupChannelSettingsModule>,\n): GroupChannelSettingsFragment => {\n const GroupChannelSettingsModule = createGroupChannelSettingsModule(initModule);\n\n return ({\n onPressHeaderLeft = NOOP,\n channel,\n onPressMenuModeration,\n onPressMenuMembers,\n onPressMenuSearchInChannel,\n onPressMenuLeaveChannel,\n onPressMenuNotification,\n menuItemsCreator,\n }) => {\n const { colors } = useUIKitTheme();\n const { left, right } = useSafeAreaInsets();\n\n return (\n <GroupChannelSettingsModule.Provider channel={channel}>\n <GroupChannelSettingsModule.Header onPressHeaderLeft={onPressHeaderLeft} />\n <ScrollView\n style={{ backgroundColor: colors.background }}\n contentContainerStyle={{\n paddingLeft: left + styles.viewContainer.paddingHorizontal,\n paddingRight: right + styles.viewContainer.paddingHorizontal,\n }}\n >\n <GroupChannelSettingsModule.Info />\n <GroupChannelSettingsModule.Menu\n menuItemsCreator={menuItemsCreator}\n onPressMenuModeration={onPressMenuModeration}\n onPressMenuMembers={onPressMenuMembers}\n onPressMenuSearchInChannel={onPressMenuSearchInChannel}\n onPressMenuLeaveChannel={onPressMenuLeaveChannel}\n onPressMenuNotification={onPressMenuNotification}\n />\n </ScrollView>\n </GroupChannelSettingsModule.Provider>\n );\n };\n};\n\nconst styles = createStyleSheet({\n viewContainer: {\n paddingHorizontal: 16,\n },\n});\n\nexport default createGroupChannelSettingsFragment;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,2BAAA,GAAAF,OAAA;AAEA,IAAAG,2BAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAEA,IAAAK,iCAAA,GAAAN,sBAAA,CAAAC,OAAA;AAAsH,SAAAD,uBAAAO,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAGtH,MAAMG,kCAAkC,GACtCC,UAAgD,IACf;EACjC,MAAMC,0BAA0B,GAAG,IAAAC,yCAAgC,EAACF,UAAU,CAAC;EAE/E,OAAOG,IAAA,IASD;IAAA,IATE;MACNC,iBAAiB,GAAGC,gBAAI;MACxBC,OAAO;MACPC,qBAAqB;MACrBC,kBAAkB;MAClBC,0BAA0B;MAC1BC,uBAAuB;MACvBC,uBAAuB;MACvBC;IACF,CAAC,GAAAT,IAAA;IACC,MAAM;MAAEU;IAAO,CAAC,GAAG,IAAAC,yCAAa,GAAE;IAClC,MAAM;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAG,IAAAC,6CAAiB,GAAE;IAE3C,oBACE7B,MAAA,CAAAU,OAAA,CAAAoB,aAAA,CAACjB,0BAA0B,CAACkB,QAAQ;MAACb,OAAO,EAAEA;IAAQ,gBACpDlB,MAAA,CAAAU,OAAA,CAAAoB,aAAA,CAACjB,0BAA0B,CAACmB,MAAM;MAAChB,iBAAiB,EAAEA;IAAkB,EAAG,eAC3EhB,MAAA,CAAAU,OAAA,CAAAoB,aAAA,CAAC3B,YAAA,CAAA8B,UAAU;MACTC,KAAK,EAAE;QAAEC,eAAe,EAAEV,MAAM,CAACW;MAAW,CAAE;MAC9CC,qBAAqB,EAAE;QACrBC,WAAW,EAAEX,IAAI,GAAGY,MAAM,CAACC,aAAa,CAACC,iBAAiB;QAC1DC,YAAY,EAAEd,KAAK,GAAGW,MAAM,CAACC,aAAa,CAACC;MAC7C;IAAE,gBAEFzC,MAAA,CAAAU,OAAA,CAAAoB,aAAA,CAACjB,0BAA0B,CAAC8B,IAAI,OAAG,eACnC3C,MAAA,CAAAU,OAAA,CAAAoB,aAAA,CAACjB,0BAA0B,CAAC+B,IAAI;MAC9BpB,gBAAgB,EAAEA,gBAAiB;MACnCL,qBAAqB,EAAEA,qBAAsB;MAC7CC,kBAAkB,EAAEA,kBAAmB;MACvCC,0BAA0B,EAAEA,0BAA2B;MACvDC,uBAAuB,EAAEA,uBAAwB;MACjDC,uBAAuB,EAAEA;IAAwB,EACjD,CACS,CACuB;EAE1C,CAAC;AACH,CAAC;AAED,MAAMgB,MAAM,GAAG,IAAAM,4CAAgB,EAAC;EAC9BL,aAAa,EAAE;IACbC,iBAAiB,EAAE;EACrB;AACF,CAAC,CAAC;AAAC,IAAAK,QAAA,GAEYnC,kCAAkC;AAAAoC,OAAA,CAAArC,OAAA,GAAAoC,QAAA"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _message = require("@sendbird/chat/message");
9
+ var _uikitUtils = require("@sendbird/uikit-utils");
10
+ var _MessageSearchResultItem = require("../components/MessageSearchResultItem");
11
+ var _StatusComposition = _interopRequireDefault(require("../components/StatusComposition"));
12
+ var _messageSearch = require("../domain/messageSearch");
13
+ var _useContext = require("../hooks/useContext");
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ function getMessageSearchQuery(sdk, options) {
18
+ if (options.queryCreator) return options.queryCreator(options);
19
+ return sdk.createMessageSearchQuery(options);
20
+ }
21
+ const createMessageSearchFragment = initModule => {
22
+ const MessageSearchModule = (0, _messageSearch.createMessageSearchModule)(initModule);
23
+ return _ref => {
24
+ let {
25
+ onPressHeaderLeft = _uikitUtils.NOOP,
26
+ channel,
27
+ queryCreator,
28
+ renderSearchResultItem,
29
+ onPressSearchResultItem
30
+ } = _ref;
31
+ const padding = (0, _uikitUtils.useSafeAreaPadding)(['left', 'right', 'bottom']);
32
+ const {
33
+ sdk
34
+ } = (0, _useContext.useSendbirdChat)();
35
+ const {
36
+ keyword,
37
+ setKeyword,
38
+ search,
39
+ searchResults,
40
+ loading,
41
+ next,
42
+ error,
43
+ query
44
+ } = useMessageSearch(sdk, {
45
+ channel,
46
+ queryCreator
47
+ });
48
+ const renderItem = (0, _uikitUtils.useFreshCallback)(props => {
49
+ if (renderSearchResultItem) return renderSearchResultItem(props);
50
+ return /*#__PURE__*/_react.default.createElement(_MessageSearchResultItem.MessageSearchResultItem, props);
51
+ });
52
+ return /*#__PURE__*/_react.default.createElement(MessageSearchModule.Provider, null, /*#__PURE__*/_react.default.createElement(MessageSearchModule.Header, {
53
+ keyword: keyword,
54
+ onChangeKeyword: setKeyword,
55
+ onPressHeaderLeft: onPressHeaderLeft,
56
+ onPressHeaderRight: search
57
+ }), /*#__PURE__*/_react.default.createElement(_StatusComposition.default, {
58
+ loading: loading,
59
+ LoadingComponent: /*#__PURE__*/_react.default.createElement(MessageSearchModule.StatusLoading, null),
60
+ error: Boolean(error),
61
+ ErrorComponent: /*#__PURE__*/_react.default.createElement(MessageSearchModule.StatusError, {
62
+ onPressRetry: search
63
+ })
64
+ }, query && /*#__PURE__*/_react.default.createElement(MessageSearchModule.List, {
65
+ channel: channel,
66
+ onPressSearchResultItem: onPressSearchResultItem,
67
+ messages: searchResults,
68
+ renderSearchResultItem: renderItem,
69
+ flatListProps: {
70
+ keyboardDismissMode: 'on-drag',
71
+ keyboardShouldPersistTaps: 'handled',
72
+ onEndReached: next,
73
+ ListEmptyComponent: MessageSearchModule.StatusEmpty,
74
+ contentContainerStyle: {
75
+ flexGrow: 1,
76
+ ...padding
77
+ }
78
+ }
79
+ })));
80
+ };
81
+ };
82
+ const useMessageSearch = (sdk, _ref2) => {
83
+ let {
84
+ channel,
85
+ queryCreator
86
+ } = _ref2;
87
+ const [query, setQuery] = (0, _react.useState)();
88
+ const [keyword, setKeyword] = (0, _react.useState)('');
89
+ const [loading, setLoading] = (0, _react.useState)(false);
90
+ const [error, setError] = (0, _react.useState)(null);
91
+ const [searchResults, setSearchResults] = (0, _react.useState)([]);
92
+ const queryInProgress = (0, _react.useRef)(false);
93
+ const search = (0, _uikitUtils.useFreshCallback)(async () => {
94
+ if (keyword.length <= 0) return;
95
+ if (queryInProgress.current) return;
96
+ const query = getMessageSearchQuery(sdk, {
97
+ keyword,
98
+ channelUrl: channel.url,
99
+ messageTimestampFrom: Math.max(channel.joinedAt, channel.invitedAt),
100
+ order: _message.MessageSearchOrder.TIMESTAMP,
101
+ queryCreator
102
+ });
103
+ setQuery(query);
104
+ setLoading(true);
105
+ setError(null);
106
+ try {
107
+ queryInProgress.current = true;
108
+ const result = await query.next();
109
+ setSearchResults(result);
110
+ } catch (err) {
111
+ _uikitUtils.Logger.warn('[MessageSearchFragment] search failure', err);
112
+ setError(err);
113
+ } finally {
114
+ queryInProgress.current = false;
115
+ setLoading(false);
116
+ }
117
+ });
118
+ const next = (0, _uikitUtils.useFreshCallback)(async () => {
119
+ if (!(query !== null && query !== void 0 && query.hasNext)) return;
120
+ if (queryInProgress.current) return;
121
+ try {
122
+ queryInProgress.current = true;
123
+ const result = await query.next();
124
+ setSearchResults(prev => [...prev, ...result]);
125
+ } catch (err) {
126
+ _uikitUtils.Logger.warn('[MessageSearchFragment] next failure', err);
127
+ setError(err);
128
+ } finally {
129
+ queryInProgress.current = false;
130
+ }
131
+ });
132
+ return {
133
+ keyword,
134
+ setKeyword,
135
+ query,
136
+ loading,
137
+ error,
138
+ searchResults,
139
+ search,
140
+ next
141
+ };
142
+ };
143
+ var _default = createMessageSearchFragment;
144
+ exports.default = _default;
145
+ //# sourceMappingURL=createMessageSearchFragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_message","_uikitUtils","_MessageSearchResultItem","_StatusComposition","_interopRequireDefault","_messageSearch","_useContext","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","getMessageSearchQuery","sdk","options","queryCreator","createMessageSearchQuery","createMessageSearchFragment","initModule","MessageSearchModule","createMessageSearchModule","_ref","onPressHeaderLeft","NOOP","channel","renderSearchResultItem","onPressSearchResultItem","padding","useSafeAreaPadding","useSendbirdChat","keyword","setKeyword","search","searchResults","loading","next","error","query","useMessageSearch","renderItem","useFreshCallback","props","createElement","MessageSearchResultItem","Provider","Header","onChangeKeyword","onPressHeaderRight","LoadingComponent","StatusLoading","Boolean","ErrorComponent","StatusError","onPressRetry","List","messages","flatListProps","keyboardDismissMode","keyboardShouldPersistTaps","onEndReached","ListEmptyComponent","StatusEmpty","contentContainerStyle","flexGrow","_ref2","setQuery","useState","setLoading","setError","setSearchResults","queryInProgress","useRef","length","current","channelUrl","url","messageTimestampFrom","Math","max","joinedAt","invitedAt","order","MessageSearchOrder","TIMESTAMP","result","err","Logger","warn","hasNext","prev","_default","exports"],"sources":["createMessageSearchFragment.tsx"],"sourcesContent":["import React, { useRef, useState } from 'react';\n\nimport { MessageSearchOrder } from '@sendbird/chat/message';\nimport {\n Logger,\n NOOP,\n SendbirdBaseMessage,\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdMessageSearchQuery,\n useFreshCallback,\n useSafeAreaPadding,\n} from '@sendbird/uikit-utils';\n\nimport { MessageSearchResultItem } from '../components/MessageSearchResultItem';\nimport StatusComposition from '../components/StatusComposition';\nimport { createMessageSearchModule } from '../domain/messageSearch';\nimport type { MessageSearchFragment, MessageSearchModule, MessageSearchProps } from '../domain/messageSearch/types';\nimport { useSendbirdChat } from '../hooks/useContext';\n\ntype DefaultMessageSearchQueryParams = {\n keyword: string;\n channelUrl: string;\n messageTimestampFrom: number;\n order: MessageSearchOrder;\n};\n\ntype SearchQueryOptions = DefaultMessageSearchQueryParams & {\n queryCreator?: (params: DefaultMessageSearchQueryParams) => SendbirdMessageSearchQuery;\n};\n\nfunction getMessageSearchQuery(sdk: SendbirdChatSDK, options: SearchQueryOptions) {\n if (options.queryCreator) return options.queryCreator(options);\n return sdk.createMessageSearchQuery(options);\n}\n\nconst createMessageSearchFragment = (initModule?: Partial<MessageSearchModule>): MessageSearchFragment => {\n const MessageSearchModule = createMessageSearchModule(initModule);\n\n return ({ onPressHeaderLeft = NOOP, channel, queryCreator, renderSearchResultItem, onPressSearchResultItem }) => {\n const padding = useSafeAreaPadding(['left', 'right', 'bottom']);\n\n const { sdk } = useSendbirdChat();\n const { keyword, setKeyword, search, searchResults, loading, next, error, query } = useMessageSearch(sdk, {\n channel,\n queryCreator,\n });\n\n const renderItem: MessageSearchProps['List']['renderSearchResultItem'] = useFreshCallback((props) => {\n if (renderSearchResultItem) return renderSearchResultItem(props);\n return <MessageSearchResultItem {...props} />;\n });\n\n return (\n <MessageSearchModule.Provider>\n <MessageSearchModule.Header\n keyword={keyword}\n onChangeKeyword={setKeyword}\n onPressHeaderLeft={onPressHeaderLeft}\n onPressHeaderRight={search}\n />\n <StatusComposition\n loading={loading}\n LoadingComponent={<MessageSearchModule.StatusLoading />}\n error={Boolean(error)}\n ErrorComponent={<MessageSearchModule.StatusError onPressRetry={search} />}\n >\n {query && (\n <MessageSearchModule.List\n channel={channel}\n onPressSearchResultItem={onPressSearchResultItem}\n messages={searchResults}\n renderSearchResultItem={renderItem}\n flatListProps={{\n keyboardDismissMode: 'on-drag',\n keyboardShouldPersistTaps: 'handled',\n onEndReached: next,\n ListEmptyComponent: MessageSearchModule.StatusEmpty,\n contentContainerStyle: { flexGrow: 1, ...padding },\n }}\n />\n )}\n </StatusComposition>\n </MessageSearchModule.Provider>\n );\n };\n};\n\nconst useMessageSearch = (\n sdk: SendbirdChatSDK,\n { channel, queryCreator }: { channel: SendbirdGroupChannel; queryCreator: SearchQueryOptions['queryCreator'] },\n) => {\n const [query, setQuery] = useState<SendbirdMessageSearchQuery>();\n const [keyword, setKeyword] = useState('');\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<unknown>(null);\n const [searchResults, setSearchResults] = useState<SendbirdBaseMessage[]>([]);\n const queryInProgress = useRef(false);\n\n const search = useFreshCallback(async () => {\n if (keyword.length <= 0) return;\n if (queryInProgress.current) return;\n\n const query = getMessageSearchQuery(sdk, {\n keyword,\n channelUrl: channel.url,\n messageTimestampFrom: Math.max(channel.joinedAt, channel.invitedAt),\n order: MessageSearchOrder.TIMESTAMP,\n queryCreator,\n });\n\n setQuery(query);\n setLoading(true);\n setError(null);\n\n try {\n queryInProgress.current = true;\n const result = await query.next();\n setSearchResults(result);\n } catch (err) {\n Logger.warn('[MessageSearchFragment] search failure', err);\n setError(err);\n } finally {\n queryInProgress.current = false;\n setLoading(false);\n }\n });\n\n const next = useFreshCallback(async () => {\n if (!query?.hasNext) return;\n if (queryInProgress.current) return;\n\n try {\n queryInProgress.current = true;\n const result = await query.next();\n setSearchResults((prev) => [...prev, ...result]);\n } catch (err) {\n Logger.warn('[MessageSearchFragment] next failure', err);\n setError(err);\n } finally {\n queryInProgress.current = false;\n }\n });\n\n return {\n keyword,\n setKeyword,\n\n query,\n loading,\n error,\n searchResults,\n\n search,\n next,\n };\n};\n\nexport default createMessageSearchFragment;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAWA,IAAAG,wBAAA,GAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAC,sBAAA,CAAAL,OAAA;AACA,IAAAM,cAAA,GAAAN,OAAA;AAEA,IAAAO,WAAA,GAAAP,OAAA;AAAsD,SAAAK,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,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,SAAAb,wBAAAS,GAAA,EAAAI,WAAA,SAAAA,WAAA,IAAAJ,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAQ,KAAA,GAAAL,wBAAA,CAAAC,WAAA,OAAAI,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,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,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,CAAAT,OAAA,GAAAF,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAatD,SAASW,qBAAqBA,CAACC,GAAoB,EAAEC,OAA2B,EAAE;EAChF,IAAIA,OAAO,CAACC,YAAY,EAAE,OAAOD,OAAO,CAACC,YAAY,CAACD,OAAO,CAAC;EAC9D,OAAOD,GAAG,CAACG,wBAAwB,CAACF,OAAO,CAAC;AAC9C;AAEA,MAAMG,2BAA2B,GAAIC,UAAyC,IAA4B;EACxG,MAAMC,mBAAmB,GAAG,IAAAC,wCAAyB,EAACF,UAAU,CAAC;EAEjE,OAAOG,IAAA,IAA0G;IAAA,IAAzG;MAAEC,iBAAiB,GAAGC,gBAAI;MAAEC,OAAO;MAAET,YAAY;MAAEU,sBAAsB;MAAEC;IAAwB,CAAC,GAAAL,IAAA;IAC1G,MAAMM,OAAO,GAAG,IAAAC,8BAAkB,EAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAE/D,MAAM;MAAEf;IAAI,CAAC,GAAG,IAAAgB,2BAAe,GAAE;IACjC,MAAM;MAAEC,OAAO;MAAEC,UAAU;MAAEC,MAAM;MAAEC,aAAa;MAAEC,OAAO;MAAEC,IAAI;MAAEC,KAAK;MAAEC;IAAM,CAAC,GAAGC,gBAAgB,CAACzB,GAAG,EAAE;MACxGW,OAAO;MACPT;IACF,CAAC,CAAC;IAEF,MAAMwB,UAAgE,GAAG,IAAAC,4BAAgB,EAAEC,KAAK,IAAK;MACnG,IAAIhB,sBAAsB,EAAE,OAAOA,sBAAsB,CAACgB,KAAK,CAAC;MAChE,oBAAO7D,MAAA,CAAAY,OAAA,CAAAkD,aAAA,CAACzD,wBAAA,CAAA0D,uBAAuB,EAAKF,KAAK,CAAI;IAC/C,CAAC,CAAC;IAEF,oBACE7D,MAAA,CAAAY,OAAA,CAAAkD,aAAA,CAACvB,mBAAmB,CAACyB,QAAQ,qBAC3BhE,MAAA,CAAAY,OAAA,CAAAkD,aAAA,CAACvB,mBAAmB,CAAC0B,MAAM;MACzBf,OAAO,EAAEA,OAAQ;MACjBgB,eAAe,EAAEf,UAAW;MAC5BT,iBAAiB,EAAEA,iBAAkB;MACrCyB,kBAAkB,EAAEf;IAAO,EAC3B,eACFpD,MAAA,CAAAY,OAAA,CAAAkD,aAAA,CAACxD,kBAAA,CAAAM,OAAiB;MAChB0C,OAAO,EAAEA,OAAQ;MACjBc,gBAAgB,eAAEpE,MAAA,CAAAY,OAAA,CAAAkD,aAAA,CAACvB,mBAAmB,CAAC8B,aAAa,OAAI;MACxDb,KAAK,EAAEc,OAAO,CAACd,KAAK,CAAE;MACtBe,cAAc,eAAEvE,MAAA,CAAAY,OAAA,CAAAkD,aAAA,CAACvB,mBAAmB,CAACiC,WAAW;QAACC,YAAY,EAAErB;MAAO;IAAI,GAEzEK,KAAK,iBACJzD,MAAA,CAAAY,OAAA,CAAAkD,aAAA,CAACvB,mBAAmB,CAACmC,IAAI;MACvB9B,OAAO,EAAEA,OAAQ;MACjBE,uBAAuB,EAAEA,uBAAwB;MACjD6B,QAAQ,EAAEtB,aAAc;MACxBR,sBAAsB,EAAEc,UAAW;MACnCiB,aAAa,EAAE;QACbC,mBAAmB,EAAE,SAAS;QAC9BC,yBAAyB,EAAE,SAAS;QACpCC,YAAY,EAAExB,IAAI;QAClByB,kBAAkB,EAAEzC,mBAAmB,CAAC0C,WAAW;QACnDC,qBAAqB,EAAE;UAAEC,QAAQ,EAAE,CAAC;UAAE,GAAGpC;QAAQ;MACnD;IAAE,EAEL,CACiB,CACS;EAEnC,CAAC;AACH,CAAC;AAED,MAAMW,gBAAgB,GAAGA,CACvBzB,GAAoB,EAAAmD,KAAA,KAEjB;EAAA,IADH;IAAExC,OAAO;IAAET;EAAkG,CAAC,GAAAiD,KAAA;EAE9G,MAAM,CAAC3B,KAAK,EAAE4B,QAAQ,CAAC,GAAG,IAAAC,eAAQ,GAA8B;EAChE,MAAM,CAACpC,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAmC,eAAQ,EAAC,EAAE,CAAC;EAC1C,MAAM,CAAChC,OAAO,EAAEiC,UAAU,CAAC,GAAG,IAAAD,eAAQ,EAAC,KAAK,CAAC;EAC7C,MAAM,CAAC9B,KAAK,EAAEgC,QAAQ,CAAC,GAAG,IAAAF,eAAQ,EAAU,IAAI,CAAC;EACjD,MAAM,CAACjC,aAAa,EAAEoC,gBAAgB,CAAC,GAAG,IAAAH,eAAQ,EAAwB,EAAE,CAAC;EAC7E,MAAMI,eAAe,GAAG,IAAAC,aAAM,EAAC,KAAK,CAAC;EAErC,MAAMvC,MAAM,GAAG,IAAAQ,4BAAgB,EAAC,YAAY;IAC1C,IAAIV,OAAO,CAAC0C,MAAM,IAAI,CAAC,EAAE;IACzB,IAAIF,eAAe,CAACG,OAAO,EAAE;IAE7B,MAAMpC,KAAK,GAAGzB,qBAAqB,CAACC,GAAG,EAAE;MACvCiB,OAAO;MACP4C,UAAU,EAAElD,OAAO,CAACmD,GAAG;MACvBC,oBAAoB,EAAEC,IAAI,CAACC,GAAG,CAACtD,OAAO,CAACuD,QAAQ,EAAEvD,OAAO,CAACwD,SAAS,CAAC;MACnEC,KAAK,EAAEC,2BAAkB,CAACC,SAAS;MACnCpE;IACF,CAAC,CAAC;IAEFkD,QAAQ,CAAC5B,KAAK,CAAC;IACf8B,UAAU,CAAC,IAAI,CAAC;IAChBC,QAAQ,CAAC,IAAI,CAAC;IAEd,IAAI;MACFE,eAAe,CAACG,OAAO,GAAG,IAAI;MAC9B,MAAMW,MAAM,GAAG,MAAM/C,KAAK,CAACF,IAAI,EAAE;MACjCkC,gBAAgB,CAACe,MAAM,CAAC;IAC1B,CAAC,CAAC,OAAOC,GAAG,EAAE;MACZC,kBAAM,CAACC,IAAI,CAAC,wCAAwC,EAAEF,GAAG,CAAC;MAC1DjB,QAAQ,CAACiB,GAAG,CAAC;IACf,CAAC,SAAS;MACRf,eAAe,CAACG,OAAO,GAAG,KAAK;MAC/BN,UAAU,CAAC,KAAK,CAAC;IACnB;EACF,CAAC,CAAC;EAEF,MAAMhC,IAAI,GAAG,IAAAK,4BAAgB,EAAC,YAAY;IACxC,IAAI,EAACH,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEmD,OAAO,GAAE;IACrB,IAAIlB,eAAe,CAACG,OAAO,EAAE;IAE7B,IAAI;MACFH,eAAe,CAACG,OAAO,GAAG,IAAI;MAC9B,MAAMW,MAAM,GAAG,MAAM/C,KAAK,CAACF,IAAI,EAAE;MACjCkC,gBAAgB,CAAEoB,IAAI,IAAK,CAAC,GAAGA,IAAI,EAAE,GAAGL,MAAM,CAAC,CAAC;IAClD,CAAC,CAAC,OAAOC,GAAG,EAAE;MACZC,kBAAM,CAACC,IAAI,CAAC,sCAAsC,EAAEF,GAAG,CAAC;MACxDjB,QAAQ,CAACiB,GAAG,CAAC;IACf,CAAC,SAAS;MACRf,eAAe,CAACG,OAAO,GAAG,KAAK;IACjC;EACF,CAAC,CAAC;EAEF,OAAO;IACL3C,OAAO;IACPC,UAAU;IAEVM,KAAK;IACLH,OAAO;IACPE,KAAK;IACLH,aAAa;IAEbD,MAAM;IACNG;EACF,CAAC;AACH,CAAC;AAAC,IAAAuD,QAAA,GAEazE,2BAA2B;AAAA0E,OAAA,CAAAnG,OAAA,GAAAkG,QAAA"}