@sendbird/uikit-chat-hooks 1.1.2 → 2.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/channel/useActiveGroupChannel.js +1 -1
  3. package/lib/commonjs/channel/useActiveGroupChannel.js.map +1 -1
  4. package/lib/commonjs/channel/useGroupChannelList/index.js +3 -0
  5. package/lib/commonjs/channel/useGroupChannelList/index.js.map +1 -1
  6. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js +25 -26
  7. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
  8. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js +8 -11
  9. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
  10. package/lib/commonjs/channel/useGroupChannelMessages/index.js +3 -0
  11. package/lib/commonjs/channel/useGroupChannelMessages/index.js.map +1 -1
  12. package/lib/commonjs/channel/useGroupChannelMessages/reducer.js.map +1 -1
  13. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +83 -87
  14. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  15. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +32 -20
  16. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  17. package/lib/commonjs/common/useMessageOutgoingStatus.js +8 -4
  18. package/lib/commonjs/common/useMessageOutgoingStatus.js.map +1 -1
  19. package/lib/commonjs/common/usePushTrigger.js +13 -5
  20. package/lib/commonjs/common/usePushTrigger.js.map +1 -1
  21. package/lib/commonjs/common/useTotalUnreadChannelCount.js +4 -2
  22. package/lib/commonjs/common/useTotalUnreadChannelCount.js.map +1 -1
  23. package/lib/commonjs/common/useTotalUnreadMessageCount.js +12 -15
  24. package/lib/commonjs/common/useTotalUnreadMessageCount.js.map +1 -1
  25. package/lib/commonjs/handler/useChannelHandler.js +5 -3
  26. package/lib/commonjs/handler/useChannelHandler.js.map +1 -1
  27. package/lib/commonjs/handler/useConnectionHandler.js +5 -3
  28. package/lib/commonjs/handler/useConnectionHandler.js.map +1 -1
  29. package/lib/commonjs/handler/useUserEventHandler.js +19 -6
  30. package/lib/commonjs/handler/useUserEventHandler.js.map +1 -1
  31. package/lib/commonjs/types.js.map +1 -1
  32. package/lib/module/channel/useActiveGroupChannel.js +1 -1
  33. package/lib/module/channel/useActiveGroupChannel.js.map +1 -1
  34. package/lib/module/channel/useGroupChannelList/index.js +2 -0
  35. package/lib/module/channel/useGroupChannelList/index.js.map +1 -1
  36. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js +25 -27
  37. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
  38. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js +8 -12
  39. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
  40. package/lib/module/channel/useGroupChannelMessages/index.js +2 -0
  41. package/lib/module/channel/useGroupChannelMessages/index.js.map +1 -1
  42. package/lib/module/channel/useGroupChannelMessages/reducer.js.map +1 -1
  43. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +81 -87
  44. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  45. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +33 -21
  46. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  47. package/lib/module/common/useMessageOutgoingStatus.js +8 -4
  48. package/lib/module/common/useMessageOutgoingStatus.js.map +1 -1
  49. package/lib/module/common/usePushTrigger.js +11 -5
  50. package/lib/module/common/usePushTrigger.js.map +1 -1
  51. package/lib/module/common/useTotalUnreadChannelCount.js +4 -2
  52. package/lib/module/common/useTotalUnreadChannelCount.js.map +1 -1
  53. package/lib/module/common/useTotalUnreadMessageCount.js +12 -17
  54. package/lib/module/common/useTotalUnreadMessageCount.js.map +1 -1
  55. package/lib/module/handler/useChannelHandler.js +4 -3
  56. package/lib/module/handler/useChannelHandler.js.map +1 -1
  57. package/lib/module/handler/useConnectionHandler.js +4 -3
  58. package/lib/module/handler/useConnectionHandler.js.map +1 -1
  59. package/lib/module/handler/useUserEventHandler.js +19 -7
  60. package/lib/module/handler/useUserEventHandler.js.map +1 -1
  61. package/lib/module/types.js.map +1 -1
  62. package/lib/typescript/src/channel/useActiveGroupChannel.d.ts +2 -2
  63. package/lib/typescript/src/channel/useGroupChannelList/reducer.d.ts +1 -1
  64. package/lib/typescript/src/channel/useGroupChannelMessages/reducer.d.ts +4 -4
  65. package/lib/typescript/src/common/useMessageOutgoingStatus.d.ts +2 -2
  66. package/lib/typescript/src/common/usePushTrigger.d.ts +9 -3
  67. package/lib/typescript/src/common/useTotalUnreadMessageCount.d.ts +4 -4
  68. package/lib/typescript/src/common/useUserList.d.ts +1 -1
  69. package/lib/typescript/src/handler/useChannelHandler.d.ts +2 -2
  70. package/lib/typescript/src/handler/useConnectionHandler.d.ts +2 -2
  71. package/lib/typescript/src/handler/useUserEventHandler.d.ts +2 -3
  72. package/lib/typescript/src/types.d.ts +7 -8
  73. package/package.json +5 -5
  74. package/src/channel/useActiveGroupChannel.ts +1 -1
  75. package/src/channel/useGroupChannelList/index.ts +3 -0
  76. package/src/channel/useGroupChannelList/useGroupChannelListWithCollection.ts +21 -24
  77. package/src/channel/useGroupChannelList/useGroupChannelListWithQuery.ts +10 -15
  78. package/src/channel/useGroupChannelMessages/index.ts +3 -0
  79. package/src/channel/useGroupChannelMessages/reducer.ts +4 -9
  80. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +79 -78
  81. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +59 -34
  82. package/src/common/useMessageOutgoingStatus.ts +8 -13
  83. package/src/common/usePushTrigger.ts +13 -7
  84. package/src/common/useTotalUnreadChannelCount.ts +4 -2
  85. package/src/common/useTotalUnreadMessageCount.ts +14 -25
  86. package/src/handler/useChannelHandler.ts +5 -5
  87. package/src/handler/useConnectionHandler.ts +5 -5
  88. package/src/handler/useUserEventHandler.ts +15 -8
  89. package/src/types.ts +10 -10
