@sendbird/uikit-chat-hooks 2.3.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 (105) 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/useGroupChannelMessagesWithCollection.js +7 -8
  6. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  7. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +8 -7
  8. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  9. package/lib/commonjs/channel/useOpenChannel.js +33 -0
  10. package/lib/commonjs/channel/useOpenChannel.js.map +1 -0
  11. package/lib/commonjs/channel/useOpenChannelList/index.js +15 -0
  12. package/lib/commonjs/channel/useOpenChannelList/index.js.map +1 -0
  13. package/lib/commonjs/channel/useOpenChannelList/reducer.js +149 -0
  14. package/lib/commonjs/channel/useOpenChannelList/reducer.js.map +1 -0
  15. package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js +119 -0
  16. package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -0
  17. package/lib/commonjs/channel/useOpenChannelMessages/index.js +15 -0
  18. package/lib/commonjs/channel/useOpenChannelMessages/index.js.map +1 -0
  19. package/lib/commonjs/channel/useOpenChannelMessages/reducer.js +154 -0
  20. package/lib/commonjs/channel/useOpenChannelMessages/reducer.js.map +1 -0
  21. package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +240 -0
  22. package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -0
  23. package/lib/commonjs/common/useMessageOutgoingStatus.js +2 -4
  24. package/lib/commonjs/common/useMessageOutgoingStatus.js.map +1 -1
  25. package/lib/commonjs/common/useTotalUnreadChannelCount.js +2 -4
  26. package/lib/commonjs/common/useTotalUnreadChannelCount.js.map +1 -1
  27. package/lib/commonjs/common/useTotalUnreadMessageCount.js +2 -4
  28. package/lib/commonjs/common/useTotalUnreadMessageCount.js.map +1 -1
  29. package/lib/commonjs/common/useUserList.js +2 -0
  30. package/lib/commonjs/common/useUserList.js.map +1 -1
  31. package/lib/commonjs/handler/useChannelHandler.js +34 -4
  32. package/lib/commonjs/handler/useChannelHandler.js.map +1 -1
  33. package/lib/commonjs/index.js +24 -8
  34. package/lib/commonjs/index.js.map +1 -1
  35. package/lib/commonjs/types.js.map +1 -1
  36. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js +3 -4
  37. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
  38. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js +3 -3
  39. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
  40. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +8 -8
  41. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  42. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +9 -7
  43. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  44. package/lib/module/channel/useOpenChannel.js +22 -0
  45. package/lib/module/channel/useOpenChannel.js.map +1 -0
  46. package/lib/module/channel/useOpenChannelList/index.js +5 -0
  47. package/lib/module/channel/useOpenChannelList/index.js.map +1 -0
  48. package/lib/module/channel/useOpenChannelList/reducer.js +139 -0
  49. package/lib/module/channel/useOpenChannelList/reducer.js.map +1 -0
  50. package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js +107 -0
  51. package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -0
  52. package/lib/module/channel/useOpenChannelMessages/index.js +5 -0
  53. package/lib/module/channel/useOpenChannelMessages/index.js.map +1 -0
  54. package/lib/module/channel/useOpenChannelMessages/reducer.js +144 -0
  55. package/lib/module/channel/useOpenChannelMessages/reducer.js.map +1 -0
  56. package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +228 -0
  57. package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -0
  58. package/lib/module/common/useMessageOutgoingStatus.js +3 -4
  59. package/lib/module/common/useMessageOutgoingStatus.js.map +1 -1
  60. package/lib/module/common/useTotalUnreadChannelCount.js +3 -5
  61. package/lib/module/common/useTotalUnreadChannelCount.js.map +1 -1
  62. package/lib/module/common/useTotalUnreadMessageCount.js +3 -4
  63. package/lib/module/common/useTotalUnreadMessageCount.js.map +1 -1
  64. package/lib/module/common/useUserList.js +2 -0
  65. package/lib/module/common/useUserList.js.map +1 -1
  66. package/lib/module/handler/useChannelHandler.js +34 -4
  67. package/lib/module/handler/useChannelHandler.js.map +1 -1
  68. package/lib/module/index.js +3 -1
  69. package/lib/module/index.js.map +1 -1
  70. package/lib/module/types.js.map +1 -1
  71. package/lib/typescript/src/channel/useOpenChannel.d.ts +6 -0
  72. package/lib/typescript/src/channel/useOpenChannelList/index.d.ts +2 -0
  73. package/lib/typescript/src/channel/useOpenChannelList/reducer.d.ts +13 -0
  74. package/lib/typescript/src/channel/useOpenChannelList/useOpenChannelListWithQuery.d.ts +2 -0
  75. package/lib/typescript/src/channel/useOpenChannelMessages/index.d.ts +2 -0
  76. package/lib/typescript/src/channel/useOpenChannelMessages/reducer.d.ts +15 -0
  77. package/lib/typescript/src/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.d.ts +2 -0
  78. package/lib/typescript/src/handler/useChannelHandler.d.ts +4 -1
  79. package/lib/typescript/src/index.d.ts +4 -2
  80. package/lib/typescript/src/types.d.ts +141 -3
  81. package/package.json +4 -4
  82. package/src/channel/useGroupChannelList/useGroupChannelListWithCollection.ts +3 -5
  83. package/src/channel/useGroupChannelList/useGroupChannelListWithQuery.ts +3 -4
  84. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +8 -8
  85. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +9 -6
  86. package/src/channel/useOpenChannel.ts +21 -0
  87. package/src/channel/useOpenChannelList/index.ts +6 -0
  88. package/src/channel/useOpenChannelList/reducer.ts +115 -0
  89. package/src/channel/useOpenChannelList/useOpenChannelListWithQuery.ts +112 -0
  90. package/src/channel/useOpenChannelMessages/index.ts +6 -0
  91. package/src/channel/useOpenChannelMessages/reducer.ts +125 -0
  92. package/src/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.ts +247 -0
  93. package/src/common/useMessageOutgoingStatus.ts +3 -5
  94. package/src/common/useTotalUnreadChannelCount.ts +3 -5
  95. package/src/common/useTotalUnreadMessageCount.ts +3 -4
  96. package/src/common/useUserList.ts +2 -0
  97. package/src/handler/useChannelHandler.ts +31 -5
  98. package/src/index.ts +8 -1
  99. package/src/types.ts +171 -2
  100. package/lib/commonjs/channel/useActiveGroupChannel.js +0 -22
  101. package/lib/commonjs/channel/useActiveGroupChannel.js.map +0 -1
  102. package/lib/module/channel/useActiveGroupChannel.js +0 -12
  103. package/lib/module/channel/useActiveGroupChannel.js.map +0 -1
  104. package/lib/typescript/src/channel/useActiveGroupChannel.d.ts +0 -5
  105. package/src/channel/useActiveGroupChannel.ts +0 -13
