@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.
- package/README.md +1 -1
- package/lib/commonjs/channel/useActiveGroupChannel.js +1 -1
- package/lib/commonjs/channel/useActiveGroupChannel.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelList/index.js +3 -0
- package/lib/commonjs/channel/useGroupChannelList/index.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js +25 -26
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js +8 -11
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/index.js +3 -0
- package/lib/commonjs/channel/useGroupChannelMessages/index.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/reducer.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +83 -87
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +32 -20
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
- package/lib/commonjs/common/useMessageOutgoingStatus.js +8 -4
- package/lib/commonjs/common/useMessageOutgoingStatus.js.map +1 -1
- package/lib/commonjs/common/usePushTrigger.js +13 -5
- package/lib/commonjs/common/usePushTrigger.js.map +1 -1
- package/lib/commonjs/common/useTotalUnreadChannelCount.js +4 -2
- package/lib/commonjs/common/useTotalUnreadChannelCount.js.map +1 -1
- package/lib/commonjs/common/useTotalUnreadMessageCount.js +12 -15
- package/lib/commonjs/common/useTotalUnreadMessageCount.js.map +1 -1
- package/lib/commonjs/handler/useChannelHandler.js +5 -3
- package/lib/commonjs/handler/useChannelHandler.js.map +1 -1
- package/lib/commonjs/handler/useConnectionHandler.js +5 -3
- package/lib/commonjs/handler/useConnectionHandler.js.map +1 -1
- package/lib/commonjs/handler/useUserEventHandler.js +19 -6
- package/lib/commonjs/handler/useUserEventHandler.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/channel/useActiveGroupChannel.js +1 -1
- package/lib/module/channel/useActiveGroupChannel.js.map +1 -1
- package/lib/module/channel/useGroupChannelList/index.js +2 -0
- package/lib/module/channel/useGroupChannelList/index.js.map +1 -1
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js +25 -27
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js +8 -12
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/index.js +2 -0
- package/lib/module/channel/useGroupChannelMessages/index.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/reducer.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +81 -87
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +33 -21
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
- package/lib/module/common/useMessageOutgoingStatus.js +8 -4
- package/lib/module/common/useMessageOutgoingStatus.js.map +1 -1
- package/lib/module/common/usePushTrigger.js +11 -5
- package/lib/module/common/usePushTrigger.js.map +1 -1
- package/lib/module/common/useTotalUnreadChannelCount.js +4 -2
- package/lib/module/common/useTotalUnreadChannelCount.js.map +1 -1
- package/lib/module/common/useTotalUnreadMessageCount.js +12 -17
- package/lib/module/common/useTotalUnreadMessageCount.js.map +1 -1
- package/lib/module/handler/useChannelHandler.js +4 -3
- package/lib/module/handler/useChannelHandler.js.map +1 -1
- package/lib/module/handler/useConnectionHandler.js +4 -3
- package/lib/module/handler/useConnectionHandler.js.map +1 -1
- package/lib/module/handler/useUserEventHandler.js +19 -7
- package/lib/module/handler/useUserEventHandler.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/src/channel/useActiveGroupChannel.d.ts +2 -2
- package/lib/typescript/src/channel/useGroupChannelList/reducer.d.ts +1 -1
- package/lib/typescript/src/channel/useGroupChannelMessages/reducer.d.ts +4 -4
- package/lib/typescript/src/common/useMessageOutgoingStatus.d.ts +2 -2
- package/lib/typescript/src/common/usePushTrigger.d.ts +9 -3
- package/lib/typescript/src/common/useTotalUnreadMessageCount.d.ts +4 -4
- package/lib/typescript/src/common/useUserList.d.ts +1 -1
- package/lib/typescript/src/handler/useChannelHandler.d.ts +2 -2
- package/lib/typescript/src/handler/useConnectionHandler.d.ts +2 -2
- package/lib/typescript/src/handler/useUserEventHandler.d.ts +2 -3
- package/lib/typescript/src/types.d.ts +7 -8
- package/package.json +5 -5
- package/src/channel/useActiveGroupChannel.ts +1 -1
- package/src/channel/useGroupChannelList/index.ts +3 -0
- package/src/channel/useGroupChannelList/useGroupChannelListWithCollection.ts +21 -24
- package/src/channel/useGroupChannelList/useGroupChannelListWithQuery.ts +10 -15
- package/src/channel/useGroupChannelMessages/index.ts +3 -0
- package/src/channel/useGroupChannelMessages/reducer.ts +4 -9
- package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +79 -78
- package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +59 -34
- package/src/common/useMessageOutgoingStatus.ts +8 -13
- package/src/common/usePushTrigger.ts +13 -7
- package/src/common/useTotalUnreadChannelCount.ts +4 -2
- package/src/common/useTotalUnreadMessageCount.ts +14 -25
- package/src/handler/useChannelHandler.ts +5 -5
- package/src/handler/useConnectionHandler.ts +5 -5
- package/src/handler/useUserEventHandler.ts +15 -8
- package/src/types.ts +10 -10
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SendbirdBaseMessage
|
|
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:
|
|
13
|
-
nextMessages:
|
|
14
|
-
newMessagesFromMembers:
|
|
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 {
|
|
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?:
|
|
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
|
|
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:
|
|
5
|
-
updateOption: (value:
|
|
10
|
+
option: PushTriggerOption;
|
|
11
|
+
updateOption: (value: keyof typeof PushTriggerMap) => Promise<void>;
|
|
6
12
|
};
|
|
7
13
|
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { TotalUnreadMessageCountParams } from '@sendbird/chat/groupChannel';
|
|
2
2
|
import type { SendbirdChatSDK } from '@sendbird/uikit-utils';
|
|
3
|
-
declare type
|
|
4
|
-
|
|
3
|
+
declare type Options = {
|
|
4
|
+
params?: TotalUnreadMessageCountParams;
|
|
5
5
|
maxCount?: number;
|
|
6
6
|
};
|
|
7
|
-
export declare const useTotalUnreadMessageCount: (sdk: SendbirdChatSDK,
|
|
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
|
|
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<
|
|
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
|
|
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<
|
|
4
|
+
export declare const useConnectionHandler: (sdk: SendbirdChatSDK, handlerId: string, hookHandler: Partial<ConnectionHandler>, deps?: React.DependencyList) => void;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import
|
|
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<
|
|
3
|
+
export declare const useUserEventHandler: (sdk: SendbirdChatSDK, handlerId: string, hookHandler: Partial<UserEventHandler>) => void;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type
|
|
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?: () =>
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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?: () =>
|
|
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": "
|
|
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": "
|
|
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
|
-
"
|
|
51
|
-
"
|
|
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": "
|
|
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.
|
|
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
|
|
21
|
-
|
|
21
|
+
const filter = new GroupChannelFilter();
|
|
22
|
+
filter.includeEmpty = false;
|
|
23
|
+
|
|
24
|
+
return sdk.groupChannel.createGroupChannelCollection({
|
|
25
|
+
filter,
|
|
22
26
|
limit: 20,
|
|
23
|
-
order:
|
|
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?.
|
|
41
|
+
const channels = collectionRef.current?.channels ?? [];
|
|
47
42
|
setChannels(channels, true);
|
|
48
|
-
if (markAsDelivered && deliveryReceiptEnabled)
|
|
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
|
|
5
|
-
import {
|
|
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
|
-
|
|
21
|
+
return sdk.groupChannel.createMyGroupChannelListQuery({
|
|
22
22
|
includeEmpty: false,
|
|
23
23
|
limit: 20,
|
|
24
|
-
order:
|
|
25
|
-
}
|
|
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<
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
31
|
-
nextMessageMap: Record<string,
|
|
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;
|