@@ -1,4 +1,4 @@
1
- import type { SendbirdBaseMessage, SendbirdMessage } from '@sendbird/uikit-utils';
1
+ import type { SendbirdBaseMessage } from '@sendbird/uikit-utils';
2
2
  import type { UseGroupChannelMessagesOptions } from '../../types';
3
3
  export declare const useGroupChannelMessagesReducer: (userId?: string, sortComparator?: UseGroupChannelMessagesOptions['sortComparator']) => {
4
4
  updateLoading: (status: boolean) => void;
@@ -9,7 +9,7 @@ export declare const useGroupChannelMessagesReducer: (userId?: string, sortCompa
9
9
  deleteNextMessages: (messageIds: number[], reqIds: string[]) => void;
10
10
  loading: boolean;
11
11
  refreshing: boolean;
12
- messages: SendbirdMessage[];
13
- nextMessages: SendbirdMessage[];
14
- newMessagesFromMembers: SendbirdMessage[];
12
+ messages: import("@sendbird/chat/message").BaseMessage[];
13
+ nextMessages: import("@sendbird/chat/message").BaseMessage[];
14
+ newMessagesFromMembers: import("@sendbird/chat/message").BaseMessage[];
15
15
  };
@@ -1,3 +1,3 @@
1
- import type { SendbirdAdminMessage, SendbirdChatSDK, SendbirdFileMessage, SendbirdGroupChannel, SendbirdUserMessage } from '@sendbird/uikit-utils';
1
+ import type { SendbirdChatSDK, SendbirdGroupChannel, SendbirdMessage } from '@sendbird/uikit-utils';
2
2
  export declare type SBUOutgoingStatus = 'NONE' | 'PENDING' | 'FAILED' | 'UNDELIVERED' | 'DELIVERED' | 'UNREAD' | 'READ';
3
- export declare const useMessageOutgoingStatus: (sdk: SendbirdChatSDK, channel: SendbirdGroupChannel, message?: SendbirdFileMessage | SendbirdUserMessage | SendbirdAdminMessage | null) => SBUOutgoingStatus;
3
+ export declare const useMessageOutgoingStatus: (sdk: SendbirdChatSDK, channel: SendbirdGroupChannel, message?: SendbirdMessage | null) => SBUOutgoingStatus;
@@ -1,7 +1,13 @@
1
+ import { PushTriggerOption } from '@sendbird/chat';
1
2
  import type { SendbirdChatSDK } from '@sendbird/uikit-utils';
2
- declare type PushTriggerOptionType = 'all' | 'mention_only' | 'off';
3
+ declare const PushTriggerMap: {
4
+ all: PushTriggerOption;
5
+ mention_only: PushTriggerOption;
6
+ off: PushTriggerOption;
7
+ default: PushTriggerOption;
8
+ };
3
9
  export declare const usePushTrigger: (sdk: SendbirdChatSDK) => {
4
- option: PushTriggerOptionType;
5
- updateOption: (value: PushTriggerOptionType) => Promise<void>;
10
+ option: PushTriggerOption;
11
+ updateOption: (value: keyof typeof PushTriggerMap) => Promise<void>;
6
12
  };
7
13
  export {};
@@ -1,8 +1,8 @@
1
- import type Sendbird from 'sendbird';
1
+ import { TotalUnreadMessageCountParams } from '@sendbird/chat/groupChannel';
2
2
  import type { SendbirdChatSDK } from '@sendbird/uikit-utils';
3
- declare type Params = {
4
- paramCreator?: () => Sendbird.GroupChannelTotalUnreadMessageCountParams;
3
+ declare type Options = {
4
+ params?: TotalUnreadMessageCountParams;
5
5
  maxCount?: number;
6
6
  };
7
- export declare const useTotalUnreadMessageCount: (sdk: SendbirdChatSDK, params?: Params) => string;
7
+ export declare const useTotalUnreadMessageCount: (sdk: SendbirdChatSDK, options?: Options) => string;
8
8
  export {};
@@ -21,4 +21,4 @@ import type { CustomQueryInterface, UseUserListOptions, UseUserListReturn } from
21
21
  * })
