@sendbird/uikit-chat-hooks 2.4.0 → 2.4.2

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 (124) hide show
  1. package/README.md +2 -2
  2. package/lib/commonjs/channel/useGroupChannel.js +0 -4
  3. package/lib/commonjs/channel/useGroupChannel.js.map +1 -1
  4. package/lib/commonjs/channel/useGroupChannelList/index.js +0 -5
  5. package/lib/commonjs/channel/useGroupChannelList/index.js.map +1 -1
  6. package/lib/commonjs/channel/useGroupChannelList/reducer.js +12 -29
  7. package/lib/commonjs/channel/useGroupChannelList/reducer.js.map +1 -1
  8. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js +1 -22
  9. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
  10. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js +1 -18
  11. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
  12. package/lib/commonjs/channel/useGroupChannelMessages/index.js +0 -5
  13. package/lib/commonjs/channel/useGroupChannelMessages/index.js.map +1 -1
  14. package/lib/commonjs/channel/useGroupChannelMessages/reducer.js +18 -28
  15. package/lib/commonjs/channel/useGroupChannelMessages/reducer.js.map +1 -1
  16. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +8 -37
  17. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  18. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +21 -49
  19. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  20. package/lib/commonjs/channel/useOpenChannel.js +0 -4
  21. package/lib/commonjs/channel/useOpenChannel.js.map +1 -1
  22. package/lib/commonjs/channel/useOpenChannelList/index.js +0 -3
  23. package/lib/commonjs/channel/useOpenChannelList/index.js.map +1 -1
  24. package/lib/commonjs/channel/useOpenChannelList/reducer.js +2 -21
  25. package/lib/commonjs/channel/useOpenChannelList/reducer.js.map +1 -1
  26. package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js +1 -18
  27. package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -1
  28. package/lib/commonjs/channel/useOpenChannelMessages/index.js +0 -3
  29. package/lib/commonjs/channel/useOpenChannelMessages/index.js.map +1 -1
  30. package/lib/commonjs/channel/useOpenChannelMessages/reducer.js +18 -28
  31. package/lib/commonjs/channel/useOpenChannelMessages/reducer.js.map +1 -1
  32. package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +1 -30
  33. package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
  34. package/lib/commonjs/common/useAppFeatures.js +0 -3
  35. package/lib/commonjs/common/useAppFeatures.js.map +1 -1
  36. package/lib/commonjs/common/useMessageOutgoingStatus.js +0 -11
  37. package/lib/commonjs/common/useMessageOutgoingStatus.js.map +1 -1
  38. package/lib/commonjs/common/usePushTrigger.js +0 -6
  39. package/lib/commonjs/common/usePushTrigger.js.map +1 -1
  40. package/lib/commonjs/common/useTotalUnreadMessageCount.js +0 -7
  41. package/lib/commonjs/common/useTotalUnreadMessageCount.js.map +1 -1
  42. package/lib/commonjs/common/useUserList.js +3 -18
  43. package/lib/commonjs/common/useUserList.js.map +1 -1
  44. package/lib/commonjs/handler/useChannelHandler.js +15 -41
  45. package/lib/commonjs/handler/useChannelHandler.js.map +1 -1
  46. package/lib/commonjs/handler/useConnectionHandler.js +14 -11
  47. package/lib/commonjs/handler/useConnectionHandler.js.map +1 -1
  48. package/lib/commonjs/handler/useUserEventHandler.js +0 -8
  49. package/lib/commonjs/handler/useUserEventHandler.js.map +1 -1
  50. package/lib/commonjs/index.js +0 -23
  51. package/lib/commonjs/index.js.map +1 -1
  52. package/lib/commonjs/model/CustomQuery.js +0 -6
  53. package/lib/commonjs/model/CustomQuery.js.map +1 -1
  54. package/lib/module/channel/useGroupChannel.js.map +1 -1
  55. package/lib/module/channel/useGroupChannelList/index.js.map +1 -1
  56. package/lib/module/channel/useGroupChannelList/reducer.js +12 -26
  57. package/lib/module/channel/useGroupChannelList/reducer.js.map +1 -1
  58. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js +1 -15
  59. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
  60. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js +1 -11
  61. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
  62. package/lib/module/channel/useGroupChannelMessages/index.js.map +1 -1
  63. package/lib/module/channel/useGroupChannelMessages/reducer.js +18 -25
  64. package/lib/module/channel/useGroupChannelMessages/reducer.js.map +1 -1
  65. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +9 -30
  66. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  67. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +23 -46
  68. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  69. package/lib/module/channel/useOpenChannel.js.map +1 -1
  70. package/lib/module/channel/useOpenChannelList/index.js.map +1 -1
  71. package/lib/module/channel/useOpenChannelList/reducer.js +2 -18
  72. package/lib/module/channel/useOpenChannelList/reducer.js.map +1 -1
  73. package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js +1 -13
  74. package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -1
  75. package/lib/module/channel/useOpenChannelMessages/index.js.map +1 -1
  76. package/lib/module/channel/useOpenChannelMessages/reducer.js +18 -25
  77. package/lib/module/channel/useOpenChannelMessages/reducer.js.map +1 -1
  78. package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +1 -25
  79. package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
  80. package/lib/module/common/useAppFeatures.js.map +1 -1
  81. package/lib/module/common/useMessageOutgoingStatus.js +0 -6
  82. package/lib/module/common/useMessageOutgoingStatus.js.map +1 -1
  83. package/lib/module/common/usePushTrigger.js.map +1 -1
  84. package/lib/module/common/useTotalUnreadMessageCount.js +0 -1
  85. package/lib/module/common/useTotalUnreadMessageCount.js.map +1 -1
  86. package/lib/module/common/useUserList.js +3 -13
  87. package/lib/module/common/useUserList.js.map +1 -1
  88. package/lib/module/handler/useChannelHandler.js +15 -35
  89. package/lib/module/handler/useChannelHandler.js.map +1 -1
  90. package/lib/module/handler/useConnectionHandler.js +15 -6
  91. package/lib/module/handler/useConnectionHandler.js.map +1 -1
  92. package/lib/module/handler/useUserEventHandler.js +0 -2
  93. package/lib/module/handler/useUserEventHandler.js.map +1 -1
  94. package/lib/module/index.js +0 -1
  95. package/lib/module/index.js.map +1 -1
  96. package/lib/module/model/CustomQuery.js +0 -4
  97. package/lib/module/model/CustomQuery.js.map +1 -1
  98. package/lib/typescript/src/channel/useGroupChannelList/reducer.d.ts +1 -1
  99. package/lib/typescript/src/channel/useGroupChannelMessages/reducer.d.ts +2 -2
  100. package/lib/typescript/src/channel/useOpenChannelMessages/reducer.d.ts +2 -2
  101. package/lib/typescript/src/common/useUserList.d.ts +1 -1
  102. package/lib/typescript/src/handler/useChannelHandler.d.ts +1 -1
  103. package/lib/typescript/src/handler/useConnectionHandler.d.ts +1 -2
  104. package/lib/typescript/src/index.d.ts +0 -1
  105. package/package.json +15 -9
  106. package/src/channel/useGroupChannelList/reducer.ts +11 -7
  107. package/src/channel/useGroupChannelList/useGroupChannelListWithCollection.ts +1 -1
  108. package/src/channel/useGroupChannelList/useGroupChannelListWithQuery.ts +1 -1
  109. package/src/channel/useGroupChannelMessages/reducer.ts +11 -10
  110. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +69 -72
  111. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +32 -42
  112. package/src/channel/useOpenChannelList/useOpenChannelListWithQuery.ts +1 -1
  113. package/src/channel/useOpenChannelMessages/reducer.ts +11 -10
  114. package/src/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.ts +1 -1
  115. package/src/common/useUserList.ts +2 -2
  116. package/src/handler/useChannelHandler.ts +11 -24
  117. package/src/handler/useConnectionHandler.ts +11 -5
  118. package/src/index.ts +0 -1
  119. package/lib/commonjs/common/useTotalUnreadChannelCount.js +0 -29
  120. package/lib/commonjs/common/useTotalUnreadChannelCount.js.map +0 -1
  121. package/lib/module/common/useTotalUnreadChannelCount.js +0 -17
  122. package/lib/module/common/useTotalUnreadChannelCount.js.map +0 -1
  123. package/lib/typescript/src/common/useTotalUnreadChannelCount.d.ts +0 -6
  124. package/src/common/useTotalUnreadChannelCount.ts +0 -26
