Skip to content

Commit e381040

Browse files
committed
Merge branch 'hotfixes'
# Conflicts: # packages/uikit-chat-hooks/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts # packages/uikit-chat-hooks/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts # packages/uikit-utils/src/sendbird/channel.ts # packages/uikit-utils/src/shared/bufferedRequest.ts
2 parents 0921054 + e3a34ae commit e381040

File tree

18 files changed

+187
-127
lines changed

18 files changed

+187
-127
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@
33
All notable changes to this project will be documented in this file.
44
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
55

6+
## [2.0.3](https://github.com/sendbird/sendbird-uikit-react-native/compare/v2.0.1...v2.0.3) (2022-12-01)
7+
8+
9+
### Improvements
10+
11+
* optimize markAs APIs ([b0fb3aa](https://github.com/sendbird/sendbird-uikit-react-native/commit/b0fb3aa86636b03f0dcc6337eaa17c7336b5bea9))
12+
13+
14+
615
## [2.0.1](https://github.com/sendbird/sendbird-uikit-react-native/compare/v2.0.0...v2.0.1) (2022-10-26)
716

817

lerna.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
],
77
"npmClient": "yarn",
88
"useWorkspaces": true,
9-
"version": "2.0.1",
9+
"version": "2.0.3",
1010
"command": {
1111
"publish": {
1212
"conventionalCommits": true,

packages/uikit-chat-hooks/CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@
33
All notable changes to this project will be documented in this file.
44
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
55

6+
## [2.0.3](https://github.com/sendbird/sendbird-uikit-react-native/compare/v2.0.1...v2.0.3) (2022-12-01)
7+
8+
9+
### Improvements
10+
11+
* optimize markAs APIs ([b0fb3aa](https://github.com/sendbird/sendbird-uikit-react-native/commit/b0fb3aa86636b03f0dcc6337eaa17c7336b5bea9))
12+
13+
14+
615
## [2.0.1](https://github.com/sendbird/sendbird-uikit-react-native/compare/v2.0.0...v2.0.1) (2022-10-26)
716

817
**Note:** Version bump only for package @sendbird/uikit-chat-hooks

packages/uikit-chat-hooks/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sendbird/uikit-chat-hooks",
3-
"version": "2.0.1",
3+
"version": "2.0.3",
44
"description": "React hooks that built with SendbirdChat SDK",
55
"main": "lib/commonjs/index",
66
"module": "lib/module/index",
@@ -38,7 +38,7 @@
3838
"access": "public"
3939
},
4040
"dependencies": {
41-
"@sendbird/uikit-utils": "2.0.1"
41+
"@sendbird/uikit-utils": "2.0.3"
4242
},
4343
"devDependencies": {
4444
"@types/react": "*",

packages/uikit-chat-hooks/src/channel/useGroupChannelList/useGroupChannelListWithCollection.ts

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useEffect, useRef } from 'react';
22

3-
import { GroupChannelFilter, GroupChannelListOrder } from '@sendbird/chat/groupChannel';
4-
import type { SendbirdChatSDK, SendbirdGroupChannelCollection } from '@sendbird/uikit-utils';
3+
import { GroupChannelEventSource, GroupChannelFilter, GroupChannelListOrder } from '@sendbird/chat/groupChannel';
4+
import type { SendbirdBaseChannel, SendbirdChatSDK, SendbirdGroupChannelCollection } from '@sendbird/uikit-utils';
55
import { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback, useUniqId } from '@sendbird/uikit-utils';
66

77
import { useAppFeatures } from '../../common/useAppFeatures';
@@ -37,11 +37,23 @@ export const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, user
3737
const { loading, groupChannels, refreshing, setChannels, deleteChannels, updateRefreshing, updateLoading } =
3838
useGroupChannelListReducer();
3939

40-
const updateChannelsAndMarkAsDelivered = (markAsDelivered: boolean) => {
40+
const updateChannelsAndMarkAsDelivered = (
41+
markAsDelivered: boolean,
42+
source?: GroupChannelEventSource,
43+
updatedChannels?: SendbirdBaseChannel[],
44+
) => {
4145
const channels = collectionRef.current?.channels ?? [];
4246
setChannels(channels, true);
4347
if (markAsDelivered && deliveryReceiptEnabled) {
44-
channels.forEach((channel) => confirmAndMarkAsDelivered(sdk, channel));
48+
switch (source) {
49+
case GroupChannelEventSource.EVENT_MESSAGE_RECEIVED:
50+
case GroupChannelEventSource.EVENT_MESSAGE_SENT:
51+
case GroupChannelEventSource.SYNC_CHANNEL_BACKGROUND:
52+
case GroupChannelEventSource.SYNC_CHANNEL_CHANGELOGS:
53+
case undefined:
54+
confirmAndMarkAsDelivered(updatedChannels ?? channels);
55+
break;
56+
}
4557
}
4658
};
4759

@@ -52,11 +64,11 @@ export const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, user
5264
collectionRef.current = createGroupChannelListCollection(sdk, options?.collectionCreator);
5365

5466
collectionRef.current?.setGroupChannelCollectionHandler({
55-
onChannelsAdded: () => {
56-
updateChannelsAndMarkAsDelivered(true);
67+
onChannelsAdded: (context, channels) => {
68+
updateChannelsAndMarkAsDelivered(true, context.source, channels);
5769
},
58-
onChannelsUpdated: () => {
59-
updateChannelsAndMarkAsDelivered(true);
70+
onChannelsUpdated: (context, channels) => {
71+
updateChannelsAndMarkAsDelivered(true, context.source, channels);
6072
},
6173
onChannelsDeleted: () => {
6274
updateChannelsAndMarkAsDelivered(false);

packages/uikit-chat-hooks/src/channel/useGroupChannelList/useGroupChannelListWithQuery.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, o
4343

4444
const updateChannelsAndMarkAsDelivered = (channels: SendbirdChannel[]) => {
4545
updateChannels(channels);
46-
if (deliveryReceiptEnabled) channels.forEach((channel) => confirmAndMarkAsDelivered(sdk, channel));
46+
if (deliveryReceiptEnabled) confirmAndMarkAsDelivered(channels);
4747
};
4848

4949
const init = useFreshCallback(async (uid?: string) => {
@@ -55,7 +55,7 @@ export const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, o
5555
const channels = await queryRef.current.next();
5656

5757
setChannels(channels, true);
58-
if (deliveryReceiptEnabled) channels.forEach((channel) => confirmAndMarkAsDelivered(sdk, channel));
58+
if (deliveryReceiptEnabled) confirmAndMarkAsDelivered(channels);
5959
}
6060
}
6161
});
@@ -67,21 +67,24 @@ export const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, o
6767
}, [init, userId]);
6868

6969
useChannelHandler(sdk, HOOK_NAME, {
70-
onChannelChanged: (channel) => updateChannelsAndMarkAsDelivered([channel]),
70+
onChannelChanged: (channel) => updateChannels([channel]),
7171
onChannelFrozen: (channel) => updateChannels([channel]),
7272
onChannelUnfrozen: (channel) => updateChannels([channel]),
7373
onChannelMemberCountChanged: (channels) => updateChannels(channels),
7474
onChannelDeleted: (url) => deleteChannels([url]),
75-
onUserJoined: (channel) => updateChannelsAndMarkAsDelivered([channel]),
75+
onUserJoined: (channel) => updateChannels([channel]),
7676
onUserLeft: (channel, user) => {
7777
const isMe = user.userId === userId;
7878
if (isMe) deleteChannels([channel.url]);
79-
else updateChannelsAndMarkAsDelivered([channel]);
79+
else updateChannels([channel]);
8080
},
8181
onUserBanned(channel, user) {
8282
const isMe = user.userId === userId;
8383
if (isMe) deleteChannels([channel.url]);
84-
else updateChannelsAndMarkAsDelivered([channel]);
84+
else updateChannels([channel]);
85+
},
86+
onMessageReceived(channel) {
87+
updateChannelsAndMarkAsDelivered([channel]);
8588
},
8689
});
8790

@@ -95,7 +98,7 @@ export const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, o
9598
if (queryRef.current?.hasNext) {
9699
const channels = await queryRef.current.next();
97100
setChannels(channels, false);
98-
if (deliveryReceiptEnabled) channels.forEach((channel) => confirmAndMarkAsDelivered(sdk, channel));
101+
if (deliveryReceiptEnabled) confirmAndMarkAsDelivered(channels);
99102
}
100103
});
101104

packages/uikit-chat-hooks/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,14 @@
11
import { useCallback, useEffect, useRef } from 'react';
22

3-
import { MessageCollectionInitPolicy, MessageFilter } from '@sendbird/chat/groupChannel';
3+
import { MessageCollectionInitPolicy, MessageEventSource, MessageFilter } from '@sendbird/chat/groupChannel';
44
import type {
55
SendbirdChannel,
66
SendbirdFileMessage,
77
SendbirdGroupChannel,
88
SendbirdMessageCollection,
99
} from '@sendbird/uikit-utils';
10-
import {
11-
Logger,
12-
confirmAndMarkAsDelivered,
13-
confirmAndMarkAsRead,
14-
isDifferentChannel,
15-
useForceUpdate,
16-
} from '@sendbird/uikit-utils';
10+
import { Logger, confirmAndMarkAsRead, isDifferentChannel, useForceUpdate } from '@sendbird/uikit-utils';
1711

18-
import { useAppFeatures } from '../../common/useAppFeatures';
1912
import { useChannelHandler } from '../../handler/useChannelHandler';
2013
import type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';
2114
import { useGroupChannelMessagesReducer } from './reducer';
@@ -32,9 +25,7 @@ const createMessageCollection = (
3225
const HOOK_NAME = 'useGroupChannelMessagesWithCollection';
3326

3427
export const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {
35-
const { deliveryReceiptEnabled } = useAppFeatures(sdk);
3628
const forceUpdate = useForceUpdate();
37-
3829
const collectionRef = useRef<SendbirdMessageCollection>();
3930

4031
const {
@@ -53,12 +44,7 @@ export const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (s
5344

5445
const channelMarkAs = async () => {
5546
try {
56-
if (deliveryReceiptEnabled) await confirmAndMarkAsDelivered(sdk, channel);
57-
} catch (e) {
58-
Logger.warn(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);
59-
}
60-
try {
61-
await confirmAndMarkAsRead(sdk, [channel]);
47+
await confirmAndMarkAsRead([channel]);
6248
} catch (e) {
6349
Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);
6450
}
@@ -81,8 +67,14 @@ export const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (s
8167
channelMarkAs();
8268

8369
collectionRef.current?.setMessageCollectionHandler({
84-
onMessagesAdded: (_, channel, messages) => {
85-
channelMarkAs();
70+
onMessagesAdded: (_, __, messages) => {
71+
switch (_.source) {
72+
case MessageEventSource.EVENT_MESSAGE_RECEIVED:
73+
case MessageEventSource.EVENT_MESSAGE_SENT_SUCCESS:
74+
case MessageEventSource.SYNC_MESSAGE_FILL:
75+
channelMarkAs();
76+
break;
77+
}
8678
updateNextMessages(messages, false, sdk.currentUser.userId);
8779
updateChannel(channel);
8880
},

packages/uikit-chat-hooks/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,12 @@ import type {
77
} from '@sendbird/uikit-utils';
88
import {
99
Logger,
10-
confirmAndMarkAsDelivered,
1110
confirmAndMarkAsRead,
1211
isDifferentChannel,
1312
useAsyncEffect,
1413
useForceUpdate,
1514
} from '@sendbird/uikit-utils';
1615

17-
import { useAppFeatures } from '../../common/useAppFeatures';
1816
import { useChannelHandler } from '../../handler/useChannelHandler';
1917
import type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';
2018
import { useGroupChannelMessagesReducer } from './reducer';
@@ -32,8 +30,6 @@ const createMessageQuery = (
3230

3331
const HOOK_NAME = 'useGroupChannelMessagesWithQuery';
3432
export const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {
35-
const { deliveryReceiptEnabled } = useAppFeatures(sdk);
36-
3733
const queryRef = useRef<SendbirdPreviousMessageListQuery>();
3834

3935
const forceUpdate = useForceUpdate();
@@ -54,12 +50,7 @@ export const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, c
5450

5551
const channelMarkAs = async () => {
5652
try {
57-
if (deliveryReceiptEnabled) await confirmAndMarkAsDelivered(sdk, channel);
58-
} catch (e) {
59-
Logger.warn(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);
60-
}
61-
try {
62-
await confirmAndMarkAsRead(sdk, [channel]);
53+
await confirmAndMarkAsRead([channel]);
6354
} catch (e) {
6455
Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);
6556
}

packages/uikit-react-native-foundation/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@
33
All notable changes to this project will be documented in this file.
44
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
55

6+
## [2.0.3](https://github.com/sendbird/sendbird-uikit-react-native/compare/v2.0.1...v2.0.3) (2022-12-01)
7+
8+
**Note:** Version bump only for package @sendbird/uikit-react-native-foundation
9+
10+
11+
12+
13+
614
## [2.0.1](https://github.com/sendbird/sendbird-uikit-react-native/compare/v2.0.0...v2.0.1) (2022-10-26)
715

816

packages/uikit-react-native-foundation/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sendbird/uikit-react-native-foundation",
3-
"version": "2.0.1",
3+
"version": "2.0.3",
44
"description": "react-native-uikit",
55
"main": "lib/commonjs/index",
66
"module": "lib/module/index",
@@ -38,7 +38,7 @@
3838
"access": "public"
3939
},
4040
"dependencies": {
41-
"@sendbird/uikit-utils": "2.0.1"
41+
"@sendbird/uikit-utils": "2.0.3"
4242
},
4343
"devDependencies": {
4444
"@types/react": "*",

0 commit comments

Comments
 (0)