22
22
  * ```
23
23
  * */
24
- export declare const useUserList: <Options extends UseUserListOptions<QueriedUser>, QueriedUser = Options["queryCreator"] extends Optional<() => CustomQueryInterface<infer User>> ? User : import("sendbird").User>(sdk: SendbirdChatSDK, options?: Options | undefined) => UseUserListReturn<QueriedUser>;
24
+ export declare const useUserList: <Options extends UseUserListOptions<QueriedUser>, QueriedUser = Options["queryCreator"] extends Optional<() => CustomQueryInterface<infer User>> ? User : import("@sendbird/chat").User>(sdk: SendbirdChatSDK, options?: Options | undefined) => UseUserListReturn<QueriedUser>;
@@ -1,3 +1,3 @@
1
- import type Sendbird from 'sendbird';
1
+ import { GroupChannelHandler } from '@sendbird/chat/groupChannel';
2
2
  import { SendbirdChatSDK } from '@sendbird/uikit-utils';
3
- export declare const useChannelHandler: (sdk: SendbirdChatSDK, handlerId: string, hookHandler: Partial<Sendbird.ChannelHandler>) => void;
3
+ export declare const useChannelHandler: (sdk: SendbirdChatSDK, handlerId: string, hookHandler: Partial<GroupChannelHandler>) => void;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- import type Sendbird from 'sendbird';
2
+ import { ConnectionHandler } from '@sendbird/chat';
3
3
  import { SendbirdChatSDK } from '@sendbird/uikit-utils';
4
- export declare const useConnectionHandler: (sdk: SendbirdChatSDK, handlerId: string, hookHandler: Partial<Sendbird.ConnectionHandler>, deps?: React.DependencyList) => void;
4
+ export declare const useConnectionHandler: (sdk: SendbirdChatSDK, handlerId: string, hookHandler: Partial<ConnectionHandler>, deps?: React.DependencyList) => void;
@@ -1,4 +1,3 @@
1
- import React from 'react';
2
- import type Sendbird from 'sendbird';
1
+ import { UserEventHandler } from '@sendbird/chat';
3
2
  import type { SendbirdChatSDK } from '@sendbird/uikit-utils';
4
- export declare const useUserEventHandler: (sdk: SendbirdChatSDK, handlerId: string, hookHandler: Partial<Sendbird.UserEventHandler>, deps?: React.DependencyList) => void;
3
+ export declare const useUserEventHandler: (sdk: SendbirdChatSDK, handlerId: string, hookHandler: Partial<UserEventHandler>) => void;
@@ -1,5 +1,4 @@
1
- import type Sendbird from 'sendbird';
2
- import type { SendbirdChatSDK, SendbirdError, SendbirdFileMessage, SendbirdFileMessageParams, SendbirdGroupChannel, SendbirdGroupChannelCollection, SendbirdMessage, SendbirdMessageCollection, SendbirdUserMessage, SendbirdUserMessageParams } from '@sendbird/uikit-utils';
1
+ import type { SendbirdChatSDK, SendbirdError, SendbirdFileMessage, SendbirdFileMessageCreateParams, SendbirdGroupChannel, SendbirdGroupChannelCollection, SendbirdGroupChannelListQuery, SendbirdMessage, SendbirdMessageCollection, SendbirdPreviousMessageListQuery, SendbirdUserMessage, SendbirdUserMessageCreateParams } from '@sendbird/uikit-utils';
3
2
  export interface CustomQueryInterface<Data> {
4
3
  isLoading: boolean;
5
4
  next: () => Promise<Data[]>;
@@ -43,7 +42,7 @@ export interface UseGroupChannelList {
43
42
  };
44
43
  }
45
44
  export declare type UseGroupChannelListOptions = {
46
- queryCreator?: () => Sendbird.GroupChannelListQuery;
45
+ queryCreator?: () => SendbirdGroupChannelListQuery;
47
46
  collectionCreator?: () => SendbirdGroupChannelCollection;
48
47
  enableCollectionWithoutLocalCache?: boolean;
49
48
  };
@@ -106,28 +105,28 @@ export interface UseGroupChannelMessages {
106
105
  * @param callback sent message callback
107
106
  * @return pending message
108
107
  * */
109
- sendFileMessage: (params: SendbirdFileMessageParams, onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void) => Promise<SendbirdFileMessage>;
108
+ sendFileMessage: (params: SendbirdFileMessageCreateParams, onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void) => Promise<SendbirdFileMessage>;
110
109
  /**
111
110
  * Send user message
112
111
  * @param params user message params
113
112
  * @param callback sent message callback
114
113
  * @return pending message
115
114
  * */
116
- sendUserMessage: (params: SendbirdUserMessageParams, onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void) => Promise<SendbirdUserMessage>;
115
+ sendUserMessage: (params: SendbirdUserMessageCreateParams, onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void) => Promise<SendbirdUserMessage>;
117
116
  /**
118
117
  * Update file message
119
118
  * @param messageId
120
119
  * @param params file message params
121
120
  * @return updated message
122
121
  * */
123
- updateFileMessage: (messageId: number, params: SendbirdFileMessageParams) => Promise<SendbirdFileMessage>;
122
+ updateFileMessage: (messageId: number, params: SendbirdFileMessageCreateParams) => Promise<SendbirdFileMessage>;
124
123
  /**
125
124
  * Update user message
126
125
  * @param messageId
127
126
  * @param params user message params
128
127
  * @return updated message
129
128
  * */
130
- updateUserMessage: (messageId: number, params: SendbirdUserMessageParams) => Promise<SendbirdUserMessage>;
129
+ updateUserMessage: (messageId: number, params: SendbirdUserMessageCreateParams) => Promise<SendbirdUserMessage>;
131
130
  /**
132
131
  * Resend failed message
133
132
  * @param failedMessage failed message to resend
@@ -148,7 +147,7 @@ export interface UseGroupChannelMessages {
148
147
  }
149
148
  export declare type UseGroupChannelMessagesOptions = {
150
149
  sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;
151
- queryCreator?: () => Sendbird.PreviousMessageListQuery;
150
+ queryCreator?: () => SendbirdPreviousMessageListQuery;
152
151
  collectionCreator?: () => SendbirdMessageCollection;
153
152
  enableCollectionWithoutLocalCache?: boolean;
154
153
  onChannelDeleted?: () => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sendbird/uikit-chat-hooks",
3
- "version": "1.1.2",
3
+ "version": "2.0.0-rc.0",
4
4
  "description": "React hooks that built with SendbirdChat SDK",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -38,7 +38,7 @@
38
38
  "access": "public"
39
39
  },
40
40
  "dependencies": {
41
- "@sendbird/uikit-utils": "1.1.2"
41
+ "@sendbird/uikit-utils": "2.0.0-rc.0"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/react": "*",
@@ -47,8 +47,8 @@
47
47
  "typescript": "^4.1.3"
48
48
  },
49
49
  "peerDependencies": {
50
- "react": ">=16.13.1",
51
- "sendbird": "^3.1.22"
50
+ "@sendbird/chat": "^4.0.13",
51
+ "react": ">=16.13.1"
52
52
  },
53
53
  "react-native-builder-bob": {
54
54
  "source": "src",
@@ -69,5 +69,5 @@
69
69
  "readmeFile": "./README.md",
70
70
  "displayName": "@sendbird/uikit-chat-hooks"
71
71
  },
72
- "gitHead": "3bfe51786e73bedc419116e447b79d6b57f9178c"
72
+ "gitHead": "394d5e3e259086c2226a24406462f119d4af9860"
73
73
  }
@@ -6,7 +6,7 @@ export const useActiveGroupChannel = (sdk: SendbirdChatSDK, staleChannel: Sendbi
6
6
  const [activeChannel, setActiveChannel] = useState(() => staleChannel);
7
7
 
8
8
  useEffect(() => {
9
- sdk.GroupChannel.getChannel(staleChannel.url).then(setActiveChannel);
9
+ sdk.groupChannel.getChannel(staleChannel.url).then(setActiveChannel);
10
10
  }, [staleChannel.url]);
11
11
 
12
12
  return { activeChannel, setActiveChannel };
@@ -1,9 +1,12 @@
1
+ import { Logger } from '@sendbird/uikit-utils';
2
+
1
3
  import type { UseGroupChannelList } from '../../types';
2
4
  import { useGroupChannelListWithCollection } from './useGroupChannelListWithCollection';
3
5
  import { useGroupChannelListWithQuery } from './useGroupChannelListWithQuery';
4
6
 
5
7
  export const useGroupChannelList: UseGroupChannelList = (sdk, userId, options) => {
6
8
  if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {
9
+ if (options?.queryCreator) Logger.warn('`queryCreator` is ignored, please use `collectionCreator` instead.');
7
10
  return useGroupChannelListWithCollection(sdk, userId, options);
8
11
  } else {
9
12
  return useGroupChannelListWithQuery(sdk, userId, options);
@@ -1,7 +1,8 @@
1
1
  import { useEffect, useRef } from 'react';
2
2
 
3
+ import { GroupChannelFilter, GroupChannelListOrder } from '@sendbird/chat/groupChannel';
3
4
  import type { SendbirdChatSDK, SendbirdGroupChannelCollection } from '@sendbird/uikit-utils';
4
- import { useAsyncEffect, useFreshCallback, useUniqId } from '@sendbird/uikit-utils';
5
+ import { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback, useUniqId } from '@sendbird/uikit-utils';
5
6
 
6
7
  import { useAppFeatures } from '../../common/useAppFeatures';
7
8
  import { useChannelHandler } from '../../handler/useChannelHandler';
@@ -17,20 +18,14 @@ const createGroupChannelListCollection = (
17
18
  const passedCollection = collectionCreator?.();
18
19
  if (passedCollection) return passedCollection;
19
20
 
20
- const defaultOptions = {
21
- includeEmpty: false,
21
+ const filter = new GroupChannelFilter();
22
+ filter.includeEmpty = false;
23
+
24
+ return sdk.groupChannel.createGroupChannelCollection({
25
+ filter,
22
26
  limit: 20,
23
- order: sdk.GroupChannelCollection.GroupChannelOrder.LATEST_LAST_MESSAGE,
24
- };
25
- const collectionBuilder = sdk.GroupChannel.createGroupChannelCollection();
26
- const groupChannelFilter = new sdk.GroupChannelFilter();
27
- groupChannelFilter.includeEmpty = defaultOptions.includeEmpty;
28
-
29
- return collectionBuilder
30
- .setFilter(groupChannelFilter)
31
- .setLimit(defaultOptions.limit)
32
- .setOrder(defaultOptions.order)
33
- .build();
27
+ order: GroupChannelListOrder.LATEST_LAST_MESSAGE,
28
+ });
34
29
  };
35
30
 
36
31
  export const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, userId, options) => {
@@ -43,9 +38,11 @@ export const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, user
43
38
  useGroupChannelListReducer();
44
39
 
45
40
  const updateChannelsAndMarkAsDelivered = (markAsDelivered: boolean) => {
46
- const channels = collectionRef.current?.channelList ?? [];
41
+ const channels = collectionRef.current?.channels ?? [];
47
42
  setChannels(channels, true);
48
- if (markAsDelivered && deliveryReceiptEnabled) channels.forEach((channel) => sdk.markAsDelivered(channel.url));
43
+ if (markAsDelivered && deliveryReceiptEnabled) {
44
+ channels.forEach((channel) => confirmAndMarkAsDelivered(sdk, channel));
45
+ }
49
46
  };
50
47
 
51
48
  const init = useFreshCallback(async (uid?: string) => {
@@ -54,22 +51,22 @@ export const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, user
54
51
  if (uid) {
55
52
  collectionRef.current = createGroupChannelListCollection(sdk, options?.collectionCreator);
56
53
 
57
- if (collectionRef.current?.hasMore) {
58
- await collectionRef.current?.loadMore();
59
- updateChannelsAndMarkAsDelivered(true);
60
- }
61
-
62
54
  collectionRef.current?.setGroupChannelCollectionHandler({
63
- onChannelsAdded() {
55
+ onChannelsAdded: () => {
64
56
  updateChannelsAndMarkAsDelivered(true);
65
57
  },
66
- onChannelsUpdated() {
58
+ onChannelsUpdated: () => {
67
59
  updateChannelsAndMarkAsDelivered(true);
68
60
  },
69
- onChannelsDeleted() {
61
+ onChannelsDeleted: () => {
70
62
  updateChannelsAndMarkAsDelivered(false);
71
63
  },
72
64
  });
65
+
66
+ if (collectionRef.current?.hasMore) {
67
+ await collectionRef.current?.loadMore();
68
+ updateChannelsAndMarkAsDelivered(true);
69
+ }
73
70
  }
74
71
  });
75
72
 
@@ -1,8 +1,8 @@
1
1
  import { useRef } from 'react';
2
- import type Sendbird from 'sendbird';
3
2
 
4
- import type { SendbirdChannel, SendbirdChatSDK } from '@sendbird/uikit-utils';
5
- import { useAsyncEffect, useFreshCallback } from '@sendbird/uikit-utils';
3
+ import { GroupChannelListOrder } from '@sendbird/chat/groupChannel';
4
+ import type { SendbirdChannel, SendbirdChatSDK, SendbirdGroupChannelListQuery } from '@sendbird/uikit-utils';
5
+ import { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback } from '@sendbird/uikit-utils';
6
6
 
7
7
  import { useAppFeatures } from '../../common/useAppFeatures';
8
8
  import { useChannelHandler } from '../../handler/useChannelHandler';
@@ -18,21 +18,16 @@ const createGroupChannelListQuery = (
18
18
  const passedQuery = queryCreator?.();
19
19
  if (passedQuery) return passedQuery;
20
20
 
21
- const defaultOptions = {
21
+ return sdk.groupChannel.createMyGroupChannelListQuery({
22
22
  includeEmpty: false,
23
23
  limit: 20,
24
- order: 'latest_last_message',
25
- } as const;
26
- const defaultQuery = sdk.GroupChannel.createMyGroupChannelListQuery();
27
- defaultQuery.limit = defaultOptions.limit;
28
- defaultQuery.order = defaultOptions.order;
29
- defaultQuery.includeEmpty = defaultOptions.includeEmpty;
30
- return defaultQuery;
24
+ order: GroupChannelListOrder.LATEST_LAST_MESSAGE,
25
+ });
31
26
  };
32
27
 
33
28
  export const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, options) => {
34
29
  const { deliveryReceiptEnabled } = useAppFeatures(sdk);
35
- const queryRef = useRef<Sendbird.GroupChannelListQuery>();
30
+ const queryRef = useRef<SendbirdGroupChannelListQuery>();
36
31
 
37
32
  const {
38
33
  loading,
@@ -48,7 +43,7 @@ export const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, o
48
43
 
49
44
  const updateChannelsAndMarkAsDelivered = (channels: SendbirdChannel[]) => {
50
45
  updateChannels(channels);
51
- if (deliveryReceiptEnabled) channels.forEach((channel) => sdk.markAsDelivered(channel.url));
46
+ if (deliveryReceiptEnabled) channels.forEach((channel) => confirmAndMarkAsDelivered(sdk, channel));
52
47
  };
53
48
 
54
49
  const init = useFreshCallback(async (uid?: string) => {
@@ -60,7 +55,7 @@ export const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, o
60
55
  const channels = await queryRef.current.next();
61
56
 
62
57
  setChannels(channels, true);
63
- if (deliveryReceiptEnabled) channels.forEach((channel) => sdk.markAsDelivered(channel.url));
58
+ if (deliveryReceiptEnabled) channels.forEach((channel) => confirmAndMarkAsDelivered(sdk, channel));
64
59
  }
65
60
  }
66
61
  });
@@ -100,7 +95,7 @@ export const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, o
100
95
  if (queryRef.current?.hasNext) {
101
96
  const channels = await queryRef.current.next();
102
97
  setChannels(channels, false);
103
- if (deliveryReceiptEnabled) channels.forEach((channel) => sdk.markAsDelivered(channel.url));
98
+ if (deliveryReceiptEnabled) channels.forEach((channel) => confirmAndMarkAsDelivered(sdk, channel));
104
99
  }
105
100
  });
106
101
 
@@ -1,9 +1,12 @@
1
+ import { Logger } from '@sendbird/uikit-utils';
2
+
1
3
  import type { UseGroupChannelMessages } from '../../types';
2
4
  import { useGroupChannelMessagesWithCollection } from './useGroupChannelMessagesWithCollection';
3
5
  import { useGroupChannelMessagesWithQuery } from './useGroupChannelMessagesWithQuery';
4
6
 
5
7
  export const useGroupChannelMessages: UseGroupChannelMessages = (sdk, channel, userId, options) => {
6
8
  if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {
9
+ if (options?.queryCreator) Logger.warn('`queryCreator` is ignored, please use `collectionCreator` instead.');
7
10
  return useGroupChannelMessagesWithCollection(sdk, channel, userId, options);
8
11
  } else {
9
12
  return useGroupChannelMessagesWithQuery(sdk, channel, userId, options);
@@ -1,11 +1,6 @@
1
1
  import { useReducer } from 'react';
2
2
 
3
- import type {
4
- SendbirdBaseMessage,
5
- SendbirdFileMessage,
6
- SendbirdMessage,
7
- SendbirdUserMessage,
8
- } from '@sendbird/uikit-utils';
3
+ import type { SendbirdBaseMessage, SendbirdFileMessage, SendbirdUserMessage } from '@sendbird/uikit-utils';
9
4
  import { arrayToMapWithGetter, getMessageUniqId, isMyMessage, isNewMessage, useIIFE } from '@sendbird/uikit-utils';
10
5
 
11
6
  import type { UseGroupChannelMessagesOptions } from '../../types';
@@ -27,8 +22,8 @@ type Action =
27
22
  type State = {
28
23
  loading: boolean;
29
24
  refreshing: boolean;
30
- messageMap: Record<string, SendbirdMessage>;
31
- nextMessageMap: Record<string, SendbirdMessage>;
25
+ messageMap: Record<string, SendbirdBaseMessage>;
26
+ nextMessageMap: Record<string, SendbirdBaseMessage>;
32
27
  };
33
28
 
34
29
  const defaultReducer = ({ ...draft }: State, action: Action) => {
@@ -42,7 +37,7 @@ const defaultReducer = ({ ...draft }: State, action: Action) => {
42
37
  }
43
38
  case 'update_messages':
44
39
  case 'update_next_messages': {
45
- const key = action.type === 'update_messages' ? 'messageMap' : 'nextMessageMap';
40
+ const key = action.type === 'update_messages' ? 'messageMap' : ('nextMessageMap' as const);
46
41
  const messageMap = arrayToMapWithGetter(action.value.messages, getMessageUniqId);
47
42
  if (action.value.clearPrev) {
48
43
  draft[key] = messageMap;