@sendbird/uikit-chat-hooks 1.1.2 → 2.0.0-rc.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 (89) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/channel/useActiveGroupChannel.js +1 -1
  3. package/lib/commonjs/channel/useActiveGroupChannel.js.map +1 -1
  4. package/lib/commonjs/channel/useGroupChannelList/index.js +3 -0
  5. package/lib/commonjs/channel/useGroupChannelList/index.js.map +1 -1
  6. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js +25 -26
  7. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
  8. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js +8 -11
  9. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
  10. package/lib/commonjs/channel/useGroupChannelMessages/index.js +3 -0
  11. package/lib/commonjs/channel/useGroupChannelMessages/index.js.map +1 -1
  12. package/lib/commonjs/channel/useGroupChannelMessages/reducer.js.map +1 -1
  13. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +83 -87
  14. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  15. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +32 -20
  16. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  17. package/lib/commonjs/common/useMessageOutgoingStatus.js +8 -4
  18. package/lib/commonjs/common/useMessageOutgoingStatus.js.map +1 -1
  19. package/lib/commonjs/common/usePushTrigger.js +13 -5
  20. package/lib/commonjs/common/usePushTrigger.js.map +1 -1
  21. package/lib/commonjs/common/useTotalUnreadChannelCount.js +4 -2
  22. package/lib/commonjs/common/useTotalUnreadChannelCount.js.map +1 -1
  23. package/lib/commonjs/common/useTotalUnreadMessageCount.js +12 -15
  24. package/lib/commonjs/common/useTotalUnreadMessageCount.js.map +1 -1
  25. package/lib/commonjs/handler/useChannelHandler.js +5 -3
  26. package/lib/commonjs/handler/useChannelHandler.js.map +1 -1
  27. package/lib/commonjs/handler/useConnectionHandler.js +5 -3
  28. package/lib/commonjs/handler/useConnectionHandler.js.map +1 -1
  29. package/lib/commonjs/handler/useUserEventHandler.js +19 -6
  30. package/lib/commonjs/handler/useUserEventHandler.js.map +1 -1
  31. package/lib/commonjs/types.js.map +1 -1
  32. package/lib/module/channel/useActiveGroupChannel.js +1 -1
  33. package/lib/module/channel/useActiveGroupChannel.js.map +1 -1
  34. package/lib/module/channel/useGroupChannelList/index.js +2 -0
  35. package/lib/module/channel/useGroupChannelList/index.js.map +1 -1
  36. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js +25 -27
  37. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
  38. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js +8 -12
  39. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
  40. package/lib/module/channel/useGroupChannelMessages/index.js +2 -0
  41. package/lib/module/channel/useGroupChannelMessages/index.js.map +1 -1
  42. package/lib/module/channel/useGroupChannelMessages/reducer.js.map +1 -1
  43. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +81 -87
  44. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  45. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +33 -21
  46. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  47. package/lib/module/common/useMessageOutgoingStatus.js +8 -4
  48. package/lib/module/common/useMessageOutgoingStatus.js.map +1 -1
  49. package/lib/module/common/usePushTrigger.js +11 -5
  50. package/lib/module/common/usePushTrigger.js.map +1 -1
  51. package/lib/module/common/useTotalUnreadChannelCount.js +4 -2
  52. package/lib/module/common/useTotalUnreadChannelCount.js.map +1 -1
  53. package/lib/module/common/useTotalUnreadMessageCount.js +12 -17
  54. package/lib/module/common/useTotalUnreadMessageCount.js.map +1 -1
  55. package/lib/module/handler/useChannelHandler.js +4 -3
  56. package/lib/module/handler/useChannelHandler.js.map +1 -1
  57. package/lib/module/handler/useConnectionHandler.js +4 -3
  58. package/lib/module/handler/useConnectionHandler.js.map +1 -1
  59. package/lib/module/handler/useUserEventHandler.js +19 -7
  60. package/lib/module/handler/useUserEventHandler.js.map +1 -1
  61. package/lib/module/types.js.map +1 -1
  62. package/lib/typescript/src/channel/useActiveGroupChannel.d.ts +2 -2
  63. package/lib/typescript/src/channel/useGroupChannelList/reducer.d.ts +1 -1
  64. package/lib/typescript/src/channel/useGroupChannelMessages/reducer.d.ts +4 -4
  65. package/lib/typescript/src/common/useMessageOutgoingStatus.d.ts +2 -2
  66. package/lib/typescript/src/common/usePushTrigger.d.ts +9 -3
  67. package/lib/typescript/src/common/useTotalUnreadMessageCount.d.ts +4 -4
  68. package/lib/typescript/src/common/useUserList.d.ts +1 -1
  69. package/lib/typescript/src/handler/useChannelHandler.d.ts +2 -2
  70. package/lib/typescript/src/handler/useConnectionHandler.d.ts +2 -2
  71. package/lib/typescript/src/handler/useUserEventHandler.d.ts +2 -3
  72. package/lib/typescript/src/types.d.ts +7 -8
  73. package/package.json +5 -5
  74. package/src/channel/useActiveGroupChannel.ts +1 -1
  75. package/src/channel/useGroupChannelList/index.ts +3 -0
  76. package/src/channel/useGroupChannelList/useGroupChannelListWithCollection.ts +21 -24
  77. package/src/channel/useGroupChannelList/useGroupChannelListWithQuery.ts +10 -15
  78. package/src/channel/useGroupChannelMessages/index.ts +3 -0
  79. package/src/channel/useGroupChannelMessages/reducer.ts +4 -9
  80. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +79 -78
  81. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +59 -34
  82. package/src/common/useMessageOutgoingStatus.ts +8 -13
  83. package/src/common/usePushTrigger.ts +13 -7
  84. package/src/common/useTotalUnreadChannelCount.ts +4 -2
  85. package/src/common/useTotalUnreadMessageCount.ts +14 -25
  86. package/src/handler/useChannelHandler.ts +5 -5
  87. package/src/handler/useConnectionHandler.ts +5 -5
  88. package/src/handler/useUserEventHandler.ts +15 -8
  89. package/src/types.ts +10 -10
@@ -1,5 +1,5 @@
1
1
  import { useCallback, useRef } from 'react';
2
- import { Logger, isDifferentChannel, useAsyncEffect, useForceUpdate } from '@sendbird/uikit-utils';
2
+ import { Logger, confirmAndMarkAsDelivered, confirmAndMarkAsRead, isDifferentChannel, useAsyncEffect, useForceUpdate } from '@sendbird/uikit-utils';
3
3
  import { useAppFeatures } from '../../common/useAppFeatures';
4
4
  import { useChannelHandler } from '../../handler/useChannelHandler';
5
5
  import { useActiveGroupChannel } from '../useActiveGroupChannel';
@@ -7,10 +7,10 @@ import { useGroupChannelMessagesReducer } from './reducer';
7
7
 
8
8
  const createMessageQuery = (channel, creator) => {
9
9
  if (creator) return creator();
10
- const query = channel.createPreviousMessageListQuery();
11
- query.limit = 100;
12
- query.reverse = true;
13
- return query;
10
+ return channel.createPreviousMessageListQuery({
11
+ limit: 100,
12
+ reverse: true
13
+ });
14
14
  };
15
15
 
16
16
  const HOOK_NAME = 'useGroupChannelMessagesWithQuery';
@@ -41,13 +41,13 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
41
41
 
42
42
  const channelMarkAs = async () => {
43
43
  try {
44
- if (deliveryReceiptEnabled) sdk.markAsDelivered(activeChannel.url);
44
+ if (deliveryReceiptEnabled) await confirmAndMarkAsDelivered(sdk, activeChannel);
45
45
  } catch (e) {
46
46
  Logger.warn(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);
47
47
  }
48
48
 
49
49
  try {
50
- await sdk.markAsReadWithChannelUrls([activeChannel.url]);
50
+ await confirmAndMarkAsRead(sdk, [activeChannel]);
51
51
  } catch (e) {
52
52
  Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);
53
53
  }
@@ -58,9 +58,9 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
58
58
  var _queryRef$current;
59
59
 
60
60
  queryRef.current = createMessageQuery(activeChannel, options === null || options === void 0 ? void 0 : options.queryCreator);
61
- channelMarkAs();
61
+ channelMarkAs().catch();
62
62
 