package/src/types.ts CHANGED
@@ -3,14 +3,18 @@ import type {
3
3
  SendbirdError,
4
4
  SendbirdFileMessage,
5
5
  SendbirdFileMessageCreateParams,
6
+ SendbirdFileMessageUpdateParams,
6
7
  SendbirdGroupChannel,
7
8
  SendbirdGroupChannelCollection,
8
9
  SendbirdGroupChannelListQuery,
9
10
  SendbirdMessage,
10
11
  SendbirdMessageCollection,
12
+ SendbirdOpenChannel,
13
+ SendbirdOpenChannelListQuery,
11
14
  SendbirdPreviousMessageListQuery,
12
15
  SendbirdUserMessage,
13
16
  SendbirdUserMessageCreateParams,
17
+ SendbirdUserMessageUpdateParams,
14
18
  UserStruct,
15
19
  } from '@sendbird/uikit-utils';
16
20
 
@@ -156,7 +160,7 @@ export interface UseGroupChannelMessages {
156
160
  * @param params file message params
157
161
  * @return updated message
158
162
  * */
159
- updateFileMessage: (messageId: number, params: SendbirdFileMessageCreateParams) => Promise<SendbirdFileMessage>;
163
+ updateFileMessage: (messageId: number, params: SendbirdFileMessageUpdateParams) => Promise<SendbirdFileMessage>;
160
164
 
161
165
  /**
162
166
  * Update user message
@@ -164,7 +168,7 @@ export interface UseGroupChannelMessages {
164
168
  * @param params user message params
165
169
  * @return updated message
166
170
  * */
167
- updateUserMessage: (messageId: number, params: SendbirdUserMessageCreateParams) => Promise<SendbirdUserMessage>;
171
+ updateUserMessage: (messageId: number, params: SendbirdUserMessageUpdateParams) => Promise<SendbirdUserMessage>;
168
172
 
169
173
  /**
170
174
  * Resend failed message
@@ -190,6 +194,171 @@ export type UseGroupChannelMessagesOptions = {
190
194
  onChannelDeleted?: () => void;
191
195
  };
192
196
 
197
+ /**
198
+ * @interface UseOpenChannelList
199
+ * @description interface for open channel list hook
200
+ * */
201
+ export interface UseOpenChannelList {
202
+ (sdk: SendbirdChatSDK, userId?: string, options?: UseOpenChannelListOptions): {
203
+ /**
204
+ * Loading state, only available on first render
205
+ * */
206
+ loading: boolean;
207
+
208
+ /**
209
+ * Refreshing state, status is changes when the refresh is called.
210
+ * */
211
+ refreshing: boolean;
212
+
213
+ /**
214
+ * Refresh, clear and reload messages from latest
215
+ * @return {Promise<void>}
216
+ * */
217
+ refresh: () => Promise<void>;
218
+
219
+ /**
220
+ * Error state
221
+ * */
222
+ error: unknown | null;
223
+
224
+ /**
225
+ * Get open channels state
226
+ * */
227
+ openChannels: SendbirdOpenChannel[];
228
+
229
+ /**
230
+ * Fetch next channels to state
231
+ * @return {Promise<void>}
232
+ * */
233
+ next: () => Promise<void>;
234
+ };
235
+ }
236
+ export type UseOpenChannelListOptions = {
237
+ queryCreator?: () => SendbirdOpenChannelListQuery;
238
+ };
239
+
240
+ /**
241
+ * @interface UseOpenChannelMessages
242
+ * @description interface for open channel messages hook
243
+ * - Receive new messages from other users -> append to state(nextMessages)
244
+ * - onTopReached -> prev() -> fetch prev messages and append to state(messages)
245
+ * - onBottomReached -> next() -> nextMessages append to state(messages)
246
+ * */
247
+ export interface UseOpenChannelMessages {
248
+ (sdk: SendbirdChatSDK, channel: SendbirdOpenChannel, userId?: string, options?: UseOpenChannelMessagesOptions): {
249
+ /**
250
+ * Loading state, only available on first render
251
+ * */
252
+ loading: boolean;
253
+
254
+ /**
255
+ * Refreshing state, status is changes when the refresh is called.
256
+ * */
257
+ refreshing: boolean;
258
+
259
+ /**
260
+ * Refresh, clear and reload messages from latest
261
+ * @return {Promise<void>}
262
+ * */
263
+ refresh: () => Promise<void>;
264
+
265
+ /**
266
+ * Get messages, this state is for render
267
+ * For example, if a user receives a new messages while searching for an old message
268
+ * for this case, new messages will be included here.
269
+ * @return {SendbirdMessage[]}
270
+ * */
271
+ messages: SendbirdMessage[];
272
+
273
+ /**
274
+ * Fetch prev messages to state
275
+ * @return {Promise<void>}
276
+ * */
277
+ prev: () => Promise<void>;
278
+
279
+ /**
280
+ * Get messages, this state is for temporary data before render
281
+ * For example, if a user receives a new messages while searching for an old message
282
+ * for this case, new messages will be included here.
283
+ * */
284
+ nextMessages: SendbirdMessage[];
285
+
286
+ /**
287
+ * Get new messages from nextMessages
288
+ * A new message means a message that meets the below conditions
289
+ * - Not admin message
290
+ * - Not updated message
291
+ * - Not current user's message
292
+ * */
293
+ newMessagesFromMembers: SendbirdMessage[];
294
+
295
+ /**
296
+ * Fetch next messages to state
297
+ * @return {Promise<void>}
298
+ * */
299
+ next: () => Promise<void>;
300
+
301
+ /**
302
+ * Send file message
303
+ * @param params file message params
304
+ * @param callback sent message callback
305
+ * @return pending message
306
+ * */
307
+ sendFileMessage: (
308
+ params: SendbirdFileMessageCreateParams,
309
+ onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,
310
+ ) => Promise<SendbirdFileMessage>;
311
+
312
+ /**
313
+ * Send user message
314
+ * @param params user message params
315
+ * @param callback sent message callback
316
+ * @return pending message
317
+ * */
318
+ sendUserMessage: (
319
+ params: SendbirdUserMessageCreateParams,
320
+ onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,
321
+ ) => Promise<SendbirdUserMessage>;
322
+
323
+ /**
324
+ * Update file message
325
+ * @param messageId
326
+ * @param params file message params
327
+ * @return updated message
328
+ * */
329
+ updateFileMessage: (messageId: number, params: SendbirdFileMessageUpdateParams) => Promise<SendbirdFileMessage>;
330
+
331
+ /**
332
+ * Update user message
333
+ * @param messageId
334
+ * @param params user message params
335
+ * @return updated message
336
+ * */
337
+ updateUserMessage: (messageId: number, params: SendbirdUserMessageUpdateParams) => Promise<SendbirdUserMessage>;
338
+
339
+ /**
340
+ * Resend failed message
341
+ * @param failedMessage failed message to resend
342
+ * @return {Promise<void>}
343
+ * */
344
+ resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;
345
+
346
+ /**
347
+ * Delete message
348
+ * @param message sent or failed message
349
+ * @return {Promise<void>}
350
+ * */
351
+ deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;
352
+ };
353
+ }
354
+
355
+ export type UseOpenChannelMessagesOptions = {
356
+ sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;
357
+ queryCreator?: () => SendbirdPreviousMessageListQuery;
358
+ onChannelDeleted?: () => void;
359
+ onError?: (error?: unknown) => void;
360
+ };
361
+
193
362
  /**
194
363
  * @interface UseUserListReturn
195
364
  * @description interface for user list hook return value
@@ -1,22 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useActiveGroupChannel = void 0;
7
-
8
- var _react = require("react");
9
-
10
- const useActiveGroupChannel = (sdk, staleChannel) => {
11
- const [activeChannel, setActiveChannel] = (0, _react.useState)(() => staleChannel);
12
- (0, _react.useEffect)(() => {
13
- sdk.groupChannel.getChannel(staleChannel.url).then(setActiveChannel);
14
- }, [staleChannel.url]);
15
- return {
16
- activeChannel,
17
- setActiveChannel
18
- };
19
- };
20
-
21
- exports.useActiveGroupChannel = useActiveGroupChannel;
22
- //# sourceMappingURL=useActiveGroupChannel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useActiveGroupChannel","sdk","staleChannel","activeChannel","setActiveChannel","useState","useEffect","groupChannel","getChannel","url","then"],"sources":["useActiveGroupChannel.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { SendbirdChatSDK, SendbirdGroupChannel } from '@sendbird/uikit-utils';\n\nexport const useActiveGroupChannel = (sdk: SendbirdChatSDK, staleChannel: SendbirdGroupChannel) => {\n const [activeChannel, setActiveChannel] = useState(() => staleChannel);\n\n useEffect(() => {\n sdk.groupChannel.getChannel(staleChannel.url).then(setActiveChannel);\n }, [staleChannel.url]);\n\n return { activeChannel, setActiveChannel };\n};\n"],"mappings":";;;;;;;AAAA;;AAIO,MAAMA,qBAAqB,GAAG,CAACC,GAAD,EAAuBC,YAAvB,KAA8D;EACjG,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoC,IAAAC,eAAA,EAAS,MAAMH,YAAf,CAA1C;EAEA,IAAAI,gBAAA,EAAU,MAAM;IACdL,GAAG,CAACM,YAAJ,CAAiBC,UAAjB,CAA4BN,YAAY,CAACO,GAAzC,EAA8CC,IAA9C,CAAmDN,gBAAnD;EACD,CAFD,EAEG,CAACF,YAAY,CAACO,GAAd,CAFH;EAIA,OAAO;IAAEN,aAAF;IAAiBC;EAAjB,CAAP;AACD,CARM"}
@@ -1,12 +0,0 @@
1
- import { useEffect, useState } from 'react';
2
- export const useActiveGroupChannel = (sdk, staleChannel) => {
3
- const [activeChannel, setActiveChannel] = useState(() => staleChannel);
4
- useEffect(() => {
5
- sdk.groupChannel.getChannel(staleChannel.url).then(setActiveChannel);
6
- }, [staleChannel.url]);
7
- return {
8
- activeChannel,
9
- setActiveChannel
10
- };
11
- };
12
- //# sourceMappingURL=useActiveGroupChannel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useEffect","useState","useActiveGroupChannel","sdk","staleChannel","activeChannel","setActiveChannel","groupChannel","getChannel","url","then"],"sources":["useActiveGroupChannel.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { SendbirdChatSDK, SendbirdGroupChannel } from '@sendbird/uikit-utils';\n\nexport const useActiveGroupChannel = (sdk: SendbirdChatSDK, staleChannel: SendbirdGroupChannel) => {\n const [activeChannel, setActiveChannel] = useState(() => staleChannel);\n\n useEffect(() => {\n sdk.groupChannel.getChannel(staleChannel.url).then(setActiveChannel);\n }, [staleChannel.url]);\n\n return { activeChannel, setActiveChannel };\n};\n"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,QAApB,QAAoC,OAApC;AAIA,OAAO,MAAMC,qBAAqB,GAAG,CAACC,GAAD,EAAuBC,YAAvB,KAA8D;EACjG,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoCL,QAAQ,CAAC,MAAMG,YAAP,CAAlD;EAEAJ,SAAS,CAAC,MAAM;IACdG,GAAG,CAACI,YAAJ,CAAiBC,UAAjB,CAA4BJ,YAAY,CAACK,GAAzC,EAA8CC,IAA9C,CAAmDJ,gBAAnD;EACD,CAFQ,EAEN,CAACF,YAAY,CAACK,GAAd,CAFM,CAAT;EAIA,OAAO;IAAEJ,aAAF;IAAiBC;EAAjB,CAAP;AACD,CARM"}
@@ -1,5 +0,0 @@
1
- import type { SendbirdChatSDK, SendbirdGroupChannel } from '@sendbird/uikit-utils';
2
- export declare const useActiveGroupChannel: (sdk: SendbirdChatSDK, staleChannel: SendbirdGroupChannel) => {
3
- activeChannel: import("@sendbird/chat/groupChannel").GroupChannel;
4
- setActiveChannel: import("react").Dispatch<import("react").SetStateAction<import("@sendbird/chat/groupChannel").GroupChannel>>;
5
- };
@@ -1,13 +0,0 @@
1
- import { useEffect, useState } from 'react';
2
-
3
- import type { SendbirdChatSDK, SendbirdGroupChannel } from '@sendbird/uikit-utils';
4
-
5
- export const useActiveGroupChannel = (sdk: SendbirdChatSDK, staleChannel: SendbirdGroupChannel) => {
6
- const [activeChannel, setActiveChannel] = useState(() => staleChannel);
7
-
8
- useEffect(() => {
9
- sdk.groupChannel.getChannel(staleChannel.url).then(setActiveChannel);
10
- }, [staleChannel.url]);
11
-
12
- return { activeChannel, setActiveChannel };
13
- };