@@ -2,7 +2,6 @@ import { useRef } from 'react';
2
2
  import { NOOP, isDifferentChannel, useAsyncEffect, useForceUpdate, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';
3
3
  import { useChannelHandler } from '../../handler/useChannelHandler';
4
4
  import { useOpenChannelMessagesReducer } from './reducer';
5
-
6
5
  const createMessageQuery = (channel, creator) => {
7
6
  if (creator) return creator();
8
7
  return channel.createPreviousMessageListQuery({
@@ -10,7 +9,6 @@ const createMessageQuery = (channel, creator) => {
10
9
  reverse: true
11
10
  });
12
11
  };
13
-
14
12
  export const useOpenChannelMessagesWithQuery = (sdk, channel, userId, options) => {
15
13
  const queryRef = useRef();
16
14
  const forceUpdate = useForceUpdate();
@@ -31,100 +29,80 @@ export const useOpenChannelMessagesWithQuery = (sdk, channel, userId, options) =
31
29
  const init = useFreshCallback(async uid => {
32
30
  if (uid) {
33
31
  var _queryRef$current;
34
-
35
32
  queryRef.current = createMessageQuery(channel, options === null || options === void 0 ? void 0 : options.queryCreator);
36
-
37
33
  if ((_queryRef$current = queryRef.current) !== null && _queryRef$current !== void 0 && _queryRef$current.hasNext) {
38
34
  var _queryRef$current2;
39
-
40
35
  const list = await ((_queryRef$current2 = queryRef.current) === null || _queryRef$current2 === void 0 ? void 0 : _queryRef$current2.load());
41
36
  updateMessages(list, true, sdk.currentUser.userId);
42
37
  }
43
-
44
38
  updateNextMessages([], true, sdk.currentUser.userId);
45
39
  }
46
40
  });
47
-
48
41
  const channelUpdater = channel => {
49
42
  if (channel.isOpenChannel() && !isDifferentChannel(channel, channel)) {
50
43
  forceUpdate();
51
44
  }
52
45
  };
53
-
54
46
  useChannelHandler(sdk, handlerId, {
55
47
  // Messages
56
48
  onMessageReceived(eventChannel, message) {
57
49
  if (isDifferentChannel(channel, eventChannel)) return;
58
50
  updateNextMessages([message], false, sdk.currentUser.userId);
59
51
  },
60
-
61
52
  onMessageUpdated(eventChannel, message) {
62
53
  if (isDifferentChannel(channel, eventChannel)) return;
63
54
  updateMessages([message], false, sdk.currentUser.userId);
64
55
  },
65
-
66
56
  onMessageDeleted(eventChannel, messageId) {
67
57
  if (isDifferentChannel(channel, eventChannel)) return;
68
58
  deleteMessages([messageId], []);
69
59
  deleteNextMessages([messageId], []);
70
60
  },
71
-
72
61
  // Channels
73
62
  onChannelChanged: channelUpdater,
74
63
  onChannelFrozen: channelUpdater,
75
64
  onChannelUnfrozen: channelUpdater,
76
-
77
65
  onChannelParticipantCountChanged(eventChannel) {
78
66
  if (isDifferentChannel(channel, eventChannel)) return;
79
67
  channelUpdater(eventChannel);
80
68
  },
81
-
82
69
  onChannelDeleted(channelUrl, type) {
83
70
  if (channel.url === channelUrl && type === 'open') {
84
71
  var _options$onChannelDel;
85
-
86
72
  options === null || options === void 0 ? void 0 : (_options$onChannelDel = options.onChannelDeleted) === null || _options$onChannelDel === void 0 ? void 0 : _options$onChannelDel.call(options);
87
73
  }
88
74
  },
89
-
90
75
  // Users
91
76
  onOperatorUpdated: channelUpdater,
92
77
  onUserUnbanned: channelUpdater,
93
78
  onUserMuted: channelUpdater,
94
79
  onUserUnmuted: channelUpdater,
95
-
96
80
  onUserBanned(eventChannel, bannedUser) {
97
81
  if (isDifferentChannel(channel, eventChannel)) return;
98
-
99
82
  if (bannedUser.userId === sdk.currentUser.userId) {
100
83
  var _options$onChannelDel2;
101
-
102
84
  options === null || options === void 0 ? void 0 : (_options$onChannelDel2 = options.onChannelDeleted) === null || _options$onChannelDel2 === void 0 ? void 0 : _options$onChannelDel2.call(options);
103
85
  } else {
104
86
  channelUpdater(eventChannel);
105
87
  }
106
88
  }
107
-
108
89
  }, 'open');
109
90
  useAsyncEffect(async () => {
110
91
  updateLoading(true);
111
-
112
92
  try {
113
93
  await channel.enter();
114
94
  await init(userId);
115
95
  } catch (error) {
116
96
  var _options$onError, _options$onChannelDel3;
117
-
118
97
  options === null || options === void 0 ? void 0 : (_options$onError = options.onError) === null || _options$onError === void 0 ? void 0 : _options$onError.call(options, error);
119
98
  options === null || options === void 0 ? void 0 : (_options$onChannelDel3 = options.onChannelDeleted) === null || _options$onChannelDel3 === void 0 ? void 0 : _options$onChannelDel3.call(options);
120
99
  } finally {
121
100
  updateLoading(false);
122
101
  }
123
-
124
102
  return () => {
125
103
  channel.exit().catch(NOOP);
126
104
  };
127
- }, [init, userId]);
105
+ }, [channel.url, userId]);
128
106
  const refresh = useFreshCallback(async () => {
129
107
  updateRefreshing(true);
130
108
  await init(userId);
@@ -132,10 +110,8 @@ export const useOpenChannelMessagesWithQuery = (sdk, channel, userId, options) =
132
110
  });
133
111
  const prev = useFreshCallback(async () => {
134
112
  var _queryRef$current3;
135
-
136
113
  if (queryRef.current && (_queryRef$current3 = queryRef.current) !== null && _queryRef$current3 !== void 0 && _queryRef$current3.hasNext) {
137
114
  var _queryRef$current4;
138
-
139
115
  const list = await ((_queryRef$current4 = queryRef.current) === null || _queryRef$current4 === void 0 ? void 0 : _queryRef$current4.load());
140
116
  updateMessages(list, false, sdk.currentUser.userId);
141
117
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useRef","NOOP","isDifferentChannel","useAsyncEffect","useForceUpdate","useFreshCallback","useUniqHandlerId","useChannelHandler","useOpenChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useOpenChannelMessagesWithQuery","sdk","userId","options","queryRef","forceUpdate","handlerId","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","init","uid","current","queryCreator","hasNext","list","load","currentUser","channelUpdater","isOpenChannel","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelParticipantCountChanged","onChannelDeleted","channelUrl","type","url","onOperatorUpdated","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","enter","error","onError","exit","catch","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":["useOpenChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { SendbirdBaseChannel, SendbirdOpenChannel, SendbirdPreviousMessageListQuery } from '@sendbird/uikit-utils';\nimport {\n NOOP,\n isDifferentChannel,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseOpenChannelMessages, UseOpenChannelMessagesOptions } from '../../types';\nimport { useOpenChannelMessagesReducer } from './reducer';\n\nconst createMessageQuery = (channel: SendbirdOpenChannel, creator?: UseOpenChannelMessagesOptions['queryCreator']) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nexport const useOpenChannelMessagesWithQuery: UseOpenChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const forceUpdate = useForceUpdate();\n const handlerId = useUniqHandlerId('useOpenChannelMessagesWithQuery');\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 } = useOpenChannelMessagesReducer(userId, options?.sortComparator);\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n\n updateMessages(list, true, sdk.currentUser.userId);\n }\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isOpenChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useChannelHandler(\n sdk,\n handlerId,\n {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n updateNextMessages([message], false, sdk.currentUser.userId);\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNextMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelParticipantCountChanged(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n channelUpdater(eventChannel);\n },\n onChannelDeleted(channelUrl, type) {\n if (channel.url === channelUrl && type === 'open') {\n options?.onChannelDeleted?.();\n }\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n },\n 'open',\n );\n\n useAsyncEffect(async () => {\n updateLoading(true);\n\n try {\n await channel.enter();\n await init(userId);\n } catch (error) {\n options?.onError?.(error);\n options?.onChannelDeleted?.();\n } finally {\n updateLoading(false);\n }\n\n return () => {\n channel.exit().catch(NOOP);\n };\n }, [init, userId]);\n\n const refresh: ReturnType<UseOpenChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseOpenChannelMessages>['prev'] = useFreshCallback(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<UseOpenChannelMessages>['next'] = useFreshCallback(async () => {\n if (nextMessages.length > 0) {\n updateMessages(nextMessages, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n });\n\n const sendUserMessage: ReturnType<UseOpenChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\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, sentMessage) => {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n\n const sendFileMessage: ReturnType<UseOpenChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\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, sentMessage) => {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n\n const updateUserMessage: ReturnType<UseOpenChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseOpenChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseOpenChannelMessages>['resendMessage'] = useFreshCallback(async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateNextMessages([message], false, sdk.currentUser.userId);\n });\n const deleteMessage: ReturnType<UseOpenChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\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 };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["useRef","NOOP","isDifferentChannel","useAsyncEffect","useForceUpdate","useFreshCallback","useUniqHandlerId","useChannelHandler","useOpenChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useOpenChannelMessagesWithQuery","sdk","userId","options","queryRef","forceUpdate","handlerId","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","init","uid","_queryRef$current","current","queryCreator","hasNext","_queryRef$current2","list","load","currentUser","channelUpdater","isOpenChannel","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelParticipantCountChanged","onChannelDeleted","channelUrl","type","url","_options$onChannelDel","call","onOperatorUpdated","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_options$onChannelDel2","enter","error","_options$onError","_options$onChannelDel3","onError","exit","catch","refresh","prev","_queryRef$current3","_queryRef$current4","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":["useOpenChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { SendbirdBaseChannel, SendbirdOpenChannel, SendbirdPreviousMessageListQuery } from '@sendbird/uikit-utils';\nimport {\n NOOP,\n isDifferentChannel,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseOpenChannelMessages, UseOpenChannelMessagesOptions } from '../../types';\nimport { useOpenChannelMessagesReducer } from './reducer';\n\nconst createMessageQuery = (channel: SendbirdOpenChannel, creator?: UseOpenChannelMessagesOptions['queryCreator']) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nexport const useOpenChannelMessagesWithQuery: UseOpenChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const forceUpdate = useForceUpdate();\n const handlerId = useUniqHandlerId('useOpenChannelMessagesWithQuery');\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 } = useOpenChannelMessagesReducer(userId, options?.sortComparator);\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n\n updateMessages(list, true, sdk.currentUser.userId);\n }\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isOpenChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useChannelHandler(\n sdk,\n handlerId,\n {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n updateNextMessages([message], false, sdk.currentUser.userId);\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNextMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelParticipantCountChanged(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n channelUpdater(eventChannel);\n },\n onChannelDeleted(channelUrl, type) {\n if (channel.url === channelUrl && type === 'open') {\n options?.onChannelDeleted?.();\n }\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n },\n 'open',\n );\n\n useAsyncEffect(async () => {\n updateLoading(true);\n\n try {\n await channel.enter();\n await init(userId);\n } catch (error) {\n options?.onError?.(error);\n options?.onChannelDeleted?.();\n } finally {\n updateLoading(false);\n }\n\n return () => {\n channel.exit().catch(NOOP);\n };\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseOpenChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseOpenChannelMessages>['prev'] = useFreshCallback(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<UseOpenChannelMessages>['next'] = useFreshCallback(async () => {\n if (nextMessages.length > 0) {\n updateMessages(nextMessages, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n });\n\n const sendUserMessage: ReturnType<UseOpenChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\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, sentMessage) => {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n\n const sendFileMessage: ReturnType<UseOpenChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\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, sentMessage) => {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n\n const updateUserMessage: ReturnType<UseOpenChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseOpenChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseOpenChannelMessages>['resendMessage'] = useFreshCallback(async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateNextMessages([message], false, sdk.currentUser.userId);\n });\n const deleteMessage: ReturnType<UseOpenChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\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 };\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["ApplicationAttributes","PremiumFeatures","useAppFeatures","sdk","premiumFeatureList","applicationAttributes","appInfo","deliveryReceiptEnabled","includes","delivery_receipt","broadcastChannelEnabled","allow_broadcast_channel","superGroupChannelEnabled","allow_super_group_channel","reactionEnabled","reactions"],"sources":["useAppFeatures.ts"],"sourcesContent":["import { ApplicationAttributes, PremiumFeatures, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useAppFeatures = (sdk: SendbirdChatSDK) => {\n const { premiumFeatureList = [], applicationAttributes = [] } = sdk.appInfo ?? {};\n return {\n deliveryReceiptEnabled: premiumFeatureList.includes(PremiumFeatures.delivery_receipt),\n broadcastChannelEnabled: applicationAttributes.includes(ApplicationAttributes.allow_broadcast_channel),\n superGroupChannelEnabled: applicationAttributes.includes(ApplicationAttributes.allow_super_group_channel),\n reactionEnabled: applicationAttributes.includes(ApplicationAttributes.reactions),\n };\n};\n"],"mappings":"AAAA,SAASA,qBAAT,EAAgCC,eAAhC,QAAwE,uBAAxE;AAEA,OAAO,MAAMC,cAAc,GAAIC,GAAD,IAA0B;EACtD,MAAM;IAAEC,kBAAkB,GAAG,EAAvB;IAA2BC,qBAAqB,GAAG;EAAnD,IAA0DF,GAAG,CAACG,OAAJ,IAAe,EAA/E;EACA,OAAO;IACLC,sBAAsB,EAAEH,kBAAkB,CAACI,QAAnB,CAA4BP,eAAe,CAACQ,gBAA5C,CADnB;IAELC,uBAAuB,EAAEL,qBAAqB,CAACG,QAAtB,CAA+BR,qBAAqB,CAACW,uBAArD,CAFpB;IAGLC,wBAAwB,EAAEP,qBAAqB,CAACG,QAAtB,CAA+BR,qBAAqB,CAACa,yBAArD,CAHrB;IAILC,eAAe,EAAET,qBAAqB,CAACG,QAAtB,CAA+BR,qBAAqB,CAACe,SAArD;EAJZ,CAAP;AAMD,CARM"}
1
+ {"version":3,"names":["ApplicationAttributes","PremiumFeatures","useAppFeatures","sdk","premiumFeatureList","applicationAttributes","appInfo","deliveryReceiptEnabled","includes","delivery_receipt","broadcastChannelEnabled","allow_broadcast_channel","superGroupChannelEnabled","allow_super_group_channel","reactionEnabled","reactions"],"sources":["useAppFeatures.ts"],"sourcesContent":["import { ApplicationAttributes, PremiumFeatures, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useAppFeatures = (sdk: SendbirdChatSDK) => {\n const { premiumFeatureList = [], applicationAttributes = [] } = sdk.appInfo ?? {};\n return {\n deliveryReceiptEnabled: premiumFeatureList.includes(PremiumFeatures.delivery_receipt),\n broadcastChannelEnabled: applicationAttributes.includes(ApplicationAttributes.allow_broadcast_channel),\n superGroupChannelEnabled: applicationAttributes.includes(ApplicationAttributes.allow_super_group_channel),\n reactionEnabled: applicationAttributes.includes(ApplicationAttributes.reactions),\n };\n};\n"],"mappings":"AAAA,SAASA,qBAAqB,EAAEC,eAAe,QAAyB,uBAAuB;AAE/F,OAAO,MAAMC,cAAc,GAAIC,GAAoB,IAAK;EACtD,MAAM;IAAEC,kBAAkB,GAAG,EAAE;IAAEC,qBAAqB,GAAG;EAAG,CAAC,GAAGF,GAAG,CAACG,OAAO,IAAI,CAAC,CAAC;EACjF,OAAO;IACLC,sBAAsB,EAAEH,kBAAkB,CAACI,QAAQ,CAACP,eAAe,CAACQ,gBAAgB,CAAC;IACrFC,uBAAuB,EAAEL,qBAAqB,CAACG,QAAQ,CAACR,qBAAqB,CAACW,uBAAuB,CAAC;IACtGC,wBAAwB,EAAEP,qBAAqB,CAACG,QAAQ,CAACR,qBAAqB,CAACa,yBAAyB,CAAC;IACzGC,eAAe,EAAET,qBAAqB,CAACG,QAAQ,CAACR,qBAAqB,CAACe,SAAS;EACjF,CAAC;AACH,CAAC"}
@@ -12,29 +12,23 @@ export const useMessageOutgoingStatus = (sdk, channel, message) => {
12
12
  if (!isMyMessage(message, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
13
13
  forceUpdate();
14
14
  },
15
-
16
15
  onUnreadMemberStatusUpdated(eventChannel) {
17
16
  if (isDifferentChannel(channel, eventChannel)) return;
18
17
  if (!isMyMessage(message, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
19
18
  forceUpdate();
20
19
  }
21
-
22
20
  });
23
21
  if (!message) return 'NONE';
24
-
25
22
  if ('sendingStatus' in message) {
26
23
  if (message.sendingStatus === 'pending') return 'PENDING';
27
24
  if (message.sendingStatus === 'failed') return 'FAILED';
28
25
  }
29
-
30
26
  if (channel.isBroadcast || channel.isSuper) return 'NONE';
31
27
  if (channel.getUnreadMemberCount(message) === 0) return 'READ';
32
-
33
28
  if (features.deliveryReceiptEnabled) {
34
29
  if (channel.getUndeliveredMemberCount(message) === 0) return 'DELIVERED';
35
30
  return 'UNDELIVERED';
36
31
  }
37
-
38
32
  return 'UNREAD';
39
33
  };
40
34
  //# sourceMappingURL=useMessageOutgoingStatus.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["isDifferentChannel","isMyMessage","useForceUpdate","useUniqHandlerId","useChannelHandler","useAppFeatures","useMessageOutgoingStatus","sdk","channel","message","features","forceUpdate","currentUser","handlerId","onUndeliveredMemberStatusUpdated","eventChannel","userId","onUnreadMemberStatusUpdated","sendingStatus","isBroadcast","isSuper","getUnreadMemberCount","deliveryReceiptEnabled","getUndeliveredMemberCount"],"sources":["useMessageOutgoingStatus.ts"],"sourcesContent":["import type { SendbirdChatSDK, SendbirdGroupChannel, SendbirdMessage } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, isMyMessage, useForceUpdate, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../handler/useChannelHandler';\nimport { useAppFeatures } from './useAppFeatures';\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 const handlerId = useUniqHandlerId('useMessageOutgoingStatus');\n\n useChannelHandler(sdk, handlerId, {\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.isBroadcast || channel.isSuper) return 'NONE';\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,gBAA1D,QAAkF,uBAAlF;AAEA,SAASC,iBAAT,QAAkC,8BAAlC;AACA,SAASC,cAAT,QAA+B,kBAA/B;AAIA,OAAO,MAAMC,wBAAwB,GAAG,CACtCC,GADsC,EAEtCC,OAFsC,EAGtCC,OAHsC,KAIhB;EACtB,MAAMC,QAAQ,GAAGL,cAAc,CAACE,GAAD,CAA/B;EACA,MAAMI,WAAW,GAAGT,cAAc,EAAlC;EACA,MAAMU,WAAW,GAAGL,GAAG,CAACK,WAAxB;EACA,MAAMC,SAAS,GAAGV,gBAAgB,CAAC,0BAAD,CAAlC;EAEAC,iBAAiB,CAACG,GAAD,EAAMM,SAAN,EAAiB;IAChCC,gCAAgC,CAACC,YAAD,EAAe;MAC7C,IAAIf,kBAAkB,CAACQ,OAAD,EAAUO,YAAV,CAAtB,EAA+C;MAC/C,IAAI,CAACd,WAAW,CAACQ,OAAD,EAAUG,WAAV,aAAUA,WAAV,uBAAUA,WAAW,CAAEI,MAAvB,CAAhB,EAAgD;MAEhDL,WAAW;IACZ,CAN+B;;IAOhCM,2BAA2B,CAACF,YAAD,EAAe;MACxC,IAAIf,kBAAkB,CAACQ,OAAD,EAAUO,YAAV,CAAtB,EAA+C;MAC/C,IAAI,CAACd,WAAW,CAACQ,OAAD,EAAUG,WAAV,aAAUA,WAAV,uBAAUA,WAAW,CAAEI,MAAvB,CAAhB,EAAgD;MAEhDL,WAAW;IACZ;;EAZ+B,CAAjB,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,WAAR,IAAuBX,OAAO,CAACY,OAAnC,EAA4C,OAAO,MAAP;EAE5C,IAAIZ,OAAO,CAACa,oBAAR,CAA6BZ,OAA7B,MAA0C,CAA9C,EAAiD,OAAO,MAAP;;EAEjD,IAAIC,QAAQ,CAACY,sBAAb,EAAqC;IACnC,IAAId,OAAO,CAACe,yBAAR,CAAkCd,OAAlC,MAA+C,CAAnD,EAAsD,OAAO,WAAP;IACtD,OAAO,aAAP;EACD;;EAED,OAAO,QAAP;AACD,CA1CM"}
1
+ {"version":3,"names":["isDifferentChannel","isMyMessage","useForceUpdate","useUniqHandlerId","useChannelHandler","useAppFeatures","useMessageOutgoingStatus","sdk","channel","message","features","forceUpdate","currentUser","handlerId","onUndeliveredMemberStatusUpdated","eventChannel","userId","onUnreadMemberStatusUpdated","sendingStatus","isBroadcast","isSuper","getUnreadMemberCount","deliveryReceiptEnabled","getUndeliveredMemberCount"],"sources":["useMessageOutgoingStatus.ts"],"sourcesContent":["import type { SendbirdChatSDK, SendbirdGroupChannel, SendbirdMessage } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, isMyMessage, useForceUpdate, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../handler/useChannelHandler';\nimport { useAppFeatures } from './useAppFeatures';\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 const handlerId = useUniqHandlerId('useMessageOutgoingStatus');\n\n useChannelHandler(sdk, handlerId, {\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.isBroadcast || channel.isSuper) return 'NONE';\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,kBAAkB,EAAEC,WAAW,EAAEC,cAAc,EAAEC,gBAAgB,QAAQ,uBAAuB;AAEzG,SAASC,iBAAiB,QAAQ,8BAA8B;AAChE,SAASC,cAAc,QAAQ,kBAAkB;AAIjD,OAAO,MAAMC,wBAAwB,GAAGA,CACtCC,GAAoB,EACpBC,OAA6B,EAC7BC,OAAgC,KACV;EACtB,MAAMC,QAAQ,GAAGL,cAAc,CAACE,GAAG,CAAC;EACpC,MAAMI,WAAW,GAAGT,cAAc,EAAE;EACpC,MAAMU,WAAW,GAAGL,GAAG,CAACK,WAAW;EACnC,MAAMC,SAAS,GAAGV,gBAAgB,CAAC,0BAA0B,CAAC;EAE9DC,iBAAiB,CAACG,GAAG,EAAEM,SAAS,EAAE;IAChCC,gCAAgCA,CAACC,YAAY,EAAE;MAC7C,IAAIf,kBAAkB,CAACQ,OAAO,EAAEO,YAAY,CAAC,EAAE;MAC/C,IAAI,CAACd,WAAW,CAACQ,OAAO,EAAEG,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEI,MAAM,CAAC,EAAE;MAEhDL,WAAW,EAAE;IACf,CAAC;IACDM,2BAA2BA,CAACF,YAAY,EAAE;MACxC,IAAIf,kBAAkB,CAACQ,OAAO,EAAEO,YAAY,CAAC,EAAE;MAC/C,IAAI,CAACd,WAAW,CAACQ,OAAO,EAAEG,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEI,MAAM,CAAC,EAAE;MAEhDL,WAAW,EAAE;IACf;EACF,CAAC,CAAC;EAEF,IAAI,CAACF,OAAO,EAAE,OAAO,MAAM;EAE3B,IAAI,eAAe,IAAIA,OAAO,EAAE;IAC9B,IAAIA,OAAO,CAACS,aAAa,KAAK,SAAS,EAAE,OAAO,SAAS;IACzD,IAAIT,OAAO,CAACS,aAAa,KAAK,QAAQ,EAAE,OAAO,QAAQ;EACzD;EAEA,IAAIV,OAAO,CAACW,WAAW,IAAIX,OAAO,CAACY,OAAO,EAAE,OAAO,MAAM;EAEzD,IAAIZ,OAAO,CAACa,oBAAoB,CAACZ,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,MAAM;EAE9D,IAAIC,QAAQ,CAACY,sBAAsB,EAAE;IACnC,IAAId,OAAO,CAACe,yBAAyB,CAACd,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,WAAW;IACxE,OAAO,aAAa;EACtB;EAEA,OAAO,QAAQ;AACjB,CAAC"}
@@ -1 +1 @@
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"}
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,WAAW,EAAEC,QAAQ,QAAQ,OAAO;AAE7C,SAASC,iBAAiB,QAAQ,gBAAgB;AAElD,SAASC,MAAM,EAAEC,cAAc,QAAQ,uBAAuB;AAE9D,MAAMC,cAAc,GAAG;EACrB,KAAK,EAAEH,iBAAiB,CAACI,GAAG;EAC5B,cAAc,EAAEJ,iBAAiB,CAACK,YAAY;EAC9C,KAAK,EAAEL,iBAAiB,CAACM,GAAG;EAC5B,SAAS,EAAEN,iBAAiB,CAACO;AAC/B,CAAC;AAED,OAAO,MAAMC,cAAc,GAAIC,GAAoB,IAAK;EACtD,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGZ,QAAQ,CAAoBC,iBAAiB,CAACO,OAAO,CAAC;EAElF,MAAMK,YAAY,GAAGd,WAAW,CAC9B,MAAOe,KAAkC,IAAK;IAC5C,IAAI;MACF,MAAMC,OAAO,GAAGX,cAAc,CAACU,KAAK,CAAC;MACrC,MAAMJ,GAAG,CAACM,oBAAoB,CAACD,OAAO,CAAC,CAACE,IAAI,CAAC,MAAML,SAAS,CAACG,OAAO,CAAC,CAAC;IACxE,CAAC,CAAC,OAAOG,CAAC,EAAE;MACVhB,MAAM,CAACiB,IAAI,CAAC,kBAAkB,EAAE,mCAAmC,EAAED,CAAC,CAAC;IACzE;EACF,CAAC,EACD,CAACR,GAAG,EAAEA,GAAG,CAACU,WAAW,CAAC,CACvB;EAEDjB,cAAc,CAAC,YAAY;IACzBS,SAAS,CAAC,MAAMF,GAAG,CAACW,oBAAoB,EAAE,CAAC;EAC7C,CAAC,EAAE,CAACX,GAAG,EAAEA,GAAG,CAACU,WAAW,CAAC,CAAC;EAE1B,OAAO;IACLT,MAAM;IACNE;EACF,CAAC;AACH,CAAC"}
@@ -4,7 +4,6 @@ import { truncatedCount, useAsyncEffect, useUniqHandlerId } from '@sendbird/uiki
4
4
  import { useUserEventHandler } from '../handler/useUserEventHandler';
5
5
  export const useTotalUnreadMessageCount = (sdk, options) => {
6
6
  var _options$params, _options$params2;
7
-
8
7
  const handlerId = useUniqHandlerId('useTotalUnreadMessageCount');
9
8
  const [unreadMessageCount, setUnreadMessageCount] = useState(0);
10
9
  useAsyncEffect(async () => {
@@ -1 +1 @@
1
- {"version":3,"names":["useState","SuperChannelFilter","truncatedCount","useAsyncEffect","useUniqHandlerId","useUserEventHandler","useTotalUnreadMessageCount","sdk","options","handlerId","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 { truncatedCount, useAsyncEffect, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Options = {\n params?: TotalUnreadMessageCountParams;\n maxCount?: number;\n};\n\nexport const useTotalUnreadMessageCount = (sdk: SendbirdChatSDK, options?: Options) => {\n const handlerId = useUniqHandlerId('useTotalUnreadMessageCount');\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, handlerId, {\n onTotalUnreadMessageCountUpdated: (totalCount: number) => setUnreadMessageCount(totalCount),\n });\n\n return truncatedCount(unreadMessageCount, options?.maxCount);\n};\n"],"mappings":"AAAA,SAASA,QAAT,QAAyB,OAAzB;AAEA,SAASC,kBAAT,QAAkE,6BAAlE;AAEA,SAASC,cAAT,EAAyBC,cAAzB,EAAyCC,gBAAzC,QAAiE,uBAAjE;AAEA,SAASC,mBAAT,QAAoC,gCAApC;AAOA,OAAO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,OAAvB,KAA6C;EAAA;;EACrF,MAAMC,SAAS,GAAGL,gBAAgB,CAAC,4BAAD,CAAlC;EACA,MAAM,CAACM,kBAAD,EAAqBC,qBAArB,IAA8CX,QAAQ,CAAC,CAAD,CAA5D;EAEAG,cAAc,CAAC,YAAY;IACzB,MAAMS,WAAW,GAAG,MAAML,GAAG,CAACM,YAAJ,CAAiBC,0BAAjB,CAA4C;MACpEC,kBAAkB,EAAEd,kBAAkB,CAACe,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;EAQAb,mBAAmB,CAACE,GAAD,EAAME,SAAN,EAAiB;IAClCU,gCAAgC,EAAGC,UAAD,IAAwBT,qBAAqB,CAACS,UAAD;EAD7C,CAAjB,CAAnB;EAIA,OAAOlB,cAAc,CAACQ,kBAAD,EAAqBF,OAArB,aAAqBA,OAArB,uBAAqBA,OAAO,CAAEa,QAA9B,CAArB;AACD,CAjBM"}
1
+ {"version":3,"names":["useState","SuperChannelFilter","truncatedCount","useAsyncEffect","useUniqHandlerId","useUserEventHandler","useTotalUnreadMessageCount","sdk","options","_options$params","_options$params2","handlerId","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 { truncatedCount, useAsyncEffect, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Options = {\n params?: TotalUnreadMessageCountParams;\n maxCount?: number;\n};\n\nexport const useTotalUnreadMessageCount = (sdk: SendbirdChatSDK, options?: Options) => {\n const handlerId = useUniqHandlerId('useTotalUnreadMessageCount');\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, handlerId, {\n onTotalUnreadMessageCountUpdated: (totalCount: number) => setUnreadMessageCount(totalCount),\n });\n\n return truncatedCount(unreadMessageCount, options?.maxCount);\n};\n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,OAAO;AAEhC,SAASC,kBAAkB,QAAuC,6BAA6B;AAE/F,SAASC,cAAc,EAAEC,cAAc,EAAEC,gBAAgB,QAAQ,uBAAuB;AAExF,SAASC,mBAAmB,QAAQ,gCAAgC;AAOpE,OAAO,MAAMC,0BAA0B,GAAGA,CAACC,GAAoB,EAAEC,OAAiB,KAAK;EAAA,IAAAC,eAAA,EAAAC,gBAAA;EACrF,MAAMC,SAAS,GAAGP,gBAAgB,CAAC,4BAA4B,CAAC;EAChE,MAAM,CAACQ,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGb,QAAQ,CAAC,CAAC,CAAC;EAE/DG,cAAc,CAAC,YAAY;IACzB,MAAMW,WAAW,GAAG,MAAMP,GAAG,CAACQ,YAAY,CAACC,0BAA0B,CAAC;MACpEC,kBAAkB,EAAEhB,kBAAkB,CAACiB,GAAG;MAC1C,IAAGV,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEW,MAAM;IACpB,CAAC,CAAC;IACFN,qBAAqB,CAACC,WAAW,CAAC;EACpC,CAAC,EAAE,CAACP,GAAG,EAAEC,OAAO,aAAPA,OAAO,wBAAAC,eAAA,GAAPD,OAAO,CAAEW,MAAM,cAAAV,eAAA,uBAAfA,eAAA,CAAiBQ,kBAAkB,EAAET,OAAO,aAAPA,OAAO,wBAAAE,gBAAA,GAAPF,OAAO,CAAEW,MAAM,cAAAT,gBAAA,uBAAfA,gBAAA,CAAiBU,wBAAwB,CAAC,CAAC;EAEzFf,mBAAmB,CAACE,GAAG,EAAEI,SAAS,EAAE;IAClCU,gCAAgC,EAAGC,UAAkB,IAAKT,qBAAqB,CAACS,UAAU;EAC5F,CAAC,CAAC;EAEF,OAAOpB,cAAc,CAACU,kBAAkB,EAAEJ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEe,QAAQ,CAAC;AAC9D,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import { useMemo, useRef, useState } from 'react';
2
2
  import { Logger, SBErrorCode, SBErrorMessage, useAsyncEffect, useFreshCallback } from '@sendbird/uikit-utils';
3
-
4
3
  const createUserQuery = (sdk, queryCreator) => {
5
- if (queryCreator) return queryCreator(); // In order to use the API, the option must be turned on in the dashboard.
6
-
4
+ if (queryCreator) return queryCreator();
5
+ // In order to use the API, the option must be turned on in the dashboard.
7
6
  return sdk.createApplicationUserListQuery();
8
7
  };
8
+
9
9
  /**
10
10
  * Get user list from query.
11
11
  * default query uses 'instance.createApplicationUserListQuery'
@@ -27,8 +27,6 @@ const createUserQuery = (sdk, queryCreator) => {
27
27
  * })
28
28
  * ```
29
29
  * */
30
-
31
-
32
30
  export const useUserList = (sdk, options) => {
33
31
  const query = useRef();
34
32
  const [error, setError] = useState(null);
@@ -55,19 +53,14 @@ export const useUserList = (sdk, options) => {
55
53
  return draft;
56
54
  });
57
55
  });
58
-
59
56
  const updateUsers = (users, clearPrev) => {
60
57
  if (clearPrev) setUsers(users);else setUsers(prev => prev.concat(users));
61
58
  };
62
-
63
59
  const init = useFreshCallback(async () => {
64
60
  var _query$current;
65
-
66
61
  query.current = createUserQuery(sdk, options === null || options === void 0 ? void 0 : options.queryCreator);
67
-
68
62
  if ((_query$current = query.current) !== null && _query$current !== void 0 && _query$current.hasNext) {
69
63
  var _query$current2;
70
-
71
64
  const users = await ((_query$current2 = query.current) === null || _query$current2 === void 0 ? void 0 : _query$current2.next().catch(e => {
72
65
  Logger.error(e);
73
66
  if (e.code === SBErrorCode.NON_AUTHORIZED) Logger.warn(SBErrorMessage.ACL);
@@ -79,7 +72,6 @@ export const useUserList = (sdk, options) => {
79
72
  useAsyncEffect(async () => {
80
73
  setLoading(true);
81
74
  setError(null);
82
-
83
75
  try {
84
76
  await init();
85
77
  } catch (e) {
@@ -92,7 +84,6 @@ export const useUserList = (sdk, options) => {
92
84
  const refresh = useFreshCallback(async () => {
93
85
  setRefreshing(true);
94
86
  setError(null);
95
-
96
87
  try {
97
88
  await init();
98
89
  } catch (e) {
@@ -104,7 +95,6 @@ export const useUserList = (sdk, options) => {
104
95
  });
105
96
  const next = useFreshCallback(async () => {
106
97
  var _query$current3;
107
-
108
98
  if (query.current && (_query$current3 = query.current) !== null && _query$current3 !== void 0 && _query$current3.hasNext) {
109
99
  const nextUsers = await query.current.next().catch(e => {
110
100
  Logger.error(e);
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","useRef","useState","Logger","SBErrorCode","SBErrorMessage","useAsyncEffect","useFreshCallback","createUserQuery","sdk","queryCreator","createApplicationUserListQuery","useUserList","options","query","error","setError","loading","setLoading","refreshing","setRefreshing","users","setUsers","sortedUsers","sortComparator","sort","upsertUser","user","draft","userIdx","findIndex","it","userId","push","deleteUser","splice","updateUsers","clearPrev","prev","concat","init","current","hasNext","next","catch","e","code","NON_AUTHORIZED","warn","ACL","refresh","nextUsers"],"sources":["useUserList.ts"],"sourcesContent":["import { useMemo, useRef, useState } from 'react';\n\nimport type { Optional, SendbirdChatSDK, SendbirdUser, UserStruct } from '@sendbird/uikit-utils';\nimport { Logger, SBErrorCode, SBErrorMessage, useAsyncEffect, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport type { CustomQueryInterface, UseUserListOptions, UseUserListReturn } from '../types';\n\nconst createUserQuery = <User extends UserStruct>(\n sdk: SendbirdChatSDK,\n queryCreator?: UseUserListOptions<User>['queryCreator'],\n) => {\n if (queryCreator) return queryCreator();\n // In order to use the API, the option must be turned on in the dashboard.\n return sdk.createApplicationUserListQuery() as unknown as CustomQueryInterface<User>;\n};\n\n/**\n * Get user list from query.\n * default query uses 'instance.createApplicationUserListQuery'\n * The response type of hook is depends on return type of 'query.next()'\n *\n * You can call hook with your custom query using {@link CustomQuery}\n * Or you can create your 'CustomQueryClass' implemented {@link CustomQueryInterface}'\n *\n * ```example\n * const { users } = useUserList(sdk, {\n * queryCreator: () => {\n * const friendQuery = sdk.createFriendListQuery();\n * return new CustomQuery({\n * next: () => friendQuery.next(),\n * isLoading: () => friendQuery.isLoading,\n * hasNext: () => friendQuery.hasMore,\n * });\n * }\n * })\n * ```\n * */\nexport const useUserList = <\n Options extends UseUserListOptions<QueriedUser>,\n QueriedUser extends UserStruct = Options['queryCreator'] extends Optional<\n () => CustomQueryInterface<infer User extends UserStruct>\n >\n ? User\n : SendbirdUser,\n>(\n sdk: SendbirdChatSDK,\n options?: Options,\n): UseUserListReturn<QueriedUser> => {\n const query = useRef<CustomQueryInterface<QueriedUser>>();\n\n const [error, setError] = useState<unknown>(null);\n const [loading, setLoading] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n\n const [users, setUsers] = useState<QueriedUser[]>([]);\n const sortedUsers = useMemo((): QueriedUser[] => {\n if (options?.sortComparator) return users.sort(options.sortComparator);\n return users;\n }, [users, options?.sortComparator]);\n\n const upsertUser = useFreshCallback((user: QueriedUser) => {\n setUsers(([...draft]) => {\n const userIdx = draft.findIndex((it) => it.userId === user.userId);\n if (userIdx > -1) draft[userIdx] = user;\n else draft.push(user);\n return draft;\n });\n });\n\n const deleteUser = useFreshCallback((userId: QueriedUser['userId']) => {\n setUsers(([...draft]) => {\n const userIdx = draft.findIndex((it) => it.userId === userId);\n if (userIdx > -1) draft.splice(userIdx, 1);\n return draft;\n });\n });\n\n const updateUsers = (users: QueriedUser[], clearPrev: boolean) => {\n if (clearPrev) setUsers(users);\n else setUsers((prev) => prev.concat(users));\n };\n\n const init = useFreshCallback(async () => {\n query.current = createUserQuery<QueriedUser>(sdk, options?.queryCreator);\n if (query.current?.hasNext) {\n const users = await query.current?.next().catch((e) => {\n Logger.error(e);\n if (e.code === SBErrorCode.NON_AUTHORIZED) Logger.warn(SBErrorMessage.ACL);\n throw e;\n });\n updateUsers(users, true);\n }\n });\n\n useAsyncEffect(async () => {\n setLoading(true);\n setError(null);\n try {\n await init();\n } catch (e) {\n setError(e);\n setUsers([]);\n } finally {\n setLoading(false);\n }\n }, []);\n\n const refresh = useFreshCallback(async () => {\n setRefreshing(true);\n setError(null);\n try {\n await init();\n } catch (e) {\n setError(e);\n setUsers([]);\n } finally {\n setRefreshing(false);\n }\n });\n\n const next = useFreshCallback(async () => {\n if (query.current && query.current?.hasNext) {\n const nextUsers = await query.current.next().catch((e) => {\n Logger.error(e);\n if (e.code === SBErrorCode.NON_AUTHORIZED) Logger.warn(SBErrorMessage.ACL);\n throw e;\n });\n updateUsers(nextUsers, false);\n }\n });\n\n return {\n loading,\n error,\n users: sortedUsers,\n upsertUser,\n deleteUser,\n next,\n refreshing,\n refresh,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["useMemo","useRef","useState","Logger","SBErrorCode","SBErrorMessage","useAsyncEffect","useFreshCallback","createUserQuery","sdk","queryCreator","createApplicationUserListQuery","useUserList","options","query","error","setError","loading","setLoading","refreshing","setRefreshing","users","setUsers","sortedUsers","sortComparator","sort","upsertUser","user","_ref","draft","userIdx","findIndex","it","userId","push","deleteUser","_ref2","splice","updateUsers","clearPrev","prev","concat","init","_query$current","current","hasNext","_query$current2","next","catch","e","code","NON_AUTHORIZED","warn","ACL","refresh","_query$current3","nextUsers"],"sources":["useUserList.ts"],"sourcesContent":["import { useMemo, useRef, useState } from 'react';\n\nimport type { Optional, SendbirdChatSDK, SendbirdUser, UserStruct } from '@sendbird/uikit-utils';\nimport { Logger, SBErrorCode, SBErrorMessage, useAsyncEffect, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport type { CustomQueryInterface, UseUserListOptions, UseUserListReturn } from '../types';\n\nconst createUserQuery = <User extends UserStruct>(\n sdk: SendbirdChatSDK,\n queryCreator?: UseUserListOptions<User>['queryCreator'],\n) => {\n if (queryCreator) return queryCreator();\n // In order to use the API, the option must be turned on in the dashboard.\n return sdk.createApplicationUserListQuery() as unknown as CustomQueryInterface<User>;\n};\n\n/**\n * Get user list from query.\n * default query uses 'instance.createApplicationUserListQuery'\n * The response type of hook is depends on return type of 'query.next()'\n *\n * You can call hook with your custom query using {@link CustomQuery}\n * Or you can create your 'CustomQueryClass' implemented {@link CustomQueryInterface}'\n *\n * ```example\n * const { users } = useUserList(sdk, {\n * queryCreator: () => {\n * const friendQuery = sdk.createFriendListQuery();\n * return new CustomQuery({\n * next: () => friendQuery.next(),\n * isLoading: () => friendQuery.isLoading,\n * hasNext: () => friendQuery.hasMore,\n * });\n * }\n * })\n * ```\n * */\nexport const useUserList = <\n Options extends UseUserListOptions<UserStruct>,\n QueriedUser extends UserStruct = Options['queryCreator'] extends Optional<\n () => CustomQueryInterface<infer User extends UserStruct>\n >\n ? User\n : SendbirdUser,\n>(\n sdk: SendbirdChatSDK,\n options?: UseUserListOptions<QueriedUser>,\n): UseUserListReturn<QueriedUser> => {\n const query = useRef<CustomQueryInterface<QueriedUser>>();\n\n const [error, setError] = useState<unknown>(null);\n const [loading, setLoading] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n\n const [users, setUsers] = useState<QueriedUser[]>([]);\n const sortedUsers = useMemo((): QueriedUser[] => {\n if (options?.sortComparator) return users.sort(options.sortComparator);\n return users;\n }, [users, options?.sortComparator]);\n\n const upsertUser = useFreshCallback((user: QueriedUser) => {\n setUsers(([...draft]) => {\n const userIdx = draft.findIndex((it) => it.userId === user.userId);\n if (userIdx > -1) draft[userIdx] = user;\n else draft.push(user);\n return draft;\n });\n });\n\n const deleteUser = useFreshCallback((userId: QueriedUser['userId']) => {\n setUsers(([...draft]) => {\n const userIdx = draft.findIndex((it) => it.userId === userId);\n if (userIdx > -1) draft.splice(userIdx, 1);\n return draft;\n });\n });\n\n const updateUsers = (users: QueriedUser[], clearPrev: boolean) => {\n if (clearPrev) setUsers(users);\n else setUsers((prev) => prev.concat(users));\n };\n\n const init = useFreshCallback(async () => {\n query.current = createUserQuery<QueriedUser>(sdk, options?.queryCreator);\n if (query.current?.hasNext) {\n const users = await query.current?.next().catch((e) => {\n Logger.error(e);\n if (e.code === SBErrorCode.NON_AUTHORIZED) Logger.warn(SBErrorMessage.ACL);\n throw e;\n });\n updateUsers(users, true);\n }\n });\n\n useAsyncEffect(async () => {\n setLoading(true);\n setError(null);\n try {\n await init();\n } catch (e) {\n setError(e);\n setUsers([]);\n } finally {\n setLoading(false);\n }\n }, []);\n\n const refresh = useFreshCallback(async () => {\n setRefreshing(true);\n setError(null);\n try {\n await init();\n } catch (e) {\n setError(e);\n setUsers([]);\n } finally {\n setRefreshing(false);\n }\n });\n\n const next = useFreshCallback(async () => {\n if (query.current && query.current?.hasNext) {\n const nextUsers = await query.current.next().catch((e) => {\n Logger.error(e);\n if (e.code === SBErrorCode.NON_AUTHORIZED) Logger.warn(SBErrorMessage.ACL);\n throw e;\n });\n updateUsers(nextUsers, false);\n }\n });\n\n return {\n loading,\n error,\n users: sortedUsers,\n upsertUser,\n deleteUser,\n next,\n refreshing,\n refresh,\n };\n};\n"],"mappings":"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"}
@@ -1,23 +1,6 @@
1
1
  import { useEffect, useLayoutEffect, useRef } from 'react';
2
2
  import { GroupChannelHandler } from '@sendbird/chat/groupChannel';
3
3
  import { OpenChannelHandler } from '@sendbird/chat/openChannel';
4
- import { Logger } from '@sendbird/uikit-utils';
5
-
6
- function getChannelHandler(type) {
7
- switch (type) {
8
- case 'open':
9
- {
10
- return new OpenChannelHandler();
11
- }
12
-
13
- case 'group':
14
- default:
15
- {
16
- return new GroupChannelHandler();
17
- }
18
- }
19
- }
20
-
21
4
  export const useChannelHandler = function (sdk, handlerId, hookHandler) {
22
5
  let type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'group';
23
6
  const handlerRef = useRef(hookHandler);
@@ -25,28 +8,25 @@ export const useChannelHandler = function (sdk, handlerId, hookHandler) {
25
8
  handlerRef.current = hookHandler;
26
9
  });
27
10
  useEffect(() => {
28
- Logger.debug('[useChannelHandler] hook called by', handlerId);
29
- const handler = getChannelHandler(type);
30
- const handlerKeys = Object.keys(handler);
31
- handlerKeys.forEach(key => {
32
- handler[key] = function () {
33
- var _handlerRef$current$k, _handlerRef$current;
34
-
35
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
36
- args[_key] = arguments[_key];
37
- }
38
-
11
+ const handlerMapper = handler => {
12
+ const handlerKeys = Object.keys(handler);
13
+ handlerKeys.forEach(key => {
39
14
  // @ts-ignore
40
- (_handlerRef$current$k = (_handlerRef$current = handlerRef.current)[key]) === null || _handlerRef$current$k === void 0 ? void 0 : _handlerRef$current$k.call(_handlerRef$current, ...args);
41
- };
42
- });
43
-
15
+ handler[key] = function () {
16
+ var _handlerRef$current, _handlerRef$current$k;
17
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
18
+ args[_key] = arguments[_key];
19
+ }
20
+ return (_handlerRef$current = handlerRef.current) === null || _handlerRef$current === void 0 ? void 0 : (_handlerRef$current$k = _handlerRef$current[key]) === null || _handlerRef$current$k === void 0 ? void 0 : _handlerRef$current$k.call(_handlerRef$current, ...args);
21
+ };
22
+ });
23
+ return handler;
24
+ };
44
25
  if (type === 'group') {
45
- sdk.groupChannel.addGroupChannelHandler(handlerId, handler);
26
+ sdk.groupChannel.addGroupChannelHandler(handlerId, handlerMapper(new GroupChannelHandler()));
46
27
  } else if (type === 'open') {
47
- sdk.openChannel.addOpenChannelHandler(handlerId, handler);
28
+ sdk.openChannel.addOpenChannelHandler(handlerId, handlerMapper(new OpenChannelHandler()));
48
29
  }
49
-
50
30
  return () => {
51
31
  if (type === 'group') {
52
32
  sdk.groupChannel.removeGroupChannelHandler(handlerId);
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useLayoutEffect","useRef","GroupChannelHandler","OpenChannelHandler","Logger","getChannelHandler","type","useChannelHandler","sdk","handlerId","hookHandler","handlerRef","current","debug","handler","handlerKeys","Object","keys","forEach","key","args","groupChannel","addGroupChannelHandler","openChannel","addOpenChannelHandler","removeGroupChannelHandler","removeOpenChannelHandler"],"sources":["useChannelHandler.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { GroupChannelHandler } from '@sendbird/chat/groupChannel';\nimport { OpenChannelHandler } from '@sendbird/chat/openChannel';\nimport { Logger, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\ntype ChannelType = 'open' | 'group';\n\nfunction getChannelHandler(type: ChannelType) {\n switch (type) {\n case 'open': {\n return new OpenChannelHandler();\n }\n case 'group':\n default: {\n return new GroupChannelHandler();\n }\n }\n}\nexport const useChannelHandler = <T extends ChannelType = 'group'>(\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<T extends 'group' ? GroupChannelHandler : OpenChannelHandler>,\n type = 'group' as T,\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 = getChannelHandler(type);\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 if (type === 'group') {\n sdk.groupChannel.addGroupChannelHandler(handlerId, handler);\n } else if (type === 'open') {\n sdk.openChannel.addOpenChannelHandler(handlerId, handler);\n }\n\n return () => {\n if (type === 'group') {\n sdk.groupChannel.removeGroupChannelHandler(handlerId);\n } else if (type === 'open') {\n sdk.openChannel.removeOpenChannelHandler(handlerId);\n }\n };\n }, [sdk, handlerId]);\n};\n"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,eAApB,EAAqCC,MAArC,QAAmD,OAAnD;AAEA,SAASC,mBAAT,QAAoC,6BAApC;AACA,SAASC,kBAAT,QAAmC,4BAAnC;AACA,SAASC,MAAT,QAAwC,uBAAxC;;AAIA,SAASC,iBAAT,CAA2BC,IAA3B,EAA8C;EAC5C,QAAQA,IAAR;IACE,KAAK,MAAL;MAAa;QACX,OAAO,IAAIH,kBAAJ,EAAP;MACD;;IACD,KAAK,OAAL;IACA;MAAS;QACP,OAAO,IAAID,mBAAJ,EAAP;MACD;EAPH;AASD;;AACD,OAAO,MAAMK,iBAAiB,GAAG,UAC/BC,GAD+B,EAE/BC,SAF+B,EAG/BC,WAH+B,EAK5B;EAAA,IADHJ,IACG,uEADI,OACJ;EACH,MAAMK,UAAU,GAAGV,MAAM,CAACS,WAAD,CAAzB;EACAV,eAAe,CAAC,MAAM;IACpBW,UAAU,CAACC,OAAX,GAAqBF,WAArB;EACD,CAFc,CAAf;EAIAX,SAAS,CAAC,MAAM;IACdK,MAAM,CAACS,KAAP,CAAa,oCAAb,EAAmDJ,SAAnD;IAEA,MAAMK,OAAO,GAAGT,iBAAiB,CAACC,IAAD,CAAjC;IACA,MAAMS,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;;IAOA,IAAId,IAAI,KAAK,OAAb,EAAsB;MACpBE,GAAG,CAACa,YAAJ,CAAiBC,sBAAjB,CAAwCb,SAAxC,EAAmDK,OAAnD;IACD,CAFD,MAEO,IAAIR,IAAI,KAAK,MAAb,EAAqB;MAC1BE,GAAG,CAACe,WAAJ,CAAgBC,qBAAhB,CAAsCf,SAAtC,EAAiDK,OAAjD;IACD;;IAED,OAAO,MAAM;MACX,IAAIR,IAAI,KAAK,OAAb,EAAsB;QACpBE,GAAG,CAACa,YAAJ,CAAiBI,yBAAjB,CAA2ChB,SAA3C;MACD,CAFD,MAEO,IAAIH,IAAI,KAAK,MAAb,EAAqB;QAC1BE,GAAG,CAACe,WAAJ,CAAgBG,wBAAhB,CAAyCjB,SAAzC;MACD;IACF,CAND;EAOD,CAzBQ,EAyBN,CAACD,GAAD,EAAMC,SAAN,CAzBM,CAAT;AA0BD,CArCM"}
1
+ {"version":3,"names":["useEffect","useLayoutEffect","useRef","GroupChannelHandler","OpenChannelHandler","useChannelHandler","sdk","handlerId","hookHandler","type","arguments","length","undefined","handlerRef","current","handlerMapper","handler","handlerKeys","Object","keys","forEach","key","_handlerRef$current","_handlerRef$current$k","_len","args","Array","_key","call","groupChannel","addGroupChannelHandler","openChannel","addOpenChannelHandler","removeGroupChannelHandler","removeOpenChannelHandler"],"sources":["useChannelHandler.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { GroupChannelHandler } from '@sendbird/chat/groupChannel';\nimport { OpenChannelHandler } from '@sendbird/chat/openChannel';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\n\ntype ChannelType = 'open' | 'group';\n\nexport const useChannelHandler = <T extends ChannelType = 'group'>(\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<T extends 'group' ? GroupChannelHandler : OpenChannelHandler>,\n type: T = 'group' as T,\n) => {\n const handlerRef = useRef(hookHandler);\n useLayoutEffect(() => {\n handlerRef.current = hookHandler;\n });\n\n useEffect(() => {\n const handlerMapper = <T extends GroupChannelHandler | OpenChannelHandler>(handler: T): T => {\n const handlerKeys = Object.keys(handler) as (keyof T)[];\n handlerKeys.forEach((key) => {\n // @ts-ignore\n handler[key] = (...args: unknown[]) => handlerRef.current?.[key]?.(...args);\n });\n return handler;\n };\n\n if (type === 'group') {\n sdk.groupChannel.addGroupChannelHandler(handlerId, handlerMapper(new GroupChannelHandler()));\n } else if (type === 'open') {\n sdk.openChannel.addOpenChannelHandler(handlerId, handlerMapper(new OpenChannelHandler()));\n }\n\n return () => {\n if (type === 'group') {\n sdk.groupChannel.removeGroupChannelHandler(handlerId);\n } else if (type === 'open') {\n sdk.openChannel.removeOpenChannelHandler(handlerId);\n }\n };\n }, [sdk, handlerId]);\n};\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,eAAe,EAAEC,MAAM,QAAQ,OAAO;AAE1D,SAASC,mBAAmB,QAAQ,6BAA6B;AACjE,SAASC,kBAAkB,QAAQ,4BAA4B;AAK/D,OAAO,MAAMC,iBAAiB,GAAG,SAAAA,CAC/BC,GAAoB,EACpBC,SAAiB,EACjBC,WAAkF,EAE/E;EAAA,IADHC,IAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,OAAO;EAEjB,MAAMG,UAAU,GAAGX,MAAM,CAACM,WAAW,CAAC;EACtCP,eAAe,CAAC,MAAM;IACpBY,UAAU,CAACC,OAAO,GAAGN,WAAW;EAClC,CAAC,CAAC;EAEFR,SAAS,CAAC,MAAM;IACd,MAAMe,aAAa,GAAwDC,OAAU,IAAQ;MAC3F,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAI,CAACH,OAAO,CAAgB;MACvDC,WAAW,CAACG,OAAO,CAAEC,GAAG,IAAK;QAC3B;QACAL,OAAO,CAACK,GAAG,CAAC,GAAG;UAAA,IAAAC,mBAAA,EAAAC,qBAAA;UAAA,SAAAC,IAAA,GAAAd,SAAA,CAAAC,MAAA,EAAIc,IAAI,OAAAC,KAAA,CAAAF,IAAA,GAAAG,IAAA,MAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA;YAAJF,IAAI,CAAAE,IAAA,IAAAjB,SAAA,CAAAiB,IAAA;UAAA;UAAA,QAAAL,mBAAA,GAAgBT,UAAU,CAACC,OAAO,cAAAQ,mBAAA,wBAAAC,qBAAA,GAAlBD,mBAAA,CAAqBD,GAAG,CAAC,cAAAE,qBAAA,uBAAzBA,qBAAA,CAAAK,IAAA,CAAAN,mBAAA,EAA4B,GAAGG,IAAI,CAAC;QAAA;MAC7E,CAAC,CAAC;MACF,OAAOT,OAAO;IAChB,CAAC;IAED,IAAIP,IAAI,KAAK,OAAO,EAAE;MACpBH,GAAG,CAACuB,YAAY,CAACC,sBAAsB,CAACvB,SAAS,EAAEQ,aAAa,CAAC,IAAIZ,mBAAmB,EAAE,CAAC,CAAC;IAC9F,CAAC,MAAM,IAAIM,IAAI,KAAK,MAAM,EAAE;MAC1BH,GAAG,CAACyB,WAAW,CAACC,qBAAqB,CAACzB,SAAS,EAAEQ,aAAa,CAAC,IAAIX,kBAAkB,EAAE,CAAC,CAAC;IAC3F;IAEA,OAAO,MAAM;MACX,IAAIK,IAAI,KAAK,OAAO,EAAE;QACpBH,GAAG,CAACuB,YAAY,CAACI,yBAAyB,CAAC1B,SAAS,CAAC;MACvD,CAAC,MAAM,IAAIE,IAAI,KAAK,MAAM,EAAE;QAC1BH,GAAG,CAACyB,WAAW,CAACG,wBAAwB,CAAC3B,SAAS,CAAC;MACrD;IACF,CAAC;EACH,CAAC,EAAE,CAACD,GAAG,EAAEC,SAAS,CAAC,CAAC;AACtB,CAAC"}
@@ -1,18 +1,27 @@
1
- import { useEffect } from 'react';
1
+ import { useEffect, useLayoutEffect, useRef } from 'react';
2
2
  import { ConnectionHandler } from '@sendbird/chat';
3
3
  import { Logger } from '@sendbird/uikit-utils';
4
- export const useConnectionHandler = function (sdk, handlerId, hookHandler) {
5
- let deps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
4
+ export const useConnectionHandler = (sdk, handlerId, hookHandler) => {
5
+ const handlerRef = useRef();
6
+ useLayoutEffect(() => {
7
+ handlerRef.current = hookHandler;
8
+ });
6
9
  useEffect(() => {
7
10
  Logger.info('[useConnectionHandler]', handlerId);
8
11
  const handler = new ConnectionHandler();
9
12
  const handlerKeys = Object.keys(handler);
10
13
  handlerKeys.forEach(key => {
11
- // @ts-ignore
12
- if (hookHandler[key]) handler[key] = hookHandler[key];
14
+ handler[key] = function () {
15
+ var _handlerRef$current$k, _handlerRef$current;
16
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
17
+ args[_key] = arguments[_key];
18
+ }
19
+ // @ts-ignore
20
+ (_handlerRef$current$k = (_handlerRef$current = handlerRef.current)[key]) === null || _handlerRef$current$k === void 0 ? void 0 : _handlerRef$current$k.call(_handlerRef$current, ...args);
21
+ };
13
22
  });
14
23
  sdk.addConnectionHandler(handlerId, handler);
15
24
  return () => sdk.removeConnectionHandler(handlerId);
16
- }, [sdk, handlerId, ...deps]);
25
+ }, [sdk, handlerId]);
17
26
  };
18
27
  //# sourceMappingURL=useConnectionHandler.js.map