@sendbird/uikit-chat-hooks 2.2.0 → 2.4.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 (110) hide show
  1. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js +2 -4
  2. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
  3. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js +2 -3
  4. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
  5. package/lib/commonjs/channel/useGroupChannelMessages/reducer.js +0 -4
  6. package/lib/commonjs/channel/useGroupChannelMessages/reducer.js.map +1 -1
  7. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +7 -8
  8. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  9. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +8 -7
  10. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  11. package/lib/commonjs/channel/useOpenChannel.js +33 -0
  12. package/lib/commonjs/channel/useOpenChannel.js.map +1 -0
  13. package/lib/commonjs/channel/useOpenChannelList/index.js +15 -0
  14. package/lib/commonjs/channel/useOpenChannelList/index.js.map +1 -0
  15. package/lib/commonjs/channel/useOpenChannelList/reducer.js +149 -0
  16. package/lib/commonjs/channel/useOpenChannelList/reducer.js.map +1 -0
  17. package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js +119 -0
  18. package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -0
  19. package/lib/commonjs/channel/useOpenChannelMessages/index.js +15 -0
  20. package/lib/commonjs/channel/useOpenChannelMessages/index.js.map +1 -0
  21. package/lib/commonjs/channel/useOpenChannelMessages/reducer.js +154 -0
  22. package/lib/commonjs/channel/useOpenChannelMessages/reducer.js.map +1 -0
  23. package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +240 -0
  24. package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -0
  25. package/lib/commonjs/common/useMessageOutgoingStatus.js +2 -4
  26. package/lib/commonjs/common/useMessageOutgoingStatus.js.map +1 -1
  27. package/lib/commonjs/common/useTotalUnreadChannelCount.js +2 -4
  28. package/lib/commonjs/common/useTotalUnreadChannelCount.js.map +1 -1
  29. package/lib/commonjs/common/useTotalUnreadMessageCount.js +2 -4
  30. package/lib/commonjs/common/useTotalUnreadMessageCount.js.map +1 -1
  31. package/lib/commonjs/common/useUserList.js +2 -0
  32. package/lib/commonjs/common/useUserList.js.map +1 -1
  33. package/lib/commonjs/handler/useChannelHandler.js +34 -4
  34. package/lib/commonjs/handler/useChannelHandler.js.map +1 -1
  35. package/lib/commonjs/index.js +24 -8
  36. package/lib/commonjs/index.js.map +1 -1
  37. package/lib/commonjs/types.js.map +1 -1
  38. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js +3 -4
  39. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
  40. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js +3 -3
  41. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
  42. package/lib/module/channel/useGroupChannelMessages/reducer.js +0 -4
  43. package/lib/module/channel/useGroupChannelMessages/reducer.js.map +1 -1
  44. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +8 -8
  45. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  46. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +9 -7
  47. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  48. package/lib/module/channel/useOpenChannel.js +22 -0
  49. package/lib/module/channel/useOpenChannel.js.map +1 -0
  50. package/lib/module/channel/useOpenChannelList/index.js +5 -0
  51. package/lib/module/channel/useOpenChannelList/index.js.map +1 -0
  52. package/lib/module/channel/useOpenChannelList/reducer.js +139 -0
  53. package/lib/module/channel/useOpenChannelList/reducer.js.map +1 -0
  54. package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js +107 -0
  55. package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -0
  56. package/lib/module/channel/useOpenChannelMessages/index.js +5 -0
  57. package/lib/module/channel/useOpenChannelMessages/index.js.map +1 -0
  58. package/lib/module/channel/useOpenChannelMessages/reducer.js +144 -0
  59. package/lib/module/channel/useOpenChannelMessages/reducer.js.map +1 -0
  60. package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +228 -0
  61. package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -0
  62. package/lib/module/common/useMessageOutgoingStatus.js +3 -4
  63. package/lib/module/common/useMessageOutgoingStatus.js.map +1 -1
  64. package/lib/module/common/useTotalUnreadChannelCount.js +3 -5
  65. package/lib/module/common/useTotalUnreadChannelCount.js.map +1 -1
  66. package/lib/module/common/useTotalUnreadMessageCount.js +3 -4
  67. package/lib/module/common/useTotalUnreadMessageCount.js.map +1 -1
  68. package/lib/module/common/useUserList.js +2 -0
  69. package/lib/module/common/useUserList.js.map +1 -1
  70. package/lib/module/handler/useChannelHandler.js +34 -4
  71. package/lib/module/handler/useChannelHandler.js.map +1 -1
  72. package/lib/module/index.js +3 -1
  73. package/lib/module/index.js.map +1 -1
  74. package/lib/module/types.js.map +1 -1
  75. package/lib/typescript/src/channel/useOpenChannel.d.ts +6 -0
  76. package/lib/typescript/src/channel/useOpenChannelList/index.d.ts +2 -0
  77. package/lib/typescript/src/channel/useOpenChannelList/reducer.d.ts +13 -0
  78. package/lib/typescript/src/channel/useOpenChannelList/useOpenChannelListWithQuery.d.ts +2 -0
  79. package/lib/typescript/src/channel/useOpenChannelMessages/index.d.ts +2 -0
  80. package/lib/typescript/src/channel/useOpenChannelMessages/reducer.d.ts +15 -0
  81. package/lib/typescript/src/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.d.ts +2 -0
  82. package/lib/typescript/src/handler/useChannelHandler.d.ts +4 -1
  83. package/lib/typescript/src/index.d.ts +4 -2
  84. package/lib/typescript/src/types.d.ts +141 -3
  85. package/package.json +4 -4
  86. package/src/channel/useGroupChannelList/useGroupChannelListWithCollection.ts +3 -5
  87. package/src/channel/useGroupChannelList/useGroupChannelListWithQuery.ts +3 -4
  88. package/src/channel/useGroupChannelMessages/reducer.ts +0 -4
  89. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +8 -8
  90. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +9 -6
  91. package/src/channel/useOpenChannel.ts +21 -0
  92. package/src/channel/useOpenChannelList/index.ts +6 -0
  93. package/src/channel/useOpenChannelList/reducer.ts +115 -0
  94. package/src/channel/useOpenChannelList/useOpenChannelListWithQuery.ts +112 -0
  95. package/src/channel/useOpenChannelMessages/index.ts +6 -0
  96. package/src/channel/useOpenChannelMessages/reducer.ts +125 -0
  97. package/src/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.ts +247 -0
  98. package/src/common/useMessageOutgoingStatus.ts +3 -5
  99. package/src/common/useTotalUnreadChannelCount.ts +3 -5
  100. package/src/common/useTotalUnreadMessageCount.ts +3 -4
  101. package/src/common/useUserList.ts +2 -0
  102. package/src/handler/useChannelHandler.ts +31 -5
  103. package/src/index.ts +8 -1
  104. package/src/types.ts +171 -2
  105. package/lib/commonjs/channel/useActiveGroupChannel.js +0 -22
  106. package/lib/commonjs/channel/useActiveGroupChannel.js.map +0 -1
  107. package/lib/module/channel/useActiveGroupChannel.js +0 -12
  108. package/lib/module/channel/useActiveGroupChannel.js.map +0 -1
  109. package/lib/typescript/src/channel/useActiveGroupChannel.d.ts +0 -5
  110. package/src/channel/useActiveGroupChannel.ts +0 -13
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useOpenChannelMessagesWithQuery = void 0;
7
+
8
+ var _react = require("react");
9
+
10
+ var _uikitUtils = require("@sendbird/uikit-utils");
11
+
12
+ var _useChannelHandler = require("../../handler/useChannelHandler");
13
+
14
+ var _reducer = require("./reducer");
15
+
16
+ const createMessageQuery = (channel, creator) => {
17
+ if (creator) return creator();
18
+ return channel.createPreviousMessageListQuery({
19
+ limit: 100,
20
+ reverse: true
21
+ });
22
+ };
23
+
24
+ const useOpenChannelMessagesWithQuery = (sdk, channel, userId, options) => {
25
+ const queryRef = (0, _react.useRef)();
26
+ const forceUpdate = (0, _uikitUtils.useForceUpdate)();
27
+ const handlerId = (0, _uikitUtils.useUniqHandlerId)('useOpenChannelMessagesWithQuery');
28
+ const {
29
+ loading,
30
+ refreshing,
31
+ messages,
32
+ nextMessages,
33
+ newMessagesFromMembers,
34
+ updateMessages,
35
+ updateNextMessages,
36
+ deleteNextMessages,
37
+ deleteMessages,
38
+ updateLoading,
39
+ updateRefreshing
40
+ } = (0, _reducer.useOpenChannelMessagesReducer)(userId, options === null || options === void 0 ? void 0 : options.sortComparator);
41
+ const init = (0, _uikitUtils.useFreshCallback)(async uid => {
42
+ if (uid) {
43
+ var _queryRef$current;
44
+
45
+ queryRef.current = createMessageQuery(channel, options === null || options === void 0 ? void 0 : options.queryCreator);
46
+
47
+ if ((_queryRef$current = queryRef.current) !== null && _queryRef$current !== void 0 && _queryRef$current.hasNext) {
48
+ var _queryRef$current2;
49
+
50
+ const list = await ((_queryRef$current2 = queryRef.current) === null || _queryRef$current2 === void 0 ? void 0 : _queryRef$current2.load());
51
+ updateMessages(list, true, sdk.currentUser.userId);
52
+ }
53
+
54
+ updateNextMessages([], true, sdk.currentUser.userId);
55
+ }
56
+ });
57
+
58
+ const channelUpdater = channel => {
59
+ if (channel.isOpenChannel() && !(0, _uikitUtils.isDifferentChannel)(channel, channel)) {
60
+ forceUpdate();
61
+ }
62
+ };
63
+
64
+ (0, _useChannelHandler.useChannelHandler)(sdk, handlerId, {
65
+ // Messages
66
+ onMessageReceived(eventChannel, message) {
67
+ if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
68
+ updateNextMessages([message], false, sdk.currentUser.userId);
69
+ },
70
+
71
+ onMessageUpdated(eventChannel, message) {
72
+ if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
73
+ updateMessages([message], false, sdk.currentUser.userId);
74
+ },
75
+
76
+ onMessageDeleted(eventChannel, messageId) {
77
+ if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
78
+ deleteMessages([messageId], []);
79
+ deleteNextMessages([messageId], []);
80
+ },
81
+
82
+ // Channels
83
+ onChannelChanged: channelUpdater,
84
+ onChannelFrozen: channelUpdater,
85
+ onChannelUnfrozen: channelUpdater,
86
+
87
+ onChannelParticipantCountChanged(eventChannel) {
88
+ if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
89
+ channelUpdater(eventChannel);
90
+ },
91
+
92
+ onChannelDeleted(channelUrl, type) {
93
+ if (channel.url === channelUrl && type === 'open') {
94
+ var _options$onChannelDel;
95
+
96
+ options === null || options === void 0 ? void 0 : (_options$onChannelDel = options.onChannelDeleted) === null || _options$onChannelDel === void 0 ? void 0 : _options$onChannelDel.call(options);
97
+ }
98
+ },
99
+
100
+ // Users
101
+ onOperatorUpdated: channelUpdater,
102
+ onUserUnbanned: channelUpdater,
103
+ onUserMuted: channelUpdater,
104
+ onUserUnmuted: channelUpdater,
105
+
106
+ onUserBanned(eventChannel, bannedUser) {
107
+ if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
108
+
109
+ if (bannedUser.userId === sdk.currentUser.userId) {
110
+ var _options$onChannelDel2;
111
+
112
+ options === null || options === void 0 ? void 0 : (_options$onChannelDel2 = options.onChannelDeleted) === null || _options$onChannelDel2 === void 0 ? void 0 : _options$onChannelDel2.call(options);
113
+ } else {
114
+ channelUpdater(eventChannel);
115
+ }
116
+ }
117
+
118
+ }, 'open');
119
+ (0, _uikitUtils.useAsyncEffect)(async () => {
120
+ updateLoading(true);
121
+
122
+ try {
123
+ await channel.enter();
124
+ await init(userId);
125
+ } catch (error) {
126
+ var _options$onError, _options$onChannelDel3;
127
+
128
+ options === null || options === void 0 ? void 0 : (_options$onError = options.onError) === null || _options$onError === void 0 ? void 0 : _options$onError.call(options, error);
129
+ options === null || options === void 0 ? void 0 : (_options$onChannelDel3 = options.onChannelDeleted) === null || _options$onChannelDel3 === void 0 ? void 0 : _options$onChannelDel3.call(options);
130
+ } finally {
131
+ updateLoading(false);
132
+ }
133
+
134
+ return () => {
135
+ channel.exit().catch(_uikitUtils.NOOP);
136
+ };
137
+ }, [init, userId]);
138
+ const refresh = (0, _uikitUtils.useFreshCallback)(async () => {
139
+ updateRefreshing(true);
140
+ await init(userId);
141
+ updateRefreshing(false);
142
+ });
143
+ const prev = (0, _uikitUtils.useFreshCallback)(async () => {
144
+ var _queryRef$current3;
145
+
146
+ if (queryRef.current && (_queryRef$current3 = queryRef.current) !== null && _queryRef$current3 !== void 0 && _queryRef$current3.hasNext) {
147
+ var _queryRef$current4;
148
+
149
+ const list = await ((_queryRef$current4 = queryRef.current) === null || _queryRef$current4 === void 0 ? void 0 : _queryRef$current4.load());
150
+ updateMessages(list, false, sdk.currentUser.userId);
151
+ }
152
+ });
153
+ const next = (0, _uikitUtils.useFreshCallback)(async () => {
154
+ if (nextMessages.length > 0) {
155
+ updateMessages(nextMessages, false, sdk.currentUser.userId);
156
+ updateNextMessages([], true, sdk.currentUser.userId);
157
+ }
158
+ });
159
+ const sendUserMessage = (0, _uikitUtils.useFreshCallback)((params, onPending) => {
160
+ return new Promise((resolve, reject) => {
161
+ channel.sendUserMessage(params).onPending(pendingMessage => {
162
+ if (pendingMessage.isUserMessage()) {
163
+ updateNextMessages([pendingMessage], false, sdk.currentUser.userId);
164
+ onPending === null || onPending === void 0 ? void 0 : onPending(pendingMessage);
165
+ }
166
+ }).onSucceeded(sentMessage => {
167
+ if (sentMessage.isUserMessage()) {
168
+ updateNextMessages([sentMessage], false, sdk.currentUser.userId);
169
+ resolve(sentMessage);
170
+ }
171
+ }).onFailed((err, sentMessage) => {
172
+ updateNextMessages([sentMessage], false, sdk.currentUser.userId);
173
+ reject(err);
174
+ });
175
+ });
176
+ });
177
+ const sendFileMessage = (0, _uikitUtils.useFreshCallback)((params, onPending) => {
178
+ return new Promise((resolve, reject) => {
179
+ channel.sendFileMessage(params).onPending(pendingMessage => {
180
+ if (pendingMessage.isFileMessage()) {
181
+ updateNextMessages([pendingMessage], false, sdk.currentUser.userId);
182
+ onPending === null || onPending === void 0 ? void 0 : onPending(pendingMessage);
183
+ }
184
+ }).onSucceeded(sentMessage => {
185
+ if (sentMessage.isFileMessage()) {
186
+ updateNextMessages([sentMessage], false, sdk.currentUser.userId);
187
+ resolve(sentMessage);
188
+ }
189
+ }).onFailed((err, sentMessage) => {
190
+ updateNextMessages([sentMessage], false, sdk.currentUser.userId);
191
+ reject(err);
192
+ });
193
+ });
194
+ });
195
+ const updateUserMessage = (0, _uikitUtils.useFreshCallback)(async (messageId, params) => {
196
+ const updatedMessage = await channel.updateUserMessage(messageId, params);
197
+ updateMessages([updatedMessage], false, sdk.currentUser.userId);
198
+ return updatedMessage;
199
+ });
200
+ const updateFileMessage = (0, _uikitUtils.useFreshCallback)(async (messageId, params) => {
201
+ const updatedMessage = await channel.updateFileMessage(messageId, params);
202
+ updateMessages([updatedMessage], false, sdk.currentUser.userId);
203
+ return updatedMessage;
204
+ });
205
+ const resendMessage = (0, _uikitUtils.useFreshCallback)(async failedMessage => {
206
+ const message = await (() => {
207
+ if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);
208
+ if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);
209
+ return null;
210
+ })();
211
+ if (message) updateNextMessages([message], false, sdk.currentUser.userId);
212
+ });
213
+ const deleteMessage = (0, _uikitUtils.useFreshCallback)(async message => {
214
+ if (message.sendingStatus === 'succeeded') {
215
+ if (message.isUserMessage()) await channel.deleteMessage(message);
216
+ if (message.isFileMessage()) await channel.deleteMessage(message);
217
+ } else {
218
+ deleteMessages([message.messageId], [message.reqId]);
219
+ }
220
+ });
221
+ return {
222
+ loading,
223
+ refreshing,
224
+ refresh,
225
+ messages,
226
+ nextMessages,
227
+ newMessagesFromMembers,
228
+ next,
229
+ prev,
230
+ sendUserMessage,
231
+ sendFileMessage,
232
+ updateUserMessage,
233
+ updateFileMessage,
234
+ resendMessage,
235
+ deleteMessage
236
+ };
237
+ };
238
+
239
+ exports.useOpenChannelMessagesWithQuery = useOpenChannelMessagesWithQuery;
240
+ //# sourceMappingURL=useOpenChannelMessagesWithQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useOpenChannelMessagesWithQuery","sdk","userId","options","queryRef","useRef","forceUpdate","useForceUpdate","handlerId","useUniqHandlerId","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useOpenChannelMessagesReducer","sortComparator","init","useFreshCallback","uid","current","queryCreator","hasNext","list","load","currentUser","channelUpdater","isOpenChannel","isDifferentChannel","useChannelHandler","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelParticipantCountChanged","onChannelDeleted","channelUrl","type","url","onOperatorUpdated","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","useAsyncEffect","enter","error","onError","exit","catch","NOOP","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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"}
@@ -11,14 +11,12 @@ var _useChannelHandler = require("../handler/useChannelHandler");
11
11
 