63
- if ((_queryRef$current = queryRef.current) !== null && _queryRef$current !== void 0 && _queryRef$current.hasMore) {
63
+ if ((_queryRef$current = queryRef.current) !== null && _queryRef$current !== void 0 && _queryRef$current.hasNext) {
64
64
  var _queryRef$current2;
65
65
 
66
66
  const list = await ((_queryRef$current2 = queryRef.current) === null || _queryRef$current2 === void 0 ? void 0 : _queryRef$current2.load());
@@ -117,8 +117,8 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
117
117
  // Users
118
118
  onOperatorUpdated: channelUpdater,
119
119
  onUserLeft: channelUpdater,
120
- onUserEntered: channelUpdater,
121
- onUserExited: channelUpdater,
120
+ // onUserEntered: channelUpdater,
121
+ // onUserExited: channelUpdater,
122
122
  onUserJoined: channelUpdater,
123
123
  onUserUnbanned: channelUpdater,
124
124
  onUserMuted: channelUpdater,
@@ -150,7 +150,7 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
150
150
  const prev = useCallback(async () => {
151
151
  var _queryRef$current3;
152
152
 
153
- if (queryRef.current && (_queryRef$current3 = queryRef.current) !== null && _queryRef$current3 !== void 0 && _queryRef$current3.hasMore) {
153
+ if (queryRef.current && (_queryRef$current3 = queryRef.current) !== null && _queryRef$current3 !== void 0 && _queryRef$current3.hasNext) {
154
154
  var _queryRef$current4;
155
155
 
156
156
  const list = await ((_queryRef$current4 = queryRef.current) === null || _queryRef$current4 === void 0 ? void 0 : _queryRef$current4.load());
@@ -165,26 +165,36 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
165
165
  }, [nextMessages.length]);
166
166
  const sendUserMessage = useCallback((params, onPending) => {
167
167
  return new Promise((resolve, reject) => {
168
- const pendingMessage = activeChannel.sendUserMessage(params, (sentMessage, error) => {
169
- if (error) reject(error);else {
168
+ activeChannel.sendUserMessage(params).onPending(pendingMessage => {
169
+ if (pendingMessage.isUserMessage()) {
170
+ updateNextMessages([pendingMessage], false, sdk.currentUser.userId);
171
+ onPending === null || onPending === void 0 ? void 0 : onPending(pendingMessage);
172
+ }
173
+ }).onSucceeded(sentMessage => {
174
+ if (sentMessage.isUserMessage()) {
170
175
  updateNextMessages([sentMessage], false, sdk.currentUser.userId);
171
176
  resolve(sentMessage);
172
177
  }
178
+ }).onFailed(err => {
179
+ reject(err);
173
180
  });
174
- updateNextMessages([pendingMessage], false, sdk.currentUser.userId);
175
- onPending === null || onPending === void 0 ? void 0 : onPending(pendingMessage);
176
181
  });
177
182
  }, [activeChannel]);
178
183
  const sendFileMessage = useCallback((params, onPending) => {
179
184
  return new Promise((resolve, reject) => {
180
- const pendingMessage = activeChannel.sendFileMessage(params, (sentMessage, error) => {
181
- if (error) reject(error);else {
185
+ activeChannel.sendFileMessage(params).onPending(pendingMessage => {
186
+ if (pendingMessage.isFileMessage()) {
187
+ updateNextMessages([pendingMessage], false, sdk.currentUser.userId);
188
+ onPending === null || onPending === void 0 ? void 0 : onPending(pendingMessage);
189
+ }
190
+ }).onSucceeded(sentMessage => {
191
+ if (sentMessage.isFileMessage()) {
182
192
  updateNextMessages([sentMessage], false, sdk.currentUser.userId);
183
193
  resolve(sentMessage);
184
194
  }
195
+ }).onFailed(err => {
196
+ reject(err);
185
197
  });
186
- updateNextMessages([pendingMessage], false, sdk.currentUser.userId);
187
- onPending === null || onPending === void 0 ? void 0 : onPending(pendingMessage);
188
198
  });
189
199
  }, [activeChannel]);
190
200
  const updateUserMessage = useCallback(async (messageId, params) => {
@@ -199,7 +209,9 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
199
209
  }, [activeChannel]);
200
210
  const resendMessage = useCallback(async failedMessage => {
201
211
  const message = await (() => {
202
- if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage);
212
+ if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage); // FIXME: v4 bugs
213
+ // @ts-ignore
214
+
203
215
  if (failedMessage.isFileMessage()) return activeChannel.resendFileMessage(failedMessage);
204
216
  return null;
205
217
  })();
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useRef","Logger","isDifferentChannel","useAsyncEffect","useForceUpdate","useAppFeatures","useChannelHandler","useActiveGroupChannel","useGroupChannelMessagesReducer","createMessageQuery","channel","creator","query","createPreviousMessageListQuery","limit","reverse","HOOK_NAME","useGroupChannelMessagesWithQuery","sdk","userId","options","deliveryReceiptEnabled","queryRef","activeChannel","setActiveChannel","forceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAs","markAsDelivered","url","e","warn","markAsReadWithChannelUrls","init","uid","current","queryCreator","hasMore","list","load","currentUser","channelUpdater","isGroupChannel","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","find","c","onChannelDeleted","channelUrl","onOperatorUpdated","onUserLeft","onUserEntered","onUserExited","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","refresh","prev","next","length","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","sentMessage","error","sendFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","isUserMessage","resendUserMessage","isFileMessage","resendFileMessage","deleteMessage","sendingStatus","reqId"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport type { SendbirdFileMessage, SendbirdGroupChannel, SendbirdOpenChannel } from '@sendbird/uikit-utils';\nimport { Logger, isDifferentChannel, useAsyncEffect, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useActiveGroupChannel } from '../useActiveGroupChannel';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageQuery = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['queryCreator'],\n) => {\n if (creator) return creator();\n const query = channel.createPreviousMessageListQuery();\n query.limit = 100;\n query.reverse = true;\n return query;\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithQuery';\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const queryRef = useRef<Sendbird.PreviousMessageListQuery>();\n\n // NOTE: We cannot determine the channel object of Sendbird SDK is stale or not, so force update after setActiveChannel\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAs = async () => {\n try {\n if (deliveryReceiptEnabled) sdk.markAsDelivered(activeChannel.url);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);\n }\n try {\n await sdk.markAsReadWithChannelUrls([activeChannel.url]);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);\n }\n };\n\n const init = useCallback(\n async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(activeChannel, options?.queryCreator);\n channelMarkAs();\n if (queryRef.current?.hasMore) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser.userId);\n }\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n },\n [sdk, activeChannel.url, options?.queryCreator],\n );\n\n const channelUpdater = (channel: SendbirdGroupChannel | SendbirdOpenChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n setActiveChannel(channel);\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, HOOK_NAME, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n channelMarkAs();\n updateNextMessages([message], false, sdk.currentUser.userId);\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNextMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const channel = channels.find((c) => !isDifferentChannel(c, activeChannel));\n if (channel) channelUpdater(channel);\n },\n onChannelDeleted(channelUrl: string) {\n if (activeChannel.url === channelUrl) options?.onChannelDeleted?.();\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserLeft: channelUpdater,\n onUserEntered: channelUpdater,\n onUserExited: channelUpdater,\n onUserJoined: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [init, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n }, [init, userId]);\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useCallback(async () => {\n if (queryRef.current && queryRef.current?.hasMore) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser.userId);\n }\n }, []);\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useCallback(async () => {\n if (nextMessages.length > 0) {\n updateMessages(nextMessages, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n }, [nextMessages.length]);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n const pendingMessage = activeChannel.sendUserMessage(params, (sentMessage, error) => {\n if (error) reject(error);\n else {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n });\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n });\n },\n [activeChannel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n const pendingMessage = activeChannel.sendFileMessage(params, (sentMessage, error) => {\n if (error) reject(error);\n else {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage as SendbirdFileMessage);\n }\n });\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n });\n },\n [activeChannel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return activeChannel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateNextMessages([message], false, sdk.currentUser.userId);\n },\n [activeChannel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await activeChannel.deleteMessage(message);\n if (message.isFileMessage()) await activeChannel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n },\n [activeChannel],\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n activeChannel,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["useCallback","useRef","Logger","confirmAndMarkAsDelivered","confirmAndMarkAsRead","isDifferentChannel","useAsyncEffect","useForceUpdate","useAppFeatures","useChannelHandler","useActiveGroupChannel","useGroupChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","HOOK_NAME","useGroupChannelMessagesWithQuery","sdk","userId","options","deliveryReceiptEnabled","queryRef","activeChannel","setActiveChannel","forceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAs","e","warn","init","uid","current","queryCreator","catch","hasNext","list","load","currentUser","url","channelUpdater","isGroupChannel","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","find","c","onChannelDeleted","channelUrl","onOperatorUpdated","onUserLeft","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","refresh","prev","next","length","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","err","sendFileMessage","isFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nimport type { SendbirdBaseChannel, SendbirdGroupChannel } from '@sendbird/uikit-utils';\nimport {\n Logger,\n confirmAndMarkAsDelivered,\n confirmAndMarkAsRead,\n isDifferentChannel,\n useAsyncEffect,\n useForceUpdate,\n} from '@sendbird/uikit-utils';\nimport type { SendbirdPreviousMessageListQuery } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useActiveGroupChannel } from '../useActiveGroupChannel';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageQuery = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['queryCreator'],\n) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithQuery';\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n\n // NOTE: We cannot determine the channel object of Sendbird SDK is stale or not, so force update after setActiveChannel\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAs = async () => {\n try {\n if (deliveryReceiptEnabled) await confirmAndMarkAsDelivered(sdk, activeChannel);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);\n }\n try {\n await confirmAndMarkAsRead(sdk, [activeChannel]);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);\n }\n };\n\n const init = useCallback(\n async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(activeChannel, options?.queryCreator);\n channelMarkAs().catch();\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser.userId);\n }\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n },\n [sdk, activeChannel.url, options?.queryCreator],\n );\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n setActiveChannel(channel);\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, HOOK_NAME, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n channelMarkAs();\n updateNextMessages([message], false, sdk.currentUser.userId);\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNextMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const channel = channels.find((c) => !isDifferentChannel(c, activeChannel));\n if (channel) channelUpdater(channel);\n },\n onChannelDeleted(channelUrl: string) {\n if (activeChannel.url === channelUrl) options?.onChannelDeleted?.();\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserLeft: channelUpdater,\n // onUserEntered: channelUpdater,\n // onUserExited: channelUpdater,\n onUserJoined: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [init, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n }, [init, userId]);\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser.userId);\n }\n }, []);\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useCallback(async () => {\n if (nextMessages.length > 0) {\n updateMessages(nextMessages, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n }, [nextMessages.length]);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n activeChannel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err) => {\n reject(err);\n });\n });\n },\n [activeChannel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n activeChannel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err) => {\n reject(err);\n });\n });\n },\n [activeChannel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage);\n // FIXME: v4 bugs\n // @ts-ignore\n if (failedMessage.isFileMessage()) return activeChannel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateNextMessages([message], false, sdk.currentUser.userId);\n },\n [activeChannel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await activeChannel.deleteMessage(message);\n if (message.isFileMessage()) await activeChannel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n },\n [activeChannel],\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n activeChannel,\n };\n};\n"],"mappings":"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"}
@@ -8,13 +8,13 @@ export const useMessageOutgoingStatus = (sdk, channel, message) => {
8
8
  const currentUser = sdk.currentUser;
9
9
  const uniqId = useUniqId(HOOK_NAME);
10
10
  useChannelHandler(sdk, `${HOOK_NAME}_${uniqId}`, {
11
- onDeliveryReceiptUpdated(eventChannel) {
11
+ onUndeliveredMemberStatusUpdated(eventChannel) {
12
12
  if (isDifferentChannel(channel, eventChannel)) return;
13
13
  if (!isMyMessage(message, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
14
14
  forceUpdate();
15
15
  },
16
16
 
17
- onReadReceiptUpdated(eventChannel) {
17
+ onUnreadMemberStatusUpdated(eventChannel) {
18
18
  if (isDifferentChannel(channel, eventChannel)) return;
19
19
  if (!isMyMessage(message, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
20
20
  forceUpdate();
@@ -22,8 +22,12 @@ export const useMessageOutgoingStatus = (sdk, channel, message) => {
22
22
 
23
23
  });
24
24
  if (!message) return 'NONE';
25
- if (message.sendingStatus === 'pending') return 'PENDING';
26
- if (message.sendingStatus === 'failed') return 'FAILED';
25
+
26
+ if ('sendingStatus' in message) {
27
+ if (message.sendingStatus === 'pending') return 'PENDING';
28
+ if (message.sendingStatus === 'failed') return 'FAILED';
29
+ }
30
+
27
31
  if (channel.getUnreadMemberCount(message) === 0) return 'READ';
28
32
 
29
33
  if (features.deliveryReceiptEnabled) {
@@ -1 +1 @@
1
- {"version":3,"names":["isDifferentChannel","isMyMessage","useForceUpdate","useUniqId","useChannelHandler","useAppFeatures","HOOK_NAME","useMessageOutgoingStatus","sdk","channel","message","features","forceUpdate","currentUser","uniqId","onDeliveryReceiptUpdated","eventChannel","userId","onReadReceiptUpdated","sendingStatus","getUnreadMemberCount","deliveryReceiptEnabled","getUndeliveredMemberCount"],"sources":["useMessageOutgoingStatus.ts"],"sourcesContent":["import type {\n SendbirdAdminMessage,\n SendbirdChatSDK,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdUserMessage,\n} from '@sendbird/uikit-utils';\nimport { isDifferentChannel, isMyMessage, useForceUpdate, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../handler/useChannelHandler';\nimport { useAppFeatures } from './useAppFeatures';\n\nconst HOOK_NAME = 'useMessageOutgoingStatus';\n\nexport type SBUOutgoingStatus = 'NONE' | 'PENDING' | 'FAILED' | 'UNDELIVERED' | 'DELIVERED' | 'UNREAD' | 'READ';\n\nexport const useMessageOutgoingStatus = (\n sdk: SendbirdChatSDK,\n channel: SendbirdGroupChannel,\n message?: SendbirdFileMessage | SendbirdUserMessage | SendbirdAdminMessage | null,\n): SBUOutgoingStatus => {\n const features = useAppFeatures(sdk);\n const forceUpdate = useForceUpdate();\n const currentUser = sdk.currentUser;\n\n const uniqId = useUniqId(HOOK_NAME);\n useChannelHandler(sdk, `${HOOK_NAME}_${uniqId}`, {\n onDeliveryReceiptUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!isMyMessage(message, currentUser?.userId)) return;\n\n forceUpdate();\n },\n onReadReceiptUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!isMyMessage(message, currentUser?.userId)) return;\n\n forceUpdate();\n },\n });\n\n if (!message) return 'NONE';\n\n if (message.sendingStatus === 'pending') return 'PENDING';\n\n if (message.sendingStatus === 'failed') return 'FAILED';\n\n if (channel.getUnreadMemberCount(message) === 0) return 'READ';\n\n if (features.deliveryReceiptEnabled) {\n if (channel.getUndeliveredMemberCount(message) === 0) return 'DELIVERED';\n return 'UNDELIVERED';\n }\n\n return 'UNREAD';\n};\n"],"mappings":"AAOA,SAASA,kBAAT,EAA6BC,WAA7B,EAA0CC,cAA1C,EAA0DC,SAA1D,QAA2E,uBAA3E;AAEA,SAASC,iBAAT,QAAkC,8BAAlC;AACA,SAASC,cAAT,QAA+B,kBAA/B;AAEA,MAAMC,SAAS,GAAG,0BAAlB;AAIA,OAAO,MAAMC,wBAAwB,GAAG,CACtCC,GADsC,EAEtCC,OAFsC,EAGtCC,OAHsC,KAIhB;EACtB,MAAMC,QAAQ,GAAGN,cAAc,CAACG,GAAD,CAA/B;EACA,MAAMI,WAAW,GAAGV,cAAc,EAAlC;EACA,MAAMW,WAAW,GAAGL,GAAG,CAACK,WAAxB;EAEA,MAAMC,MAAM,GAAGX,SAAS,CAACG,SAAD,CAAxB;EACAF,iBAAiB,CAACI,GAAD,EAAO,GAAEF,SAAU,IAAGQ,MAAO,EAA7B,EAAgC;IAC/CC,wBAAwB,CAACC,YAAD,EAAe;MACrC,IAAIhB,kBAAkB,CAACS,OAAD,EAAUO,YAAV,CAAtB,EAA+C;MAC/C,IAAI,CAACf,WAAW,CAACS,OAAD,EAAUG,WAAV,aAAUA,WAAV,uBAAUA,WAAW,CAAEI,MAAvB,CAAhB,EAAgD;MAEhDL,WAAW;IACZ,CAN8C;;IAO/CM,oBAAoB,CAACF,YAAD,EAAe;MACjC,IAAIhB,kBAAkB,CAACS,OAAD,EAAUO,YAAV,CAAtB,EAA+C;MAC/C,IAAI,CAACf,WAAW,CAACS,OAAD,EAAUG,WAAV,aAAUA,WAAV,uBAAUA,WAAW,CAAEI,MAAvB,CAAhB,EAAgD;MAEhDL,WAAW;IACZ;;EAZ8C,CAAhC,CAAjB;EAeA,IAAI,CAACF,OAAL,EAAc,OAAO,MAAP;EAEd,IAAIA,OAAO,CAACS,aAAR,KAA0B,SAA9B,EAAyC,OAAO,SAAP;EAEzC,IAAIT,OAAO,CAACS,aAAR,KAA0B,QAA9B,EAAwC,OAAO,QAAP;EAExC,IAAIV,OAAO,CAACW,oBAAR,CAA6BV,OAA7B,MAA0C,CAA9C,EAAiD,OAAO,MAAP;;EAEjD,IAAIC,QAAQ,CAACU,sBAAb,EAAqC;IACnC,IAAIZ,OAAO,CAACa,yBAAR,CAAkCZ,OAAlC,MAA+C,CAAnD,EAAsD,OAAO,WAAP;IACtD,OAAO,aAAP;EACD;;EAED,OAAO,QAAP;AACD,CAvCM"}
1
+ {"version":3,"names":["isDifferentChannel","isMyMessage","useForceUpdate","useUniqId","useChannelHandler","useAppFeatures","HOOK_NAME","useMessageOutgoingStatus","sdk","channel","message","features","forceUpdate","currentUser","uniqId","onUndeliveredMemberStatusUpdated","eventChannel","userId","onUnreadMemberStatusUpdated","sendingStatus","getUnreadMemberCount","deliveryReceiptEnabled","getUndeliveredMemberCount"],"sources":["useMessageOutgoingStatus.ts"],"sourcesContent":["import type { SendbirdChatSDK, SendbirdGroupChannel, SendbirdMessage } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, isMyMessage, useForceUpdate, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../handler/useChannelHandler';\nimport { useAppFeatures } from './useAppFeatures';\n\nconst HOOK_NAME = 'useMessageOutgoingStatus';\n\nexport type SBUOutgoingStatus = 'NONE' | 'PENDING' | 'FAILED' | 'UNDELIVERED' | 'DELIVERED' | 'UNREAD' | 'READ';\n\nexport const useMessageOutgoingStatus = (\n sdk: SendbirdChatSDK,\n channel: SendbirdGroupChannel,\n message?: SendbirdMessage | null,\n): SBUOutgoingStatus => {\n const features = useAppFeatures(sdk);\n const forceUpdate = useForceUpdate();\n const currentUser = sdk.currentUser;\n\n const uniqId = useUniqId(HOOK_NAME);\n useChannelHandler(sdk, `${HOOK_NAME}_${uniqId}`, {\n onUndeliveredMemberStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!isMyMessage(message, currentUser?.userId)) return;\n\n forceUpdate();\n },\n onUnreadMemberStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!isMyMessage(message, currentUser?.userId)) return;\n\n forceUpdate();\n },\n });\n\n if (!message) return 'NONE';\n\n if ('sendingStatus' in message) {\n if (message.sendingStatus === 'pending') return 'PENDING';\n if (message.sendingStatus === 'failed') return 'FAILED';\n }\n\n if (channel.getUnreadMemberCount(message) === 0) return 'READ';\n\n if (features.deliveryReceiptEnabled) {\n if (channel.getUndeliveredMemberCount(message) === 0) return 'DELIVERED';\n return 'UNDELIVERED';\n }\n\n return 'UNREAD';\n};\n"],"mappings":"AACA,SAASA,kBAAT,EAA6BC,WAA7B,EAA0CC,cAA1C,EAA0DC,SAA1D,QAA2E,uBAA3E;AAEA,SAASC,iBAAT,QAAkC,8BAAlC;AACA,SAASC,cAAT,QAA+B,kBAA/B;AAEA,MAAMC,SAAS,GAAG,0BAAlB;AAIA,OAAO,MAAMC,wBAAwB,GAAG,CACtCC,GADsC,EAEtCC,OAFsC,EAGtCC,OAHsC,KAIhB;EACtB,MAAMC,QAAQ,GAAGN,cAAc,CAACG,GAAD,CAA/B;EACA,MAAMI,WAAW,GAAGV,cAAc,EAAlC;EACA,MAAMW,WAAW,GAAGL,GAAG,CAACK,WAAxB;EAEA,MAAMC,MAAM,GAAGX,SAAS,CAACG,SAAD,CAAxB;EACAF,iBAAiB,CAACI,GAAD,EAAO,GAAEF,SAAU,IAAGQ,MAAO,EAA7B,EAAgC;IAC/CC,gCAAgC,CAACC,YAAD,EAAe;MAC7C,IAAIhB,kBAAkB,CAACS,OAAD,EAAUO,YAAV,CAAtB,EAA+C;MAC/C,IAAI,CAACf,WAAW,CAACS,OAAD,EAAUG,WAAV,aAAUA,WAAV,uBAAUA,WAAW,CAAEI,MAAvB,CAAhB,EAAgD;MAEhDL,WAAW;IACZ,CAN8C;;IAO/CM,2BAA2B,CAACF,YAAD,EAAe;MACxC,IAAIhB,kBAAkB,CAACS,OAAD,EAAUO,YAAV,CAAtB,EAA+C;MAC/C,IAAI,CAACf,WAAW,CAACS,OAAD,EAAUG,WAAV,aAAUA,WAAV,uBAAUA,WAAW,CAAEI,MAAvB,CAAhB,EAAgD;MAEhDL,WAAW;IACZ;;EAZ8C,CAAhC,CAAjB;EAeA,IAAI,CAACF,OAAL,EAAc,OAAO,MAAP;;EAEd,IAAI,mBAAmBA,OAAvB,EAAgC;IAC9B,IAAIA,OAAO,CAACS,aAAR,KAA0B,SAA9B,EAAyC,OAAO,SAAP;IACzC,IAAIT,OAAO,CAACS,aAAR,KAA0B,QAA9B,EAAwC,OAAO,QAAP;EACzC;;EAED,IAAIV,OAAO,CAACW,oBAAR,CAA6BV,OAA7B,MAA0C,CAA9C,EAAiD,OAAO,MAAP;;EAEjD,IAAIC,QAAQ,CAACU,sBAAb,EAAqC;IACnC,IAAIZ,OAAO,CAACa,yBAAR,CAAkCZ,OAAlC,MAA+C,CAAnD,EAAsD,OAAO,WAAP;IACtD,OAAO,aAAP;EACD;;EAED,OAAO,QAAP;AACD,CAxCM"}
@@ -1,18 +1,24 @@
1
1
  import { useCallback, useState } from 'react';
2
+ import { PushTriggerOption } from '@sendbird/chat';
2
3
  import { Logger, useAsyncEffect } from '@sendbird/uikit-utils';
4
+ const PushTriggerMap = {
5
+ 'all': PushTriggerOption.ALL,
6
+ 'mention_only': PushTriggerOption.MENTION_ONLY,
7
+ 'off': PushTriggerOption.OFF,
8
+ 'default': PushTriggerOption.DEFAULT
9
+ };
3
10
  export const usePushTrigger = sdk => {
4
- const [option, setOption] = useState('off');
11
+ const [option, setOption] = useState(PushTriggerOption.DEFAULT);
5
12
  const updateOption = useCallback(async value => {
6
13
  try {
7
- await sdk.setPushTriggerOption(value);
8
- setOption(value);
14
+ const _option = PushTriggerMap[value];
15
+ await sdk.setPushTriggerOption(_option).then(() => setOption(_option));
9
16
  } catch (e) {
10
17
  Logger.warn('[usePushTrigger]', 'Cannot update push trigger option', e);
11
18
  }
12
19
  }, [sdk, sdk.currentUser]);
13
20
  useAsyncEffect(async () => {
14
- const currentOption = await sdk.getPushTriggerOption();
15
- setOption(currentOption);
21
+ setOption(await sdk.getPushTriggerOption());
16
22
  }, [sdk, sdk.currentUser]);
17
23
  return {
18
24
  option,
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useState","Logger","useAsyncEffect","usePushTrigger","sdk","option","setOption","updateOption","value","setPushTriggerOption","e","warn","currentUser","currentOption","getPushTriggerOption"],"sources":["usePushTrigger.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { Logger, useAsyncEffect } from '@sendbird/uikit-utils';\n\ntype PushTriggerOptionType = 'all' | 'mention_only' | 'off';\nexport const usePushTrigger = (sdk: SendbirdChatSDK) => {\n const [option, setOption] = useState<PushTriggerOptionType>('off');\n\n const updateOption = useCallback(\n async (value: PushTriggerOptionType) => {\n try {\n await sdk.setPushTriggerOption(value);\n setOption(value);\n } catch (e) {\n Logger.warn('[usePushTrigger]', 'Cannot update push trigger option', e);\n }\n },\n [sdk, sdk.currentUser],\n );\n\n useAsyncEffect(async () => {\n const currentOption = await sdk.getPushTriggerOption();\n setOption(currentOption as PushTriggerOptionType);\n }, [sdk, sdk.currentUser]);\n\n return {\n option,\n updateOption,\n };\n};\n"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,QAAtB,QAAsC,OAAtC;AAGA,SAASC,MAAT,EAAiBC,cAAjB,QAAuC,uBAAvC;AAGA,OAAO,MAAMC,cAAc,GAAIC,GAAD,IAA0B;EACtD,MAAM,CAACC,MAAD,EAASC,SAAT,IAAsBN,QAAQ,CAAwB,KAAxB,CAApC;EAEA,MAAMO,YAAY,GAAGR,WAAW,CAC9B,MAAOS,KAAP,IAAwC;IACtC,IAAI;MACF,MAAMJ,GAAG,CAACK,oBAAJ,CAAyBD,KAAzB,CAAN;MACAF,SAAS,CAACE,KAAD,CAAT;IACD,CAHD,CAGE,OAAOE,CAAP,EAAU;MACVT,MAAM,CAACU,IAAP,CAAY,kBAAZ,EAAgC,mCAAhC,EAAqED,CAArE;IACD;EACF,CAR6B,EAS9B,CAACN,GAAD,EAAMA,GAAG,CAACQ,WAAV,CAT8B,CAAhC;EAYAV,cAAc,CAAC,YAAY;IACzB,MAAMW,aAAa,GAAG,MAAMT,GAAG,CAACU,oBAAJ,EAA5B;IACAR,SAAS,CAACO,aAAD,CAAT;EACD,CAHa,EAGX,CAACT,GAAD,EAAMA,GAAG,CAACQ,WAAV,CAHW,CAAd;EAKA,OAAO;IACLP,MADK;IAELE;EAFK,CAAP;AAID,CAxBM"}
1
+ {"version":3,"names":["useCallback","useState","PushTriggerOption","Logger","useAsyncEffect","PushTriggerMap","ALL","MENTION_ONLY","OFF","DEFAULT","usePushTrigger","sdk","option","setOption","updateOption","value","_option","setPushTriggerOption","then","e","warn","currentUser","getPushTriggerOption"],"sources":["usePushTrigger.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\nimport { PushTriggerOption } from '@sendbird/chat';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { Logger, useAsyncEffect } from '@sendbird/uikit-utils';\n\nconst PushTriggerMap = {\n 'all': PushTriggerOption.ALL,\n 'mention_only': PushTriggerOption.MENTION_ONLY,\n 'off': PushTriggerOption.OFF,\n 'default': PushTriggerOption.DEFAULT,\n};\n\nexport const usePushTrigger = (sdk: SendbirdChatSDK) => {\n const [option, setOption] = useState<PushTriggerOption>(PushTriggerOption.DEFAULT);\n\n const updateOption = useCallback(\n async (value: keyof typeof PushTriggerMap) => {\n try {\n const _option = PushTriggerMap[value];\n await sdk.setPushTriggerOption(_option).then(() => setOption(_option));\n } catch (e) {\n Logger.warn('[usePushTrigger]', 'Cannot update push trigger option', e);\n }\n },\n [sdk, sdk.currentUser],\n );\n\n useAsyncEffect(async () => {\n setOption(await sdk.getPushTriggerOption());\n }, [sdk, sdk.currentUser]);\n\n return {\n option,\n updateOption,\n };\n};\n"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,QAAtB,QAAsC,OAAtC;AAEA,SAASC,iBAAT,QAAkC,gBAAlC;AAEA,SAASC,MAAT,EAAiBC,cAAjB,QAAuC,uBAAvC;AAEA,MAAMC,cAAc,GAAG;EACrB,OAAOH,iBAAiB,CAACI,GADJ;EAErB,gBAAgBJ,iBAAiB,CAACK,YAFb;EAGrB,OAAOL,iBAAiB,CAACM,GAHJ;EAIrB,WAAWN,iBAAiB,CAACO;AAJR,CAAvB;AAOA,OAAO,MAAMC,cAAc,GAAIC,GAAD,IAA0B;EACtD,MAAM,CAACC,MAAD,EAASC,SAAT,IAAsBZ,QAAQ,CAAoBC,iBAAiB,CAACO,OAAtC,CAApC;EAEA,MAAMK,YAAY,GAAGd,WAAW,CAC9B,MAAOe,KAAP,IAA8C;IAC5C,IAAI;MACF,MAAMC,OAAO,GAAGX,cAAc,CAACU,KAAD,CAA9B;MACA,MAAMJ,GAAG,CAACM,oBAAJ,CAAyBD,OAAzB,EAAkCE,IAAlC,CAAuC,MAAML,SAAS,CAACG,OAAD,CAAtD,CAAN;IACD,CAHD,CAGE,OAAOG,CAAP,EAAU;MACVhB,MAAM,CAACiB,IAAP,CAAY,kBAAZ,EAAgC,mCAAhC,EAAqED,CAArE;IACD;EACF,CAR6B,EAS9B,CAACR,GAAD,EAAMA,GAAG,CAACU,WAAV,CAT8B,CAAhC;EAYAjB,cAAc,CAAC,YAAY;IACzBS,SAAS,CAAC,MAAMF,GAAG,CAACW,oBAAJ,EAAP,CAAT;EACD,CAFa,EAEX,CAACX,GAAD,EAAMA,GAAG,CAACU,WAAV,CAFW,CAAd;EAIA,OAAO;IACLT,MADK;IAELE;EAFK,CAAP;AAID,CAvBM"}
@@ -7,10 +7,12 @@ export const useTotalUnreadChannelCount = (sdk, params) => {
7
7
  const id = useUniqId(HOOK_NAME);
8
8
  const [unreadChannelCount, setUnreadChannelCount] = useState(0);
9
9
  useAsyncEffect(async () => {
10
- setUnreadChannelCount(await sdk.getTotalUnreadChannelCount());
10
+ setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());
11
11
  }, [sdk]);
12
12
  useUserEventHandler(sdk, HOOK_NAME + id, {
13
- onTotalUnreadMessageCountUpdated: async () => setUnreadChannelCount(await sdk.getTotalUnreadChannelCount())
13
+ onTotalUnreadMessageCountUpdated: async () => {
14
+ setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());
15
+ }
14
16
  });
15
17
  return truncatedBadgeCount(unreadChannelCount, params === null || params === void 0 ? void 0 : params.maxCount);
16
18
  };
@@ -1 +1 @@
1
- {"version":3,"names":["useState","truncatedBadgeCount","useAsyncEffect","useUniqId","useUserEventHandler","HOOK_NAME","useTotalUnreadChannelCount","sdk","params","id","unreadChannelCount","setUnreadChannelCount","getTotalUnreadChannelCount","onTotalUnreadMessageCountUpdated","maxCount"],"sources":["useTotalUnreadChannelCount.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedBadgeCount, useAsyncEffect } from '@sendbird/uikit-utils';\nimport { useUniqId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Params = {\n maxCount?: number;\n};\nconst HOOK_NAME = 'useTotalUnreadChannelCount';\nexport const useTotalUnreadChannelCount = (sdk: SendbirdChatSDK, params?: Params) => {\n const id = useUniqId(HOOK_NAME);\n const [unreadChannelCount, setUnreadChannelCount] = useState(0);\n\n useAsyncEffect(async () => {\n setUnreadChannelCount(await sdk.getTotalUnreadChannelCount());\n }, [sdk]);\n\n useUserEventHandler(sdk, HOOK_NAME + id, {\n onTotalUnreadMessageCountUpdated: async () => setUnreadChannelCount(await sdk.getTotalUnreadChannelCount()),\n });\n\n return truncatedBadgeCount(unreadChannelCount, params?.maxCount);\n};\n"],"mappings":"AAAA,SAASA,QAAT,QAAyB,OAAzB;AAGA,SAASC,mBAAT,EAA8BC,cAA9B,QAAoD,uBAApD;AACA,SAASC,SAAT,QAA0B,uBAA1B;AAEA,SAASC,mBAAT,QAAoC,gCAApC;AAKA,MAAMC,SAAS,GAAG,4BAAlB;AACA,OAAO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,MAAvB,KAA2C;EACnF,MAAMC,EAAE,GAAGN,SAAS,CAACE,SAAD,CAApB;EACA,MAAM,CAACK,kBAAD,EAAqBC,qBAArB,IAA8CX,QAAQ,CAAC,CAAD,CAA5D;EAEAE,cAAc,CAAC,YAAY;IACzBS,qBAAqB,CAAC,MAAMJ,GAAG,CAACK,0BAAJ,EAAP,CAArB;EACD,CAFa,EAEX,CAACL,GAAD,CAFW,CAAd;EAIAH,mBAAmB,CAACG,GAAD,EAAMF,SAAS,GAAGI,EAAlB,EAAsB;IACvCI,gCAAgC,EAAE,YAAYF,qBAAqB,CAAC,MAAMJ,GAAG,CAACK,0BAAJ,EAAP;EAD5B,CAAtB,CAAnB;EAIA,OAAOX,mBAAmB,CAACS,kBAAD,EAAqBF,MAArB,aAAqBA,MAArB,uBAAqBA,MAAM,CAAEM,QAA7B,CAA1B;AACD,CAbM"}
1
+ {"version":3,"names":["useState","truncatedBadgeCount","useAsyncEffect","useUniqId","useUserEventHandler","HOOK_NAME","useTotalUnreadChannelCount","sdk","params","id","unreadChannelCount","setUnreadChannelCount","groupChannel","getTotalUnreadChannelCount","onTotalUnreadMessageCountUpdated","maxCount"],"sources":["useTotalUnreadChannelCount.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedBadgeCount, useAsyncEffect } from '@sendbird/uikit-utils';\nimport { useUniqId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Params = {\n maxCount?: number;\n};\nconst HOOK_NAME = 'useTotalUnreadChannelCount';\nexport const useTotalUnreadChannelCount = (sdk: SendbirdChatSDK, params?: Params) => {\n const id = useUniqId(HOOK_NAME);\n const [unreadChannelCount, setUnreadChannelCount] = useState(0);\n\n useAsyncEffect(async () => {\n setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());\n }, [sdk]);\n\n useUserEventHandler(sdk, HOOK_NAME + id, {\n onTotalUnreadMessageCountUpdated: async () => {\n setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());\n },\n });\n\n return truncatedBadgeCount(unreadChannelCount, params?.maxCount);\n};\n"],"mappings":"AAAA,SAASA,QAAT,QAAyB,OAAzB;AAGA,SAASC,mBAAT,EAA8BC,cAA9B,QAAoD,uBAApD;AACA,SAASC,SAAT,QAA0B,uBAA1B;AAEA,SAASC,mBAAT,QAAoC,gCAApC;AAKA,MAAMC,SAAS,GAAG,4BAAlB;AACA,OAAO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,MAAvB,KAA2C;EACnF,MAAMC,EAAE,GAAGN,SAAS,CAACE,SAAD,CAApB;EACA,MAAM,CAACK,kBAAD,EAAqBC,qBAArB,IAA8CX,QAAQ,CAAC,CAAD,CAA5D;EAEAE,cAAc,CAAC,YAAY;IACzBS,qBAAqB,CAAC,MAAMJ,GAAG,CAACK,YAAJ,CAAiBC,0BAAjB,EAAP,CAArB;EACD,CAFa,EAEX,CAACN,GAAD,CAFW,CAAd;EAIAH,mBAAmB,CAACG,GAAD,EAAMF,SAAS,GAAGI,EAAlB,EAAsB;IACvCK,gCAAgC,EAAE,YAAY;MAC5CH,qBAAqB,CAAC,MAAMJ,GAAG,CAACK,YAAJ,CAAiBC,0BAAjB,EAAP,CAArB;IACD;EAHsC,CAAtB,CAAnB;EAMA,OAAOZ,mBAAmB,CAACS,kBAAD,EAAqBF,MAArB,aAAqBA,MAArB,uBAAqBA,MAAM,CAAEO,QAA7B,CAA1B;AACD,CAfM"}
@@ -1,28 +1,23 @@
1
1
  import { useState } from 'react';
2
- import { truncatedBadgeCount, useAsyncEffect } from '@sendbird/uikit-utils';
3
- import { useUniqId } from '@sendbird/uikit-utils';
2
+ import { SuperChannelFilter } from '@sendbird/chat/groupChannel';
3
+ import { truncatedBadgeCount, useAsyncEffect, useUniqId } from '@sendbird/uikit-utils';
4
4
  import { useUserEventHandler } from '../handler/useUserEventHandler';
5
5
  const HOOK_NAME = 'useTotalUnreadMessageCount';
6
- export const useTotalUnreadMessageCount = (sdk, params) => {
6
+ export const useTotalUnreadMessageCount = (sdk, options) => {
7
+ var _options$params, _options$params2;
8
+
7
9
  const id = useUniqId(HOOK_NAME);
8
10
  const [unreadMessageCount, setUnreadMessageCount] = useState(0);
9
11
  useAsyncEffect(async () => {
10
- let param;
11
-
12
- if (params !== null && params !== void 0 && params.paramCreator) {
13
- param = params.paramCreator();
14
- } else {
15
- const params = new sdk.GroupChannelTotalUnreadMessageCountParams();
16
- params.superChannelFilter = 'all';
17
- param = params;
18
- }
19
-
20
- const unreadCount = await sdk.getTotalUnreadMessageCount(param);
12
+ const unreadCount = await sdk.groupChannel.getTotalUnreadMessageCount({
13
+ superChannelFilter: SuperChannelFilter.ALL,
14
+ ...(options === null || options === void 0 ? void 0 : options.params)
15
+ });
21
16
  setUnreadMessageCount(unreadCount);
22
- }, [sdk, params === null || params === void 0 ? void 0 : params.paramCreator]);
17
+ }, [sdk, options === null || options === void 0 ? void 0 : (_options$params = options.params) === null || _options$params === void 0 ? void 0 : _options$params.superChannelFilter, options === null || options === void 0 ? void 0 : (_options$params2 = options.params) === null || _options$params2 === void 0 ? void 0 : _options$params2.channelCustomTypesFilter]);
23
18
  useUserEventHandler(sdk, `${HOOK_NAME}_${id}`, {
24
19
  onTotalUnreadMessageCountUpdated: totalCount => setUnreadMessageCount(totalCount)
25
- }, [sdk]);
26
- return truncatedBadgeCount(unreadMessageCount, params === null || params === void 0 ? void 0 : params.maxCount);
20
+ });
21
+ return truncatedBadgeCount(unreadMessageCount, options === null || options === void 0 ? void 0 : options.maxCount);
27
22
  };
28
23
  //# sourceMappingURL=useTotalUnreadMessageCount.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useState","truncatedBadgeCount","useAsyncEffect","useUniqId","useUserEventHandler","HOOK_NAME","useTotalUnreadMessageCount","sdk","params","id","unreadMessageCount","setUnreadMessageCount","param","paramCreator","GroupChannelTotalUnreadMessageCountParams","superChannelFilter","unreadCount","getTotalUnreadMessageCount","onTotalUnreadMessageCountUpdated","totalCount","maxCount"],"sources":["useTotalUnreadMessageCount.ts"],"sourcesContent":["import { useState } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedBadgeCount, useAsyncEffect } from '@sendbird/uikit-utils';\nimport { useUniqId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Params = {\n paramCreator?: () => Sendbird.GroupChannelTotalUnreadMessageCountParams;\n maxCount?: number;\n};\n\nconst HOOK_NAME = 'useTotalUnreadMessageCount';\nexport const useTotalUnreadMessageCount = (sdk: SendbirdChatSDK, params?: Params) => {\n const id = useUniqId(HOOK_NAME);\n const [unreadMessageCount, setUnreadMessageCount] = useState(0);\n\n useAsyncEffect(async () => {\n let param;\n if (params?.paramCreator) {\n param = params.paramCreator();\n } else {\n const params = new sdk.GroupChannelTotalUnreadMessageCountParams();\n params.superChannelFilter = 'all';\n param = params;\n }\n const unreadCount = await sdk.getTotalUnreadMessageCount(param);\n setUnreadMessageCount(unreadCount);\n }, [sdk, params?.paramCreator]);\n\n useUserEventHandler(\n sdk,\n `${HOOK_NAME}_${id}`,\n {\n onTotalUnreadMessageCountUpdated: (totalCount: number) => setUnreadMessageCount(totalCount),\n },\n [sdk],\n );\n\n return truncatedBadgeCount(unreadMessageCount, params?.maxCount);\n};\n"],"mappings":"AAAA,SAASA,QAAT,QAAyB,OAAzB;AAIA,SAASC,mBAAT,EAA8BC,cAA9B,QAAoD,uBAApD;AACA,SAASC,SAAT,QAA0B,uBAA1B;AAEA,SAASC,mBAAT,QAAoC,gCAApC;AAOA,MAAMC,SAAS,GAAG,4BAAlB;AACA,OAAO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,MAAvB,KAA2C;EACnF,MAAMC,EAAE,GAAGN,SAAS,CAACE,SAAD,CAApB;EACA,MAAM,CAACK,kBAAD,EAAqBC,qBAArB,IAA8CX,QAAQ,CAAC,CAAD,CAA5D;EAEAE,cAAc,CAAC,YAAY;IACzB,IAAIU,KAAJ;;IACA,IAAIJ,MAAJ,aAAIA,MAAJ,eAAIA,MAAM,CAAEK,YAAZ,EAA0B;MACxBD,KAAK,GAAGJ,MAAM,CAACK,YAAP,EAAR;IACD,CAFD,MAEO;MACL,MAAML,MAAM,GAAG,IAAID,GAAG,CAACO,yCAAR,EAAf;MACAN,MAAM,CAACO,kBAAP,GAA4B,KAA5B;MACAH,KAAK,GAAGJ,MAAR;IACD;;IACD,MAAMQ,WAAW,GAAG,MAAMT,GAAG,CAACU,0BAAJ,CAA+BL,KAA/B,CAA1B;IACAD,qBAAqB,CAACK,WAAD,CAArB;EACD,CAXa,EAWX,CAACT,GAAD,EAAMC,MAAN,aAAMA,MAAN,uBAAMA,MAAM,CAAEK,YAAd,CAXW,CAAd;EAaAT,mBAAmB,CACjBG,GADiB,EAEhB,GAAEF,SAAU,IAAGI,EAAG,EAFF,EAGjB;IACES,gCAAgC,EAAGC,UAAD,IAAwBR,qBAAqB,CAACQ,UAAD;EADjF,CAHiB,EAMjB,CAACZ,GAAD,CANiB,CAAnB;EASA,OAAON,mBAAmB,CAACS,kBAAD,EAAqBF,MAArB,aAAqBA,MAArB,uBAAqBA,MAAM,CAAEY,QAA7B,CAA1B;AACD,CA3BM"}
1
+ {"version":3,"names":["useState","SuperChannelFilter","truncatedBadgeCount","useAsyncEffect","useUniqId","useUserEventHandler","HOOK_NAME","useTotalUnreadMessageCount","sdk","options","id","unreadMessageCount","setUnreadMessageCount","unreadCount","groupChannel","getTotalUnreadMessageCount","superChannelFilter","ALL","params","channelCustomTypesFilter","onTotalUnreadMessageCountUpdated","totalCount","maxCount"],"sources":["useTotalUnreadMessageCount.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { SuperChannelFilter, TotalUnreadMessageCountParams } from '@sendbird/chat/groupChannel';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedBadgeCount, useAsyncEffect, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Options = {\n params?: TotalUnreadMessageCountParams;\n maxCount?: number;\n};\n\nconst HOOK_NAME = 'useTotalUnreadMessageCount';\nexport const useTotalUnreadMessageCount = (sdk: SendbirdChatSDK, options?: Options) => {\n const id = useUniqId(HOOK_NAME);\n const [unreadMessageCount, setUnreadMessageCount] = useState(0);\n\n useAsyncEffect(async () => {\n const unreadCount = await sdk.groupChannel.getTotalUnreadMessageCount({\n superChannelFilter: SuperChannelFilter.ALL,\n ...options?.params,\n });\n setUnreadMessageCount(unreadCount);\n }, [sdk, options?.params?.superChannelFilter, options?.params?.channelCustomTypesFilter]);\n\n useUserEventHandler(sdk, `${HOOK_NAME}_${id}`, {\n onTotalUnreadMessageCountUpdated: (totalCount: number) => setUnreadMessageCount(totalCount),\n });\n\n return truncatedBadgeCount(unreadMessageCount, options?.maxCount);\n};\n"],"mappings":"AAAA,SAASA,QAAT,QAAyB,OAAzB;AAEA,SAASC,kBAAT,QAAkE,6BAAlE;AAEA,SAASC,mBAAT,EAA8BC,cAA9B,EAA8CC,SAA9C,QAA+D,uBAA/D;AAEA,SAASC,mBAAT,QAAoC,gCAApC;AAOA,MAAMC,SAAS,GAAG,4BAAlB;AACA,OAAO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,OAAvB,KAA6C;EAAA;;EACrF,MAAMC,EAAE,GAAGN,SAAS,CAACE,SAAD,CAApB;EACA,MAAM,CAACK,kBAAD,EAAqBC,qBAArB,IAA8CZ,QAAQ,CAAC,CAAD,CAA5D;EAEAG,cAAc,CAAC,YAAY;IACzB,MAAMU,WAAW,GAAG,MAAML,GAAG,CAACM,YAAJ,CAAiBC,0BAAjB,CAA4C;MACpEC,kBAAkB,EAAEf,kBAAkB,CAACgB,GAD6B;MAEpE,IAAGR,OAAH,aAAGA,OAAH,uBAAGA,OAAO,CAAES,MAAZ;IAFoE,CAA5C,CAA1B;IAIAN,qBAAqB,CAACC,WAAD,CAArB;EACD,CANa,EAMX,CAACL,GAAD,EAAMC,OAAN,aAAMA,OAAN,0CAAMA,OAAO,CAAES,MAAf,oDAAM,gBAAiBF,kBAAvB,EAA2CP,OAA3C,aAA2CA,OAA3C,2CAA2CA,OAAO,CAAES,MAApD,qDAA2C,iBAAiBC,wBAA5D,CANW,CAAd;EAQAd,mBAAmB,CAACG,GAAD,EAAO,GAAEF,SAAU,IAAGI,EAAG,EAAzB,EAA4B;IAC7CU,gCAAgC,EAAGC,UAAD,IAAwBT,qBAAqB,CAACS,UAAD;EADlC,CAA5B,CAAnB;EAIA,OAAOnB,mBAAmB,CAACS,kBAAD,EAAqBF,OAArB,aAAqBA,OAArB,uBAAqBA,OAAO,CAAEa,QAA9B,CAA1B;AACD,CAjBM"}
@@ -1,4 +1,5 @@
1
1
  import { useEffect, useLayoutEffect, useRef } from 'react';
2
+ import { GroupChannelHandler } from '@sendbird/chat/groupChannel';
2
3
  import { Logger } from '@sendbird/uikit-utils';
3
4
  export const useChannelHandler = (sdk, handlerId, hookHandler) => {
4
5
  const handlerRef = useRef(hookHandler);
@@ -7,7 +8,7 @@ export const useChannelHandler = (sdk, handlerId, hookHandler) => {
7
8
  });
8
9
  useEffect(() => {
9
10
  Logger.debug('[useChannelHandler] hook called by', handlerId);
10
- const handler = new sdk.ChannelHandler();
11
+ const handler = new GroupChannelHandler();
11
12
  const handlerKeys = Object.keys(handler);
12
13
  handlerKeys.forEach(key => {
13
14
  handler[key] = function () {
@@ -21,8 +22,8 @@ export const useChannelHandler = (sdk, handlerId, hookHandler) => {
21
22
  (_handlerRef$current$k = (_handlerRef$current = handlerRef.current)[key]) === null || _handlerRef$current$k === void 0 ? void 0 : _handlerRef$current$k.call(_handlerRef$current, ...args);
22
23
  };
23
24
  });
24
- sdk.addChannelHandler(handlerId, handler);
25
- return () => sdk.removeChannelHandler(handlerId);
25
+ sdk.groupChannel.addGroupChannelHandler(handlerId, handler);
26
+ return () => sdk.groupChannel.removeGroupChannelHandler(handlerId);
26
27
  }, [sdk, handlerId]);
27
28
  };
28
29
  //# sourceMappingURL=useChannelHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useLayoutEffect","useRef","Logger","useChannelHandler","sdk","handlerId","hookHandler","handlerRef","current","debug","handler","ChannelHandler","handlerKeys","Object","keys","forEach","key","args","addChannelHandler","removeChannelHandler"],"sources":["useChannelHandler.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport { Logger, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useChannelHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<Sendbird.ChannelHandler>,\n) => {\n const handlerRef = useRef(hookHandler);\n useLayoutEffect(() => {\n handlerRef.current = hookHandler;\n });\n\n useEffect(() => {\n Logger.debug('[useChannelHandler] hook called by', handlerId);\n\n const handler = new sdk.ChannelHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n handlerKeys.forEach((key) => {\n handler[key] = (...args: unknown[]) => {\n // @ts-ignore\n handlerRef.current[key]?.(...args);\n };\n });\n\n sdk.addChannelHandler(handlerId, handler);\n return () => sdk.removeChannelHandler(handlerId);\n }, [sdk, handlerId]);\n};\n"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,eAApB,EAAqCC,MAArC,QAAmD,OAAnD;AAGA,SAASC,MAAT,QAAwC,uBAAxC;AAEA,OAAO,MAAMC,iBAAiB,GAAG,CAC/BC,GAD+B,EAE/BC,SAF+B,EAG/BC,WAH+B,KAI5B;EACH,MAAMC,UAAU,GAAGN,MAAM,CAACK,WAAD,CAAzB;EACAN,eAAe,CAAC,MAAM;IACpBO,UAAU,CAACC,OAAX,GAAqBF,WAArB;EACD,CAFc,CAAf;EAIAP,SAAS,CAAC,MAAM;IACdG,MAAM,CAACO,KAAP,CAAa,oCAAb,EAAmDJ,SAAnD;IAEA,MAAMK,OAAO,GAAG,IAAIN,GAAG,CAACO,cAAR,EAAhB;IACA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYJ,OAAZ,CAApB;IACAE,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3BN,OAAO,CAACM,GAAD,CAAP,GAAe,YAAwB;QAAA;;QAAA,kCAApBC,IAAoB;UAApBA,IAAoB;QAAA;;QACrC;QACA,gDAAAV,UAAU,CAACC,OAAX,EAAmBQ,GAAnB,2GAA0B,GAAGC,IAA7B;MACD,CAHD;IAID,CALD;IAOAb,GAAG,CAACc,iBAAJ,CAAsBb,SAAtB,EAAiCK,OAAjC;IACA,OAAO,MAAMN,GAAG,CAACe,oBAAJ,CAAyBd,SAAzB,CAAb;EACD,CAdQ,EAcN,CAACD,GAAD,EAAMC,SAAN,CAdM,CAAT;AAeD,CAzBM"}
1
+ {"version":3,"names":["useEffect","useLayoutEffect","useRef","GroupChannelHandler","Logger","useChannelHandler","sdk","handlerId","hookHandler","handlerRef","current","debug","handler","handlerKeys","Object","keys","forEach","key","args","groupChannel","addGroupChannelHandler","removeGroupChannelHandler"],"sources":["useChannelHandler.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { GroupChannelHandler } from '@sendbird/chat/groupChannel';\nimport { Logger, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useChannelHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<GroupChannelHandler>,\n) => {\n const handlerRef = useRef(hookHandler);\n useLayoutEffect(() => {\n handlerRef.current = hookHandler;\n });\n\n useEffect(() => {\n Logger.debug('[useChannelHandler] hook called by', handlerId);\n\n const handler = new GroupChannelHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n handlerKeys.forEach((key) => {\n handler[key] = (...args: unknown[]) => {\n // @ts-ignore\n handlerRef.current[key]?.(...args);\n };\n });\n\n sdk.groupChannel.addGroupChannelHandler(handlerId, handler);\n return () => sdk.groupChannel.removeGroupChannelHandler(handlerId);\n }, [sdk, handlerId]);\n};\n"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,eAApB,EAAqCC,MAArC,QAAmD,OAAnD;AAEA,SAASC,mBAAT,QAAoC,6BAApC;AACA,SAASC,MAAT,QAAwC,uBAAxC;AAEA,OAAO,MAAMC,iBAAiB,GAAG,CAC/BC,GAD+B,EAE/BC,SAF+B,EAG/BC,WAH+B,KAI5B;EACH,MAAMC,UAAU,GAAGP,MAAM,CAACM,WAAD,CAAzB;EACAP,eAAe,CAAC,MAAM;IACpBQ,UAAU,CAACC,OAAX,GAAqBF,WAArB;EACD,CAFc,CAAf;EAIAR,SAAS,CAAC,MAAM;IACdI,MAAM,CAACO,KAAP,CAAa,oCAAb,EAAmDJ,SAAnD;IAEA,MAAMK,OAAO,GAAG,IAAIT,mBAAJ,EAAhB;IACA,MAAMU,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYH,OAAZ,CAApB;IACAC,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3BL,OAAO,CAACK,GAAD,CAAP,GAAe,YAAwB;QAAA;;QAAA,kCAApBC,IAAoB;UAApBA,IAAoB;QAAA;;QACrC;QACA,gDAAAT,UAAU,CAACC,OAAX,EAAmBO,GAAnB,2GAA0B,GAAGC,IAA7B;MACD,CAHD;IAID,CALD;IAOAZ,GAAG,CAACa,YAAJ,CAAiBC,sBAAjB,CAAwCb,SAAxC,EAAmDK,OAAnD;IACA,OAAO,MAAMN,GAAG,CAACa,YAAJ,CAAiBE,yBAAjB,CAA2Cd,SAA3C,CAAb;EACD,CAdQ,EAcN,CAACD,GAAD,EAAMC,SAAN,CAdM,CAAT;AAeD,CAzBM"}
@@ -1,14 +1,15 @@
1
1
  import { useEffect } from 'react';
2
+ import { ConnectionHandler } from '@sendbird/chat';
2
3
  import { Logger } from '@sendbird/uikit-utils';
3
4
  export const useConnectionHandler = function (sdk, handlerId, hookHandler) {
4
5
  let deps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
5
6
  useEffect(() => {
6
7
  Logger.info('[useConnectionHandler]', handlerId);
7
- const handler = new sdk.ConnectionHandler();
8
+ const handler = new ConnectionHandler();
8
9
  const handlerKeys = Object.keys(handler);
9
10
  handlerKeys.forEach(key => {
10
- const hookHandlerFn = hookHandler[key];
11
- if (hookHandlerFn) handler[key] = hookHandlerFn;
11
+ // @ts-ignore
12
+ if (hookHandler[key]) handler[key] = hookHandler[key];
12
13
  });
13
14
  sdk.addConnectionHandler(handlerId, handler);
14
15
  return () => sdk.removeConnectionHandler(handlerId);
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","Logger","useConnectionHandler","sdk","handlerId","hookHandler","deps","info","handler","ConnectionHandler","handlerKeys","Object","keys","forEach","key","hookHandlerFn","addConnectionHandler","removeConnectionHandler"],"sources":["useConnectionHandler.ts"],"sourcesContent":["import React, { useEffect } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport { Logger, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useConnectionHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<Sendbird.ConnectionHandler>,\n deps: React.DependencyList = [],\n) => {\n useEffect(() => {\n Logger.info('[useConnectionHandler]', handlerId);\n\n const handler = new sdk.ConnectionHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n handlerKeys.forEach((key) => {\n const hookHandlerFn = hookHandler[key];\n if (hookHandlerFn) handler[key] = hookHandlerFn;\n });\n\n sdk.addConnectionHandler(handlerId, handler);\n return () => sdk.removeConnectionHandler(handlerId);\n }, [sdk, handlerId, ...deps]);\n};\n"],"mappings":"AAAA,SAAgBA,SAAhB,QAAiC,OAAjC;AAGA,SAASC,MAAT,QAAwC,uBAAxC;AAEA,OAAO,MAAMC,oBAAoB,GAAG,UAClCC,GADkC,EAElCC,SAFkC,EAGlCC,WAHkC,EAK/B;EAAA,IADHC,IACG,uEAD0B,EAC1B;EACHN,SAAS,CAAC,MAAM;IACdC,MAAM,CAACM,IAAP,CAAY,wBAAZ,EAAsCH,SAAtC;IAEA,MAAMI,OAAO,GAAG,IAAIL,GAAG,CAACM,iBAAR,EAAhB;IACA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYJ,OAAZ,CAApB;IACAE,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3B,MAAMC,aAAa,GAAGV,WAAW,CAACS,GAAD,CAAjC;MACA,IAAIC,aAAJ,EAAmBP,OAAO,CAACM,GAAD,CAAP,GAAeC,aAAf;IACpB,CAHD;IAKAZ,GAAG,CAACa,oBAAJ,CAAyBZ,SAAzB,EAAoCI,OAApC;IACA,OAAO,MAAML,GAAG,CAACc,uBAAJ,CAA4Bb,SAA5B,CAAb;EACD,CAZQ,EAYN,CAACD,GAAD,EAAMC,SAAN,EAAiB,GAAGE,IAApB,CAZM,CAAT;AAaD,CAnBM"}
1
+ {"version":3,"names":["useEffect","ConnectionHandler","Logger","useConnectionHandler","sdk","handlerId","hookHandler","deps","info","handler","handlerKeys","Object","keys","forEach","key","addConnectionHandler","removeConnectionHandler"],"sources":["useConnectionHandler.ts"],"sourcesContent":["import React, { useEffect } from 'react';\n\nimport { ConnectionHandler } from '@sendbird/chat';\nimport { Logger, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useConnectionHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<ConnectionHandler>,\n deps: React.DependencyList = [],\n) => {\n useEffect(() => {\n Logger.info('[useConnectionHandler]', handlerId);\n\n const handler = new ConnectionHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n handlerKeys.forEach((key) => {\n // @ts-ignore\n if (hookHandler[key]) handler[key] = hookHandler[key];\n });\n\n sdk.addConnectionHandler(handlerId, handler);\n return () => sdk.removeConnectionHandler(handlerId);\n }, [sdk, handlerId, ...deps]);\n};\n"],"mappings":"AAAA,SAAgBA,SAAhB,QAAiC,OAAjC;AAEA,SAASC,iBAAT,QAAkC,gBAAlC;AACA,SAASC,MAAT,QAAwC,uBAAxC;AAEA,OAAO,MAAMC,oBAAoB,GAAG,UAClCC,GADkC,EAElCC,SAFkC,EAGlCC,WAHkC,EAK/B;EAAA,IADHC,IACG,uEAD0B,EAC1B;EACHP,SAAS,CAAC,MAAM;IACdE,MAAM,CAACM,IAAP,CAAY,wBAAZ,EAAsCH,SAAtC;IAEA,MAAMI,OAAO,GAAG,IAAIR,iBAAJ,EAAhB;IACA,MAAMS,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYH,OAAZ,CAApB;IACAC,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3B;MACA,IAAIR,WAAW,CAACQ,GAAD,CAAf,EAAsBL,OAAO,CAACK,GAAD,CAAP,GAAeR,WAAW,CAACQ,GAAD,CAA1B;IACvB,CAHD;IAKAV,GAAG,CAACW,oBAAJ,CAAyBV,SAAzB,EAAoCI,OAApC;IACA,OAAO,MAAML,GAAG,CAACY,uBAAJ,CAA4BX,SAA5B,CAAb;EACD,CAZQ,EAYN,CAACD,GAAD,EAAMC,SAAN,EAAiB,GAAGE,IAApB,CAZM,CAAT;AAaD,CAnBM"}
@@ -1,17 +1,29 @@
1
- import { useEffect } from 'react';
1
+ import { useEffect, useLayoutEffect, useRef } from 'react';
2
+ import { UserEventHandler } from '@sendbird/chat';
2
3
  import { Logger } from '@sendbird/uikit-utils';
3
- export const useUserEventHandler = function (sdk, handlerId, hookHandler) {
4
- let deps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
4
+ export const useUserEventHandler = (sdk, handlerId, hookHandler) => {
5
+ const handlerRef = useRef(hookHandler);
6
+ useLayoutEffect(() => {
7
+ handlerRef.current = hookHandler;
8
+ });
5
9
  useEffect(() => {
6
10
  Logger.debug('[useUserEventHandler] hook called by', handlerId);
7
- const handler = new sdk.UserEventHandler();
11
+ const handler = new UserEventHandler();
8
12
  const handlerKeys = Object.keys(handler);
9
13
  handlerKeys.forEach(key => {
10
- const hookHandlerFn = hookHandler[key];
11
- if (hookHandlerFn) handler[key] = hookHandlerFn;
14
+ handler[key] = function () {
15
+ var _handlerRef$current$k, _handlerRef$current;
16
+
17
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
18
+ args[_key] = arguments[_key];
19
+ }
20
+
21
+ // @ts-ignore
22
+ (_handlerRef$current$k = (_handlerRef$current = handlerRef.current)[key]) === null || _handlerRef$current$k === void 0 ? void 0 : _handlerRef$current$k.call(_handlerRef$current, ...args);
23
+ };
12
24
  });
13
25
  sdk.addUserEventHandler(handlerId, handler);
14
26
  return () => sdk.removeUserEventHandler(handlerId);
15
- }, [sdk, handlerId, ...deps]);
27
+ }, [sdk, handlerId]);
16
28
  };
17
29
  //# sourceMappingURL=useUserEventHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","Logger","useUserEventHandler","sdk","handlerId","hookHandler","deps","debug","handler","UserEventHandler","handlerKeys","Object","keys","forEach","key","hookHandlerFn","addUserEventHandler","removeUserEventHandler"],"sources":["useUserEventHandler.ts"],"sourcesContent":["import React, { useEffect } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { Logger } from '@sendbird/uikit-utils';\n\nexport const useUserEventHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<Sendbird.UserEventHandler>,\n deps: React.DependencyList = [],\n) => {\n useEffect(() => {\n Logger.debug('[useUserEventHandler] hook called by', handlerId);\n\n const handler = new sdk.UserEventHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n handlerKeys.forEach((key) => {\n const hookHandlerFn = hookHandler[key];\n if (hookHandlerFn) handler[key] = hookHandlerFn as () => unknown;\n });\n\n sdk.addUserEventHandler(handlerId, handler);\n return () => sdk.removeUserEventHandler(handlerId);\n }, [sdk, handlerId, ...deps]);\n};\n"],"mappings":"AAAA,SAAgBA,SAAhB,QAAiC,OAAjC;AAIA,SAASC,MAAT,QAAuB,uBAAvB;AAEA,OAAO,MAAMC,mBAAmB,GAAG,UACjCC,GADiC,EAEjCC,SAFiC,EAGjCC,WAHiC,EAK9B;EAAA,IADHC,IACG,uEAD0B,EAC1B;EACHN,SAAS,CAAC,MAAM;IACdC,MAAM,CAACM,KAAP,CAAa,sCAAb,EAAqDH,SAArD;IAEA,MAAMI,OAAO,GAAG,IAAIL,GAAG,CAACM,gBAAR,EAAhB;IACA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYJ,OAAZ,CAApB;IACAE,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3B,MAAMC,aAAa,GAAGV,WAAW,CAACS,GAAD,CAAjC;MACA,IAAIC,aAAJ,EAAmBP,OAAO,CAACM,GAAD,CAAP,GAAeC,aAAf;IACpB,CAHD;IAKAZ,GAAG,CAACa,mBAAJ,CAAwBZ,SAAxB,EAAmCI,OAAnC;IACA,OAAO,MAAML,GAAG,CAACc,sBAAJ,CAA2Bb,SAA3B,CAAb;EACD,CAZQ,EAYN,CAACD,GAAD,EAAMC,SAAN,EAAiB,GAAGE,IAApB,CAZM,CAAT;AAaD,CAnBM"}
1
+ {"version":3,"names":["useEffect","useLayoutEffect","useRef","UserEventHandler","Logger","useUserEventHandler","sdk","handlerId","hookHandler","handlerRef","current","debug","handler","handlerKeys","Object","keys","forEach","key","args","addUserEventHandler","removeUserEventHandler"],"sources":["useUserEventHandler.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { UserEventHandler } from '@sendbird/chat';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { Logger } from '@sendbird/uikit-utils';\n\nexport const useUserEventHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<UserEventHandler>,\n) => {\n const handlerRef = useRef(hookHandler);\n useLayoutEffect(() => {\n handlerRef.current = hookHandler;\n });\n\n useEffect(() => {\n Logger.debug('[useUserEventHandler] hook called by', handlerId);\n\n const handler = new UserEventHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n\n handlerKeys.forEach((key) => {\n handler[key] = (...args: unknown[]) => {\n // @ts-ignore\n handlerRef.current[key]?.(...args);\n };\n });\n\n sdk.addUserEventHandler(handlerId, handler);\n return () => sdk.removeUserEventHandler(handlerId);\n }, [sdk, handlerId]);\n};\n"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,eAApB,EAAqCC,MAArC,QAAmD,OAAnD;AAEA,SAASC,gBAAT,QAAiC,gBAAjC;AAEA,SAASC,MAAT,QAAuB,uBAAvB;AAEA,OAAO,MAAMC,mBAAmB,GAAG,CACjCC,GADiC,EAEjCC,SAFiC,EAGjCC,WAHiC,KAI9B;EACH,MAAMC,UAAU,GAAGP,MAAM,CAACM,WAAD,CAAzB;EACAP,eAAe,CAAC,MAAM;IACpBQ,UAAU,CAACC,OAAX,GAAqBF,WAArB;EACD,CAFc,CAAf;EAIAR,SAAS,CAAC,MAAM;IACdI,MAAM,CAACO,KAAP,CAAa,sCAAb,EAAqDJ,SAArD;IAEA,MAAMK,OAAO,GAAG,IAAIT,gBAAJ,EAAhB;IACA,MAAMU,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYH,OAAZ,CAApB;IAEAC,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3BL,OAAO,CAACK,GAAD,CAAP,GAAe,YAAwB;QAAA;;QAAA,kCAApBC,IAAoB;UAApBA,IAAoB;QAAA;;QACrC;QACA,gDAAAT,UAAU,CAACC,OAAX,EAAmBO,GAAnB,2GAA0B,GAAGC,IAA7B;MACD,CAHD;IAID,CALD;IAOAZ,GAAG,CAACa,mBAAJ,CAAwBZ,SAAxB,EAAmCK,OAAnC;IACA,OAAO,MAAMN,GAAG,CAACc,sBAAJ,CAA2Bb,SAA3B,CAAb;EACD,CAfQ,EAeN,CAACD,GAAD,EAAMC,SAAN,CAfM,CAAT;AAgBD,CA1BM"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type Sendbird from 'sendbird';\n\nimport type {\n SendbirdChatSDK,\n SendbirdError,\n SendbirdFileMessage,\n SendbirdFileMessageParams,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n SendbirdMessage,\n SendbirdMessageCollection,\n SendbirdUserMessage,\n SendbirdUserMessageParams,\n} from '@sendbird/uikit-utils';\n\nexport interface CustomQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: boolean;\n}\nexport interface CustomBidirectionalQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: () => boolean;\n prev: () => Promise<Data[]>;\n hasPrev: () => boolean;\n}\n\n/**\n * @interface UseGroupChannelList\n * @description interface for group channel list hook\n * */\nexport interface UseGroupChannelList {\n (sdk: SendbirdChatSDK, userId?: string, options?: UseGroupChannelListOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get group channels state\n * */\n groupChannels: SendbirdGroupChannel[];\n\n /**\n * Fetch next channels to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n };\n}\nexport type UseGroupChannelListOptions = {\n queryCreator?: () => Sendbird.GroupChannelListQuery;\n collectionCreator?: () => SendbirdGroupChannelCollection;\n enableCollectionWithoutLocalCache?: boolean;\n};\n\n/**\n * @interface UseGroupChannelMessages\n * @description interface for group channel messages hook\n * - Receive new messages from other users -> append to state(nextMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> next() -> nextMessages append to state(messages)\n * */\nexport interface UseGroupChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdGroupChannel, userId?: string, options?: UseGroupChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Get messages, this state is for temporary data before render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * */\n nextMessages: SendbirdMessage[];\n\n /**\n * Get new messages from nextMessages\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessagesFromMembers: SendbirdMessage[];\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Activated channel\n * */\n activeChannel: SendbirdGroupChannel;\n };\n}\n\nexport type UseGroupChannelMessagesOptions = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => Sendbird.PreviousMessageListQuery;\n collectionCreator?: () => SendbirdMessageCollection;\n enableCollectionWithoutLocalCache?: boolean;\n onChannelDeleted?: () => void;\n};\n\n/**\n * @interface UseUserListReturn\n * @description interface for user list hook return value\n * */\nexport interface UseUserListReturn<User> {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get users state\n * */\n users: User[];\n\n /**\n * Fetch next users to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n}\n\nexport type UseUserListOptions<User> = {\n sortComparator?: (a: User, b: User) => number;\n queryCreator?: () => CustomQueryInterface<User>;\n};\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type {\n SendbirdChatSDK,\n SendbirdError,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n SendbirdGroupChannelListQuery,\n SendbirdMessage,\n SendbirdMessageCollection,\n SendbirdPreviousMessageListQuery,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n} from '@sendbird/uikit-utils';\n\nexport interface CustomQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: boolean;\n}\nexport interface CustomBidirectionalQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: () => boolean;\n prev: () => Promise<Data[]>;\n hasPrev: () => boolean;\n}\n\n/**\n * @interface UseGroupChannelList\n * @description interface for group channel list hook\n * */\nexport interface UseGroupChannelList {\n (sdk: SendbirdChatSDK, userId?: string, options?: UseGroupChannelListOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get group channels state\n * */\n groupChannels: SendbirdGroupChannel[];\n\n /**\n * Fetch next channels to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n };\n}\nexport type UseGroupChannelListOptions = {\n queryCreator?: () => SendbirdGroupChannelListQuery;\n collectionCreator?: () => SendbirdGroupChannelCollection;\n enableCollectionWithoutLocalCache?: boolean;\n};\n\n/**\n * @interface UseGroupChannelMessages\n * @description interface for group channel messages hook\n * - Receive new messages from other users -> append to state(nextMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> next() -> nextMessages append to state(messages)\n * */\nexport interface UseGroupChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdGroupChannel, userId?: string, options?: UseGroupChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Get messages, this state is for temporary data before render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * */\n nextMessages: SendbirdMessage[];\n\n /**\n * Get new messages from nextMessages\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessagesFromMembers: SendbirdMessage[];\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageCreateParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageCreateParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageCreateParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageCreateParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Activated channel\n * */\n activeChannel: SendbirdGroupChannel;\n };\n}\n\nexport type UseGroupChannelMessagesOptions = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n collectionCreator?: () => SendbirdMessageCollection;\n enableCollectionWithoutLocalCache?: boolean;\n onChannelDeleted?: () => void;\n};\n\n/**\n * @interface UseUserListReturn\n * @description interface for user list hook return value\n * */\nexport interface UseUserListReturn<User> {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get users state\n * */\n users: User[];\n\n /**\n * Fetch next users to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n}\n\nexport type UseUserListOptions<User> = {\n sortComparator?: (a: User, b: User) => number;\n queryCreator?: () => CustomQueryInterface<User>;\n};\n"],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  import type { SendbirdChatSDK, SendbirdGroupChannel } from '@sendbird/uikit-utils';
2
2
  export declare const useActiveGroupChannel: (sdk: SendbirdChatSDK, staleChannel: SendbirdGroupChannel) => {
3
- activeChannel: import("sendbird").GroupChannel;
4
- setActiveChannel: import("react").Dispatch<import("react").SetStateAction<import("sendbird").GroupChannel>>;
3
+ activeChannel: import("@sendbird/chat/groupChannel").GroupChannel;
4
+ setActiveChannel: import("react").Dispatch<import("react").SetStateAction<import("@sendbird/chat/groupChannel").GroupChannel>>;
5
5
  };
@@ -9,6 +9,6 @@ export declare const useGroupChannelListReducer: (order?: Order) => {
9
9
  updateOrder: (order?: Order) => void;
10
10
  loading: boolean;
11
11
  refreshing: boolean;
12
- groupChannels: import("sendbird").GroupChannel[];
12
+ groupChannels: import("@sendbird/chat/groupChannel").GroupChannel[];
13
13
  };
14
14
  export {};