12
12
  var _useAppFeatures = require("./useAppFeatures");
13
13
 
14
- const HOOK_NAME = 'useMessageOutgoingStatus';
15
-
16
14
  const useMessageOutgoingStatus = (sdk, channel, message) => {
17
15
  const features = (0, _useAppFeatures.useAppFeatures)(sdk);
18
16
  const forceUpdate = (0, _uikitUtils.useForceUpdate)();
19
17
  const currentUser = sdk.currentUser;
20
- const uniqId = (0, _uikitUtils.useUniqId)(HOOK_NAME);
21
- (0, _useChannelHandler.useChannelHandler)(sdk, `${HOOK_NAME}_${uniqId}`, {
18
+ const handlerId = (0, _uikitUtils.useUniqHandlerId)('useMessageOutgoingStatus');
19
+ (0, _useChannelHandler.useChannelHandler)(sdk, handlerId, {
22
20
  onUndeliveredMemberStatusUpdated(eventChannel) {
23
21
  if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
24
22
  if (!(0, _uikitUtils.isMyMessage)(message, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
@@ -1 +1 @@
1
- {"version":3,"names":["HOOK_NAME","useMessageOutgoingStatus","sdk","channel","message","features","useAppFeatures","forceUpdate","useForceUpdate","currentUser","uniqId","useUniqId","useChannelHandler","onUndeliveredMemberStatusUpdated","eventChannel","isDifferentChannel","isMyMessage","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, 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.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;;AAEA;;AACA;;AAEA,MAAMA,SAAS,GAAG,0BAAlB;;AAIO,MAAMC,wBAAwB,GAAG,CACtCC,GADsC,EAEtCC,OAFsC,EAGtCC,OAHsC,KAIhB;EACtB,MAAMC,QAAQ,GAAG,IAAAC,8BAAA,EAAeJ,GAAf,CAAjB;EACA,MAAMK,WAAW,GAAG,IAAAC,0BAAA,GAApB;EACA,MAAMC,WAAW,GAAGP,GAAG,CAACO,WAAxB;EAEA,MAAMC,MAAM,GAAG,IAAAC,qBAAA,EAAUX,SAAV,CAAf;EACA,IAAAY,oCAAA,EAAkBV,GAAlB,EAAwB,GAAEF,SAAU,IAAGU,MAAO,EAA9C,EAAiD;IAC/CG,gCAAgC,CAACC,YAAD,EAAe;MAC7C,IAAI,IAAAC,8BAAA,EAAmBZ,OAAnB,EAA4BW,YAA5B,CAAJ,EAA+C;MAC/C,IAAI,CAAC,IAAAE,uBAAA,EAAYZ,OAAZ,EAAqBK,WAArB,aAAqBA,WAArB,uBAAqBA,WAAW,CAAEQ,MAAlC,CAAL,EAAgD;MAEhDV,WAAW;IACZ,CAN8C;;IAO/CW,2BAA2B,CAACJ,YAAD,EAAe;MACxC,IAAI,IAAAC,8BAAA,EAAmBZ,OAAnB,EAA4BW,YAA5B,CAAJ,EAA+C;MAC/C,IAAI,CAAC,IAAAE,uBAAA,EAAYZ,OAAZ,EAAqBK,WAArB,aAAqBA,WAArB,uBAAqBA,WAAW,CAAEQ,MAAlC,CAAL,EAAgD;MAEhDV,WAAW;IACZ;;EAZ8C,CAAjD;EAeA,IAAI,CAACH,OAAL,EAAc,OAAO,MAAP;;EAEd,IAAI,mBAAmBA,OAAvB,EAAgC;IAC9B,IAAIA,OAAO,CAACe,aAAR,KAA0B,SAA9B,EAAyC,OAAO,SAAP;IACzC,IAAIf,OAAO,CAACe,aAAR,KAA0B,QAA9B,EAAwC,OAAO,QAAP;EACzC;;EAED,IAAIhB,OAAO,CAACiB,WAAR,IAAuBjB,OAAO,CAACkB,OAAnC,EAA4C,OAAO,MAAP;EAE5C,IAAIlB,OAAO,CAACmB,oBAAR,CAA6BlB,OAA7B,MAA0C,CAA9C,EAAiD,OAAO,MAAP;;EAEjD,IAAIC,QAAQ,CAACkB,sBAAb,EAAqC;IACnC,IAAIpB,OAAO,CAACqB,yBAAR,CAAkCpB,OAAlC,MAA+C,CAAnD,EAAsD,OAAO,WAAP;IACtD,OAAO,aAAP;EACD;;EAED,OAAO,QAAP;AACD,CA1CM"}
1
+ {"version":3,"names":["useMessageOutgoingStatus","sdk","channel","message","features","useAppFeatures","forceUpdate","useForceUpdate","currentUser","handlerId","useUniqHandlerId","useChannelHandler","onUndeliveredMemberStatusUpdated","eventChannel","isDifferentChannel","isMyMessage","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;;AAEA;;AACA;;AAIO,MAAMA,wBAAwB,GAAG,CACtCC,GADsC,EAEtCC,OAFsC,EAGtCC,OAHsC,KAIhB;EACtB,MAAMC,QAAQ,GAAG,IAAAC,8BAAA,EAAeJ,GAAf,CAAjB;EACA,MAAMK,WAAW,GAAG,IAAAC,0BAAA,GAApB;EACA,MAAMC,WAAW,GAAGP,GAAG,CAACO,WAAxB;EACA,MAAMC,SAAS,GAAG,IAAAC,4BAAA,EAAiB,0BAAjB,CAAlB;EAEA,IAAAC,oCAAA,EAAkBV,GAAlB,EAAuBQ,SAAvB,EAAkC;IAChCG,gCAAgC,CAACC,YAAD,EAAe;MAC7C,IAAI,IAAAC,8BAAA,EAAmBZ,OAAnB,EAA4BW,YAA5B,CAAJ,EAA+C;MAC/C,IAAI,CAAC,IAAAE,uBAAA,EAAYZ,OAAZ,EAAqBK,WAArB,aAAqBA,WAArB,uBAAqBA,WAAW,CAAEQ,MAAlC,CAAL,EAAgD;MAEhDV,WAAW;IACZ,CAN+B;;IAOhCW,2BAA2B,CAACJ,YAAD,EAAe;MACxC,IAAI,IAAAC,8BAAA,EAAmBZ,OAAnB,EAA4BW,YAA5B,CAAJ,EAA+C;MAC/C,IAAI,CAAC,IAAAE,uBAAA,EAAYZ,OAAZ,EAAqBK,WAArB,aAAqBA,WAArB,uBAAqBA,WAAW,CAAEQ,MAAlC,CAAL,EAAgD;MAEhDV,WAAW;IACZ;;EAZ+B,CAAlC;EAeA,IAAI,CAACH,OAAL,EAAc,OAAO,MAAP;;EAEd,IAAI,mBAAmBA,OAAvB,EAAgC;IAC9B,IAAIA,OAAO,CAACe,aAAR,KAA0B,SAA9B,EAAyC,OAAO,SAAP;IACzC,IAAIf,OAAO,CAACe,aAAR,KAA0B,QAA9B,EAAwC,OAAO,QAAP;EACzC;;EAED,IAAIhB,OAAO,CAACiB,WAAR,IAAuBjB,OAAO,CAACkB,OAAnC,EAA4C,OAAO,MAAP;EAE5C,IAAIlB,OAAO,CAACmB,oBAAR,CAA6BlB,OAA7B,MAA0C,CAA9C,EAAiD,OAAO,MAAP;;EAEjD,IAAIC,QAAQ,CAACkB,sBAAb,EAAqC;IACnC,IAAIpB,OAAO,CAACqB,yBAAR,CAAkCpB,OAAlC,MAA+C,CAAnD,EAAsD,OAAO,WAAP;IACtD,OAAO,aAAP;EACD;;EAED,OAAO,QAAP;AACD,CA1CM"}
@@ -11,15 +11,13 @@ var _uikitUtils = require("@sendbird/uikit-utils");
11
11
 
12
12
  var _useUserEventHandler = require("../handler/useUserEventHandler");
13
13
 
14
- const HOOK_NAME = 'useTotalUnreadChannelCount';
15
-
16
14
  const useTotalUnreadChannelCount = (sdk, params) => {
17
- const id = (0, _uikitUtils.useUniqId)(HOOK_NAME);
15
+ const handlerId = (0, _uikitUtils.useUniqHandlerId)('useTotalUnreadChannelCount');
18
16
  const [unreadChannelCount, setUnreadChannelCount] = (0, _react.useState)(0);
19
17
  (0, _uikitUtils.useAsyncEffect)(async () => {
20
18
  setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());
21
19
  }, [sdk]);
22
- (0, _useUserEventHandler.useUserEventHandler)(sdk, HOOK_NAME + id, {
20
+ (0, _useUserEventHandler.useUserEventHandler)(sdk, handlerId, {
23
21
  onTotalUnreadMessageCountUpdated: async () => {
24
22
  setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());
25
23
  }
@@ -1 +1 @@
1
- {"version":3,"names":["HOOK_NAME","useTotalUnreadChannelCount","sdk","params","id","useUniqId","unreadChannelCount","setUnreadChannelCount","useState","useAsyncEffect","groupChannel","getTotalUnreadChannelCount","useUserEventHandler","onTotalUnreadMessageCountUpdated","truncatedCount","maxCount"],"sources":["useTotalUnreadChannelCount.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedCount, 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 truncatedCount(unreadChannelCount, params?.maxCount);\n};\n"],"mappings":";;;;;;;AAAA;;AAGA;;AAGA;;AAKA,MAAMA,SAAS,GAAG,4BAAlB;;AACO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,MAAvB,KAA2C;EACnF,MAAMC,EAAE,GAAG,IAAAC,qBAAA,EAAUL,SAAV,CAAX;EACA,MAAM,CAACM,kBAAD,EAAqBC,qBAArB,IAA8C,IAAAC,eAAA,EAAS,CAAT,CAApD;EAEA,IAAAC,0BAAA,EAAe,YAAY;IACzBF,qBAAqB,CAAC,MAAML,GAAG,CAACQ,YAAJ,CAAiBC,0BAAjB,EAAP,CAArB;EACD,CAFD,EAEG,CAACT,GAAD,CAFH;EAIA,IAAAU,wCAAA,EAAoBV,GAApB,EAAyBF,SAAS,GAAGI,EAArC,EAAyC;IACvCS,gCAAgC,EAAE,YAAY;MAC5CN,qBAAqB,CAAC,MAAML,GAAG,CAACQ,YAAJ,CAAiBC,0BAAjB,EAAP,CAArB;IACD;EAHsC,CAAzC;EAMA,OAAO,IAAAG,0BAAA,EAAeR,kBAAf,EAAmCH,MAAnC,aAAmCA,MAAnC,uBAAmCA,MAAM,CAAEY,QAA3C,CAAP;AACD,CAfM"}
1
+ {"version":3,"names":["useTotalUnreadChannelCount","sdk","params","handlerId","useUniqHandlerId","unreadChannelCount","setUnreadChannelCount","useState","useAsyncEffect","groupChannel","getTotalUnreadChannelCount","useUserEventHandler","onTotalUnreadMessageCountUpdated","truncatedCount","maxCount"],"sources":["useTotalUnreadChannelCount.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedCount, useAsyncEffect, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Params = {\n maxCount?: number;\n};\nexport const useTotalUnreadChannelCount = (sdk: SendbirdChatSDK, params?: Params) => {\n const handlerId = useUniqHandlerId('useTotalUnreadChannelCount');\n const [unreadChannelCount, setUnreadChannelCount] = useState(0);\n\n useAsyncEffect(async () => {\n setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());\n }, [sdk]);\n\n useUserEventHandler(sdk, handlerId, {\n onTotalUnreadMessageCountUpdated: async () => {\n setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());\n },\n });\n\n return truncatedCount(unreadChannelCount, params?.maxCount);\n};\n"],"mappings":";;;;;;;AAAA;;AAGA;;AAEA;;AAKO,MAAMA,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,MAAvB,KAA2C;EACnF,MAAMC,SAAS,GAAG,IAAAC,4BAAA,EAAiB,4BAAjB,CAAlB;EACA,MAAM,CAACC,kBAAD,EAAqBC,qBAArB,IAA8C,IAAAC,eAAA,EAAS,CAAT,CAApD;EAEA,IAAAC,0BAAA,EAAe,YAAY;IACzBF,qBAAqB,CAAC,MAAML,GAAG,CAACQ,YAAJ,CAAiBC,0BAAjB,EAAP,CAArB;EACD,CAFD,EAEG,CAACT,GAAD,CAFH;EAIA,IAAAU,wCAAA,EAAoBV,GAApB,EAAyBE,SAAzB,EAAoC;IAClCS,gCAAgC,EAAE,YAAY;MAC5CN,qBAAqB,CAAC,MAAML,GAAG,CAACQ,YAAJ,CAAiBC,0BAAjB,EAAP,CAArB;IACD;EAHiC,CAApC;EAMA,OAAO,IAAAG,0BAAA,EAAeR,kBAAf,EAAmCH,MAAnC,aAAmCA,MAAnC,uBAAmCA,MAAM,CAAEY,QAA3C,CAAP;AACD,CAfM"}
@@ -13,12 +13,10 @@ var _uikitUtils = require("@sendbird/uikit-utils");
13
13
 
14
14
  var _useUserEventHandler = require("../handler/useUserEventHandler");
15
15
 
16
- const HOOK_NAME = 'useTotalUnreadMessageCount';
17
-
18
16
  const useTotalUnreadMessageCount = (sdk, options) => {
19
17
  var _options$params, _options$params2;
20
18
 
21
- const id = (0, _uikitUtils.useUniqId)(HOOK_NAME);
19
+ const handlerId = (0, _uikitUtils.useUniqHandlerId)('useTotalUnreadMessageCount');
22
20
  const [unreadMessageCount, setUnreadMessageCount] = (0, _react.useState)(0);
23
21
  (0, _uikitUtils.useAsyncEffect)(async () => {
24
22
  const unreadCount = await sdk.groupChannel.getTotalUnreadMessageCount({
@@ -27,7 +25,7 @@ const useTotalUnreadMessageCount = (sdk, options) => {
27
25
  });
28
26
  setUnreadMessageCount(unreadCount);
29
27
  }, [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]);
30
- (0, _useUserEventHandler.useUserEventHandler)(sdk, `${HOOK_NAME}_${id}`, {
28
+ (0, _useUserEventHandler.useUserEventHandler)(sdk, handlerId, {
31
29
  onTotalUnreadMessageCountUpdated: totalCount => setUnreadMessageCount(totalCount)
32
30
  });
33
31
  return (0, _uikitUtils.truncatedCount)(unreadMessageCount, options === null || options === void 0 ? void 0 : options.maxCount);
@@ -1 +1 @@
1
- {"version":3,"names":["HOOK_NAME","useTotalUnreadMessageCount","sdk","options","id","useUniqId","unreadMessageCount","setUnreadMessageCount","useState","useAsyncEffect","unreadCount","groupChannel","getTotalUnreadMessageCount","superChannelFilter","SuperChannelFilter","ALL","params","channelCustomTypesFilter","useUserEventHandler","onTotalUnreadMessageCountUpdated","totalCount","truncatedCount","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, 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 truncatedCount(unreadMessageCount, options?.maxCount);\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAEA;;AAEA;;AAOA,MAAMA,SAAS,GAAG,4BAAlB;;AACO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,OAAvB,KAA6C;EAAA;;EACrF,MAAMC,EAAE,GAAG,IAAAC,qBAAA,EAAUL,SAAV,CAAX;EACA,MAAM,CAACM,kBAAD,EAAqBC,qBAArB,IAA8C,IAAAC,eAAA,EAAS,CAAT,CAApD;EAEA,IAAAC,0BAAA,EAAe,YAAY;IACzB,MAAMC,WAAW,GAAG,MAAMR,GAAG,CAACS,YAAJ,CAAiBC,0BAAjB,CAA4C;MACpEC,kBAAkB,EAAEC,gCAAA,CAAmBC,GAD6B;MAEpE,IAAGZ,OAAH,aAAGA,OAAH,uBAAGA,OAAO,CAAEa,MAAZ;IAFoE,CAA5C,CAA1B;IAIAT,qBAAqB,CAACG,WAAD,CAArB;EACD,CAND,EAMG,CAACR,GAAD,EAAMC,OAAN,aAAMA,OAAN,0CAAMA,OAAO,CAAEa,MAAf,oDAAM,gBAAiBH,kBAAvB,EAA2CV,OAA3C,aAA2CA,OAA3C,2CAA2CA,OAAO,CAAEa,MAApD,qDAA2C,iBAAiBC,wBAA5D,CANH;EAQA,IAAAC,wCAAA,EAAoBhB,GAApB,EAA0B,GAAEF,SAAU,IAAGI,EAAG,EAA5C,EAA+C;IAC7Ce,gCAAgC,EAAGC,UAAD,IAAwBb,qBAAqB,CAACa,UAAD;EADlC,CAA/C;EAIA,OAAO,IAAAC,0BAAA,EAAef,kBAAf,EAAmCH,OAAnC,aAAmCA,OAAnC,uBAAmCA,OAAO,CAAEmB,QAA5C,CAAP;AACD,CAjBM"}
1
+ {"version":3,"names":["useTotalUnreadMessageCount","sdk","options","handlerId","useUniqHandlerId","unreadMessageCount","setUnreadMessageCount","useState","useAsyncEffect","unreadCount","groupChannel","getTotalUnreadMessageCount","superChannelFilter","SuperChannelFilter","ALL","params","channelCustomTypesFilter","useUserEventHandler","onTotalUnreadMessageCountUpdated","totalCount","truncatedCount","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;;AAEA;;AAEA;;AAEA;;AAOO,MAAMA,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,OAAvB,KAA6C;EAAA;;EACrF,MAAMC,SAAS,GAAG,IAAAC,4BAAA,EAAiB,4BAAjB,CAAlB;EACA,MAAM,CAACC,kBAAD,EAAqBC,qBAArB,IAA8C,IAAAC,eAAA,EAAS,CAAT,CAApD;EAEA,IAAAC,0BAAA,EAAe,YAAY;IACzB,MAAMC,WAAW,GAAG,MAAMR,GAAG,CAACS,YAAJ,CAAiBC,0BAAjB,CAA4C;MACpEC,kBAAkB,EAAEC,gCAAA,CAAmBC,GAD6B;MAEpE,IAAGZ,OAAH,aAAGA,OAAH,uBAAGA,OAAO,CAAEa,MAAZ;IAFoE,CAA5C,CAA1B;IAIAT,qBAAqB,CAACG,WAAD,CAArB;EACD,CAND,EAMG,CAACR,GAAD,EAAMC,OAAN,aAAMA,OAAN,0CAAMA,OAAO,CAAEa,MAAf,oDAAM,gBAAiBH,kBAAvB,EAA2CV,OAA3C,aAA2CA,OAA3C,2CAA2CA,OAAO,CAAEa,MAApD,qDAA2C,iBAAiBC,wBAA5D,CANH;EAQA,IAAAC,wCAAA,EAAoBhB,GAApB,EAAyBE,SAAzB,EAAoC;IAClCe,gCAAgC,EAAGC,UAAD,IAAwBb,qBAAqB,CAACa,UAAD;EAD7C,CAApC;EAIA,OAAO,IAAAC,0BAAA,EAAef,kBAAf,EAAmCH,OAAnC,aAAmCA,OAAnC,uBAAmCA,OAAO,CAAEmB,QAA5C,CAAP;AACD,CAjBM"}
@@ -93,6 +93,7 @@ const useUserList = (sdk, options) => {
93
93
  await init();
94
94
  } catch (e) {
95
95
  setError(e);
96
+ setUsers([]);
96
97
  } finally {
97
98
  setLoading(false);
98
99
  }
@@ -105,6 +106,7 @@ const useUserList = (sdk, options) => {
105
106
  await init();
106
107
  } catch (e) {
107
108
  setError(e);
109
+ setUsers([]);
108
110
  } finally {
109
111
  setRefreshing(false);
110
112
  }
@@ -1 +1 @@
1
- {"version":3,"names":["createUserQuery","sdk","queryCreator","createApplicationUserListQuery","useUserList","options","query","useRef","error","setError","useState","loading","setLoading","refreshing","setRefreshing","users","setUsers","sortedUsers","useMemo","sortComparator","sort","upsertUser","useFreshCallback","user","draft","userIdx","findIndex","it","userId","push","deleteUser","splice","updateUsers","clearPrev","prev","concat","init","current","hasNext","next","catch","e","Logger","code","SBErrorCode","NON_AUTHORIZED","warn","SBErrorMessage","ACL","useAsyncEffect","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 } 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 } 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":["createUserQuery","sdk","queryCreator","createApplicationUserListQuery","useUserList","options","query","useRef","error","setError","useState","loading","setLoading","refreshing","setRefreshing","users","setUsers","sortedUsers","useMemo","sortComparator","sort","upsertUser","useFreshCallback","user","draft","userIdx","findIndex","it","userId","push","deleteUser","splice","updateUsers","clearPrev","prev","concat","init","current","hasNext","next","catch","e","Logger","code","SBErrorCode","NON_AUTHORIZED","warn","SBErrorMessage","ACL","useAsyncEffect","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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"}
@@ -9,9 +9,27 @@ var _react = require("react");
9
9
 
10
10
  var _groupChannel = require("@sendbird/chat/groupChannel");
11
11
 
12
+ var _openChannel = require("@sendbird/chat/openChannel");
13
+
12
14
  var _uikitUtils = require("@sendbird/uikit-utils");
13
15
 
14
- const useChannelHandler = (sdk, handlerId, hookHandler) => {
16
+ function getChannelHandler(type) {
17
+ switch (type) {
18
+ case 'open':
19
+ {
20
+ return new _openChannel.OpenChannelHandler();
21
+ }
22
+
23
+ case 'group':
24
+ default:
25
+ {
26
+ return new _groupChannel.GroupChannelHandler();
27
+ }
28
+ }
29
+ }
30
+
31
+ const useChannelHandler = function (sdk, handlerId, hookHandler) {
32
+ let type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'group';
15
33
  const handlerRef = (0, _react.useRef)(hookHandler);
16
34
  (0, _react.useLayoutEffect)(() => {
17
35
  handlerRef.current = hookHandler;
@@ -19,7 +37,7 @@ const useChannelHandler = (sdk, handlerId, hookHandler) => {
19
37
  (0, _react.useEffect)(() => {
20
38
  _uikitUtils.Logger.debug('[useChannelHandler] hook called by', handlerId);
21
39
 
22
- const handler = new _groupChannel.GroupChannelHandler();
40
+ const handler = getChannelHandler(type);
23
41
  const handlerKeys = Object.keys(handler);
24
42
  handlerKeys.forEach(key => {
25
43
  handler[key] = function () {
@@ -33,8 +51,20 @@ const useChannelHandler = (sdk, handlerId, hookHandler) => {
33
51
  (_handlerRef$current$k = (_handlerRef$current = handlerRef.current)[key]) === null || _handlerRef$current$k === void 0 ? void 0 : _handlerRef$current$k.call(_handlerRef$current, ...args);
34
52
  };
35
53
  });
36
- sdk.groupChannel.addGroupChannelHandler(handlerId, handler);
37
- return () => sdk.groupChannel.removeGroupChannelHandler(handlerId);
54
+
55
+ if (type === 'group') {
56
+ sdk.groupChannel.addGroupChannelHandler(handlerId, handler);
57
+ } else if (type === 'open') {
58
+ sdk.openChannel.addOpenChannelHandler(handlerId, handler);
59
+ }
60
+
61
+ return () => {
62
+ if (type === 'group') {
63
+ sdk.groupChannel.removeGroupChannelHandler(handlerId);
64
+ } else if (type === 'open') {
65
+ sdk.openChannel.removeOpenChannelHandler(handlerId);
66
+ }
67
+ };
38
68
  }, [sdk, handlerId]);
39
69
  };
40
70
 
@@ -1 +1 @@
1
- {"version":3,"names":["useChannelHandler","sdk","handlerId","hookHandler","handlerRef","useRef","useLayoutEffect","current","useEffect","Logger","debug","handler","GroupChannelHandler","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;;AAEA;;AACA;;AAEO,MAAMA,iBAAiB,GAAG,CAC/BC,GAD+B,EAE/BC,SAF+B,EAG/BC,WAH+B,KAI5B;EACH,MAAMC,UAAU,GAAG,IAAAC,aAAA,EAAOF,WAAP,CAAnB;EACA,IAAAG,sBAAA,EAAgB,MAAM;IACpBF,UAAU,CAACG,OAAX,GAAqBJ,WAArB;EACD,CAFD;EAIA,IAAAK,gBAAA,EAAU,MAAM;IACdC,kBAAA,CAAOC,KAAP,CAAa,oCAAb,EAAmDR,SAAnD;;IAEA,MAAMS,OAAO,GAAG,IAAIC,iCAAJ,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,gDAAAd,UAAU,CAACG,OAAX,EAAmBU,GAAnB,2GAA0B,GAAGC,IAA7B;MACD,CAHD;IAID,CALD;IAOAjB,GAAG,CAACkB,YAAJ,CAAiBC,sBAAjB,CAAwClB,SAAxC,EAAmDS,OAAnD;IACA,OAAO,MAAMV,GAAG,CAACkB,YAAJ,CAAiBE,yBAAjB,CAA2CnB,SAA3C,CAAb;EACD,CAdD,EAcG,CAACD,GAAD,EAAMC,SAAN,CAdH;AAeD,CAzBM"}
1
+ {"version":3,"names":["getChannelHandler","type","OpenChannelHandler","GroupChannelHandler","useChannelHandler","sdk","handlerId","hookHandler","handlerRef","useRef","useLayoutEffect","current","useEffect","Logger","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;;AAEA;;AACA;;AACA;;AAIA,SAASA,iBAAT,CAA2BC,IAA3B,EAA8C;EAC5C,QAAQA,IAAR;IACE,KAAK,MAAL;MAAa;QACX,OAAO,IAAIC,+BAAJ,EAAP;MACD;;IACD,KAAK,OAAL;IACA;MAAS;QACP,OAAO,IAAIC,iCAAJ,EAAP;MACD;EAPH;AASD;;AACM,MAAMC,iBAAiB,GAAG,UAC/BC,GAD+B,EAE/BC,SAF+B,EAG/BC,WAH+B,EAK5B;EAAA,IADHN,IACG,uEADI,OACJ;EACH,MAAMO,UAAU,GAAG,IAAAC,aAAA,EAAOF,WAAP,CAAnB;EACA,IAAAG,sBAAA,EAAgB,MAAM;IACpBF,UAAU,CAACG,OAAX,GAAqBJ,WAArB;EACD,CAFD;EAIA,IAAAK,gBAAA,EAAU,MAAM;IACdC,kBAAA,CAAOC,KAAP,CAAa,oCAAb,EAAmDR,SAAnD;;IAEA,MAAMS,OAAO,GAAGf,iBAAiB,CAACC,IAAD,CAAjC;IACA,MAAMe,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,gDAAAb,UAAU,CAACG,OAAX,EAAmBS,GAAnB,2GAA0B,GAAGC,IAA7B;MACD,CAHD;IAID,CALD;;IAOA,IAAIpB,IAAI,KAAK,OAAb,EAAsB;MACpBI,GAAG,CAACiB,YAAJ,CAAiBC,sBAAjB,CAAwCjB,SAAxC,EAAmDS,OAAnD;IACD,CAFD,MAEO,IAAId,IAAI,KAAK,MAAb,EAAqB;MAC1BI,GAAG,CAACmB,WAAJ,CAAgBC,qBAAhB,CAAsCnB,SAAtC,EAAiDS,OAAjD;IACD;;IAED,OAAO,MAAM;MACX,IAAId,IAAI,KAAK,OAAb,EAAsB;QACpBI,GAAG,CAACiB,YAAJ,CAAiBI,yBAAjB,CAA2CpB,SAA3C;MACD,CAFD,MAEO,IAAIL,IAAI,KAAK,MAAb,EAAqB;QAC1BI,GAAG,CAACmB,WAAJ,CAAgBG,wBAAhB,CAAyCrB,SAAzC;MACD;IACF,CAND;EAOD,CAzBD,EAyBG,CAACD,GAAD,EAAMC,SAAN,CAzBH;AA0BD,CArCM"}
@@ -9,12 +9,6 @@ Object.defineProperty(exports, "CustomQuery", {
9
9
  return _CustomQuery.CustomQuery;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "useActiveGroupChannel", {
13
- enumerable: true,
14
- get: function () {
15
- return _useActiveGroupChannel.useActiveGroupChannel;
16
- }
17
- });
18
12
  Object.defineProperty(exports, "useAppFeatures", {
19
13
  enumerable: true,
20
14
  get: function () {
@@ -57,6 +51,24 @@ Object.defineProperty(exports, "useMessageOutgoingStatus", {
57
51
  return _useMessageOutgoingStatus.useMessageOutgoingStatus;
58
52
  }
59
53
  });
54
+ Object.defineProperty(exports, "useOpenChannel", {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _useOpenChannel.useOpenChannel;
58
+ }
59
+ });
60
+ Object.defineProperty(exports, "useOpenChannelList", {
61
+ enumerable: true,
62
+ get: function () {
63
+ return _useOpenChannelList.useOpenChannelList;
64
+ }
65
+ });
66
+ Object.defineProperty(exports, "useOpenChannelMessages", {
67
+ enumerable: true,
68
+ get: function () {
69
+ return _useOpenChannelMessages.useOpenChannelMessages;
70
+ }
71
+ });
60
72
  Object.defineProperty(exports, "usePushTrigger", {
61
73
  enumerable: true,
62
74
  get: function () {
@@ -92,10 +104,14 @@ var _useGroupChannelList = require("./channel/useGroupChannelList");
92
104
 
93
105
  var _useGroupChannelMessages = require("./channel/useGroupChannelMessages");
94
106
 
95
- var _useActiveGroupChannel = require("./channel/useActiveGroupChannel");
96
-
97
107
  var _useGroupChannel = require("./channel/useGroupChannel");
98
108
 
109
+ var _useOpenChannelList = require("./channel/useOpenChannelList");
110
+
111
+ var _useOpenChannelMessages = require("./channel/useOpenChannelMessages");
112
+
113
+ var _useOpenChannel = require("./channel/useOpenChannel");
114
+
99
115
  var _useAppFeatures = require("./common/useAppFeatures");
100
116
 
101
117
  var _useMessageOutgoingStatus = require("./common/useMessageOutgoingStatus");
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { useGroupChannelList } from './channel/useGroupChannelList';\nexport { useGroupChannelMessages } from './channel/useGroupChannelMessages';\nexport { useActiveGroupChannel } from './channel/useActiveGroupChannel';\nexport { useGroupChannel } from './channel/useGroupChannel';\n\nexport { useAppFeatures } from './common/useAppFeatures';\nexport { useMessageOutgoingStatus } from './common/useMessageOutgoingStatus';\nexport { usePushTrigger } from './common/usePushTrigger';\nexport { useTotalUnreadChannelCount } from './common/useTotalUnreadChannelCount';\nexport { useTotalUnreadMessageCount } from './common/useTotalUnreadMessageCount';\nexport { useUserList } from './common/useUserList';\n\nexport { useChannelHandler } from './handler/useChannelHandler';\nexport { useConnectionHandler } from './handler/useConnectionHandler';\nexport { useUserEventHandler } from './handler/useUserEventHandler';\n\nexport { CustomQuery } from './model/CustomQuery';\n\nexport type {\n UseGroupChannelList,\n UseGroupChannelListOptions,\n UseGroupChannelMessages,\n UseGroupChannelMessagesOptions,\n UseUserListOptions,\n UseUserListReturn,\n CustomQueryInterface,\n CustomBidirectionalQueryInterface,\n} from './types';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { useGroupChannelList } from './channel/useGroupChannelList';\nexport { useGroupChannelMessages } from './channel/useGroupChannelMessages';\nexport { useGroupChannel } from './channel/useGroupChannel';\n\nexport { useOpenChannelList } from './channel/useOpenChannelList';\nexport { useOpenChannelMessages } from './channel/useOpenChannelMessages';\nexport { useOpenChannel } from './channel/useOpenChannel';\n\nexport { useAppFeatures } from './common/useAppFeatures';\nexport { useMessageOutgoingStatus } from './common/useMessageOutgoingStatus';\nexport { usePushTrigger } from './common/usePushTrigger';\nexport { useTotalUnreadChannelCount } from './common/useTotalUnreadChannelCount';\nexport { useTotalUnreadMessageCount } from './common/useTotalUnreadMessageCount';\nexport { useUserList } from './common/useUserList';\n\nexport { useChannelHandler } from './handler/useChannelHandler';\nexport { useConnectionHandler } from './handler/useConnectionHandler';\nexport { useUserEventHandler } from './handler/useUserEventHandler';\n\nexport { CustomQuery } from './model/CustomQuery';\n\nexport type {\n UseGroupChannelList,\n UseGroupChannelListOptions,\n UseGroupChannelMessages,\n UseGroupChannelMessagesOptions,\n UseUserListOptions,\n UseUserListReturn,\n CustomQueryInterface,\n CustomBidirectionalQueryInterface,\n UseOpenChannelMessagesOptions,\n UseOpenChannelListOptions,\n UseOpenChannelList,\n UseOpenChannelMessages,\n} from './types';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA"}