@sendbird/uikit-chat-hooks 2.4.1 → 2.5.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 +2 -2
- package/lib/commonjs/channel/useChannelMessagesReducer.js +153 -0
- package/lib/commonjs/channel/useChannelMessagesReducer.js.map +1 -0
- package/lib/commonjs/channel/useGroupChannel.js +0 -4
- package/lib/commonjs/channel/useGroupChannel.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelList/index.js +0 -5
- package/lib/commonjs/channel/useGroupChannelList/index.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelList/reducer.js +12 -29
- package/lib/commonjs/channel/useGroupChannelList/reducer.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js +1 -22
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js +1 -18
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/index.js +0 -5
- package/lib/commonjs/channel/useGroupChannelMessages/index.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +172 -131
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +76 -73
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannel.js +0 -4
- package/lib/commonjs/channel/useOpenChannel.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannelList/index.js +0 -3
- package/lib/commonjs/channel/useOpenChannelList/index.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannelList/reducer.js +2 -21
- package/lib/commonjs/channel/useOpenChannelList/reducer.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js +1 -22
- package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannelMessages/index.js +0 -3
- package/lib/commonjs/channel/useOpenChannelMessages/index.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +128 -57
- package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
- package/lib/commonjs/common/useAppFeatures.js +0 -3
- package/lib/commonjs/common/useAppFeatures.js.map +1 -1
- package/lib/commonjs/common/useMessageOutgoingStatus.js +0 -11
- package/lib/commonjs/common/useMessageOutgoingStatus.js.map +1 -1
- package/lib/commonjs/common/usePushTrigger.js +0 -6
- package/lib/commonjs/common/usePushTrigger.js.map +1 -1
- package/lib/commonjs/common/useTotalUnreadMessageCount.js +0 -7
- package/lib/commonjs/common/useTotalUnreadMessageCount.js.map +1 -1
- package/lib/commonjs/common/useUserList.js +5 -20
- package/lib/commonjs/common/useUserList.js.map +1 -1
- package/lib/commonjs/handler/useChannelHandler.js +15 -41
- package/lib/commonjs/handler/useChannelHandler.js.map +1 -1
- package/lib/commonjs/handler/useConnectionHandler.js +14 -11
- package/lib/commonjs/handler/useConnectionHandler.js.map +1 -1
- package/lib/commonjs/handler/useUserEventHandler.js +0 -8
- package/lib/commonjs/handler/useUserEventHandler.js.map +1 -1
- package/lib/commonjs/index.js +0 -23
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/model/CustomQuery.js +0 -6
- package/lib/commonjs/model/CustomQuery.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/channel/useChannelMessagesReducer.js +146 -0
- package/lib/module/channel/useChannelMessagesReducer.js.map +1 -0
- package/lib/module/channel/useGroupChannel.js.map +1 -1
- package/lib/module/channel/useGroupChannelList/index.js.map +1 -1
- package/lib/module/channel/useGroupChannelList/reducer.js +12 -26
- package/lib/module/channel/useGroupChannelList/reducer.js.map +1 -1
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js +1 -15
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js +1 -11
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/index.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +174 -125
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +78 -70
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
- package/lib/module/channel/useOpenChannel.js.map +1 -1
- package/lib/module/channel/useOpenChannelList/index.js.map +1 -1
- package/lib/module/channel/useOpenChannelList/reducer.js +2 -18
- package/lib/module/channel/useOpenChannelList/reducer.js.map +1 -1
- package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js +1 -17
- package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -1
- package/lib/module/channel/useOpenChannelMessages/index.js.map +1 -1
- package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +129 -53
- package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
- package/lib/module/common/useAppFeatures.js.map +1 -1
- package/lib/module/common/useMessageOutgoingStatus.js +0 -6
- package/lib/module/common/useMessageOutgoingStatus.js.map +1 -1
- package/lib/module/common/usePushTrigger.js.map +1 -1
- package/lib/module/common/useTotalUnreadMessageCount.js +0 -1
- package/lib/module/common/useTotalUnreadMessageCount.js.map +1 -1
- package/lib/module/common/useUserList.js +5 -15
- package/lib/module/common/useUserList.js.map +1 -1
- package/lib/module/handler/useChannelHandler.js +15 -35
- package/lib/module/handler/useChannelHandler.js.map +1 -1
- package/lib/module/handler/useConnectionHandler.js +15 -6
- package/lib/module/handler/useConnectionHandler.js.map +1 -1
- package/lib/module/handler/useUserEventHandler.js +0 -2
- package/lib/module/handler/useUserEventHandler.js.map +1 -1
- package/lib/module/index.js +0 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/model/CustomQuery.js +0 -4
- package/lib/module/model/CustomQuery.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/src/channel/useChannelMessagesReducer.d.ts +18 -0
- package/lib/typescript/src/channel/useGroupChannelList/reducer.d.ts +1 -1
- package/lib/typescript/src/common/useUserList.d.ts +1 -1
- package/lib/typescript/src/handler/useChannelHandler.d.ts +1 -1
- package/lib/typescript/src/handler/useConnectionHandler.d.ts +1 -2
- package/lib/typescript/src/index.d.ts +0 -1
- package/lib/typescript/src/types.d.ts +51 -20
- package/package.json +15 -10
- package/src/channel/useChannelMessagesReducer.ts +143 -0
- package/src/channel/useGroupChannelList/reducer.ts +11 -7
- package/src/channel/useGroupChannelList/useGroupChannelListWithCollection.ts +1 -1
- package/src/channel/useGroupChannelList/useGroupChannelListWithQuery.ts +1 -1
- package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +174 -105
- package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +90 -63
- package/src/channel/useOpenChannelList/useOpenChannelListWithQuery.ts +1 -5
- package/src/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.ts +143 -26
- package/src/common/useUserList.ts +4 -4
- package/src/handler/useChannelHandler.ts +11 -24
- package/src/handler/useConnectionHandler.ts +11 -5
- package/src/index.ts +0 -1
- package/src/types.ts +58 -20
- package/lib/commonjs/channel/useGroupChannelMessages/reducer.js +0 -154
- package/lib/commonjs/channel/useGroupChannelMessages/reducer.js.map +0 -1
- package/lib/commonjs/channel/useOpenChannelMessages/reducer.js +0 -154
- package/lib/commonjs/channel/useOpenChannelMessages/reducer.js.map +0 -1
- package/lib/commonjs/common/useTotalUnreadChannelCount.js +0 -29
- package/lib/commonjs/common/useTotalUnreadChannelCount.js.map +0 -1
- package/lib/module/channel/useGroupChannelMessages/reducer.js +0 -144
- package/lib/module/channel/useGroupChannelMessages/reducer.js.map +0 -1
- package/lib/module/channel/useOpenChannelMessages/reducer.js +0 -144
- package/lib/module/channel/useOpenChannelMessages/reducer.js.map +0 -1
- package/lib/module/common/useTotalUnreadChannelCount.js +0 -17
- package/lib/module/common/useTotalUnreadChannelCount.js.map +0 -1
- package/lib/typescript/src/channel/useGroupChannelMessages/reducer.d.ts +0 -15
- package/lib/typescript/src/channel/useOpenChannelMessages/reducer.d.ts +0 -15
- package/lib/typescript/src/common/useTotalUnreadChannelCount.d.ts +0 -6
- package/src/channel/useGroupChannelMessages/reducer.ts +0 -125
- package/src/channel/useOpenChannelMessages/reducer.ts +0 -125
- package/src/common/useTotalUnreadChannelCount.ts +0 -26
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Logger, confirmAndMarkAsRead, isDifferentChannel, useAsyncEffect, useForceUpdate, useUniqHandlerId } from '@sendbird/uikit-utils';
|
|
1
|
+
import { useRef } from 'react';
|
|
2
|
+
import { ASYNC_NOOP, Logger, confirmAndMarkAsRead, isDifferentChannel, isMyMessage, useAsyncEffect, useForceUpdate, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';
|
|
3
3
|
import { useChannelHandler } from '../../handler/useChannelHandler';
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import { useChannelMessagesReducer } from '../useChannelMessagesReducer';
|
|
6
5
|
const createMessageQuery = (channel, creator) => {
|
|
7
6
|
if (creator) return creator();
|
|
8
7
|
return channel.createPreviousMessageListQuery({
|
|
@@ -10,7 +9,6 @@ const createMessageQuery = (channel, creator) => {
|
|
|
10
9
|
reverse: true
|
|
11
10
|
});
|
|
12
11
|
};
|
|
13
|
-
|
|
14
12
|
export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
|
|
15
13
|
const queryRef = useRef();
|
|
16
14
|
const handlerId = useUniqHandlerId('useGroupChannelMessagesWithQuery');
|
|
@@ -19,16 +17,14 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
19
17
|
loading,
|
|
20
18
|
refreshing,
|
|
21
19
|
messages,
|
|
22
|
-
|
|
23
|
-
newMessagesFromMembers,
|
|
20
|
+
newMessages,
|
|
24
21
|
updateMessages,
|
|
25
|
-
updateNextMessages,
|
|
26
|
-
deleteNextMessages,
|
|
27
22
|
deleteMessages,
|
|
23
|
+
updateNewMessages,
|
|
24
|
+
deleteNewMessages,
|
|
28
25
|
updateLoading,
|
|
29
26
|
updateRefreshing
|
|
30
|
-
} =
|
|
31
|
-
|
|
27
|
+
} = useChannelMessagesReducer(options === null || options === void 0 ? void 0 : options.sortComparator);
|
|
32
28
|
const channelMarkAsRead = async () => {
|
|
33
29
|
try {
|
|
34
30
|
await confirmAndMarkAsRead([channel]);
|
|
@@ -36,67 +32,75 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
36
32
|
Logger.warn('[useGroupChannelMessagesWithQuery/channelMarkAsRead]', e);
|
|
37
33
|
}
|
|
38
34
|
};
|
|
39
|
-
|
|
40
|
-
const init = useCallback(async uid => {
|
|
35
|
+
const init = useFreshCallback(async uid => {
|
|
41
36
|
if (uid) {
|
|
42
37
|
var _queryRef$current;
|
|
43
|
-
|
|
44
|
-
queryRef.current = createMessageQuery(channel, options === null || options === void 0 ? void 0 : options.queryCreator);
|
|
45
38
|
channelMarkAsRead();
|
|
46
|
-
|
|
39
|
+
updateNewMessages([], true, sdk.currentUser.userId);
|
|
40
|
+
queryRef.current = createMessageQuery(channel, options === null || options === void 0 ? void 0 : options.queryCreator);
|
|
47
41
|
if ((_queryRef$current = queryRef.current) !== null && _queryRef$current !== void 0 && _queryRef$current.hasNext) {
|
|
48
42
|
var _queryRef$current2;
|
|
49
|
-
|
|
50
43
|
const list = await ((_queryRef$current2 = queryRef.current) === null || _queryRef$current2 === void 0 ? void 0 : _queryRef$current2.load());
|
|
51
44
|
updateMessages(list, true, sdk.currentUser.userId);
|
|
52
45
|
}
|
|
53
|
-
|
|
54
|
-
updateNextMessages([], true, sdk.currentUser.userId);
|
|
55
46
|
}
|
|
56
|
-
}
|
|
57
|
-
|
|
47
|
+
});
|
|
58
48
|
const channelUpdater = channel => {
|
|
59
49
|
if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {
|
|
60
50
|
forceUpdate();
|
|
61
51
|
}
|
|
62
52
|
};
|
|
63
|
-
|
|
64
53
|
useChannelHandler(sdk, handlerId, {
|
|
65
54
|
// Messages
|
|
66
55
|
onMessageReceived(eventChannel, message) {
|
|
56
|
+
var _options$shouldCountN;
|
|
67
57
|
if (isDifferentChannel(channel, eventChannel)) return;
|
|
58
|
+
if (isMyMessage(message, sdk.currentUser.userId)) return;
|
|
68
59
|
channelMarkAsRead();
|
|
69
|
-
|
|
60
|
+
updateMessages([message], false, sdk.currentUser.userId);
|
|
61
|
+
if (options !== null && options !== void 0 && (_options$shouldCountN = options.shouldCountNewMessages) !== null && _options$shouldCountN !== void 0 && _options$shouldCountN.call(options)) {
|
|
62
|
+
updateNewMessages([message], false, sdk.currentUser.userId);
|
|
63
|
+
}
|
|
64
|
+
if (options !== null && options !== void 0 && options.onMessagesReceived) {
|
|
65
|
+
options.onMessagesReceived([message]);
|
|
66
|
+
}
|
|
70
67
|
},
|
|
71
|
-
|
|
72
68
|
onMessageUpdated(eventChannel, message) {
|
|
73
69
|
if (isDifferentChannel(channel, eventChannel)) return;
|
|
70
|
+
if (isMyMessage(message, sdk.currentUser.userId)) return;
|
|
74
71
|
updateMessages([message], false, sdk.currentUser.userId);
|
|
75
72
|
},
|
|
76
|
-
|
|
77
73
|
onMessageDeleted(eventChannel, messageId) {
|
|
78
74
|
if (isDifferentChannel(channel, eventChannel)) return;
|
|
79
75
|
deleteMessages([messageId], []);
|
|
80
|
-
|
|
76
|
+
deleteNewMessages([messageId], []);
|
|
77
|
+
},
|
|
78
|
+
async onReactionUpdated(eventChannel, reactionEvent) {
|
|
79
|
+
if (isDifferentChannel(channel, eventChannel)) return;
|
|
80
|
+
const message = await sdk.message.getMessage({
|
|
81
|
+
messageId: reactionEvent.messageId,
|
|
82
|
+
includeReactions: true,
|
|
83
|
+
includeParentMessageInfo: true,
|
|
84
|
+
includeThreadInfo: true,
|
|
85
|
+
includeMetaArray: true,
|
|
86
|
+
channelUrl: channel.url,
|
|
87
|
+
channelType: channel.channelType
|
|
88
|
+
});
|
|
89
|
+
updateMessages([message], false, sdk.currentUser.userId);
|
|
81
90
|
},
|
|
82
|
-
|
|
83
91
|
// Channels
|
|
84
92
|
onChannelChanged: channelUpdater,
|
|
85
93
|
onChannelFrozen: channelUpdater,
|
|
86
94
|
onChannelUnfrozen: channelUpdater,
|
|
87
95
|
onChannelHidden: channelUpdater,
|
|
88
|
-
|
|
89
96
|
onChannelMemberCountChanged(channels) {
|
|
90
97
|
const foundChannel = channels.find(c => !isDifferentChannel(c, channel));
|
|
91
98
|
if (foundChannel) channelUpdater(foundChannel);
|
|
92
99
|
},
|
|
93
|
-
|
|
94
100
|
onChannelDeleted(channelUrl) {
|
|
95
101
|
var _options$onChannelDel;
|
|
96
|
-
|
|
97
102
|
if (channel.url === channelUrl) options === null || options === void 0 ? void 0 : (_options$onChannelDel = options.onChannelDeleted) === null || _options$onChannelDel === void 0 ? void 0 : _options$onChannelDel.call(options);
|
|
98
103
|
},
|
|
99
|
-
|
|
100
104
|
// Users
|
|
101
105
|
onOperatorUpdated: channelUpdater,
|
|
102
106
|
onUserLeft: channelUpdater,
|
|
@@ -106,123 +110,127 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
106
110
|
onUserUnbanned: channelUpdater,
|
|
107
111
|
onUserMuted: channelUpdater,
|
|
108
112
|
onUserUnmuted: channelUpdater,
|
|
109
|
-
|
|
110
113
|
onUserBanned(eventChannel, bannedUser) {
|
|
111
114
|
if (isDifferentChannel(channel, eventChannel)) return;
|
|
112
|
-
|
|
113
115
|
if (bannedUser.userId === sdk.currentUser.userId) {
|
|
114
116
|
var _options$onChannelDel2;
|
|
115
|
-
|
|
116
117
|
options === null || options === void 0 ? void 0 : (_options$onChannelDel2 = options.onChannelDeleted) === null || _options$onChannelDel2 === void 0 ? void 0 : _options$onChannelDel2.call(options);
|
|
117
118
|
} else {
|
|
118
119
|
channelUpdater(eventChannel);
|
|
119
120
|
}
|
|
120
121
|
}
|
|
121
|
-
|
|
122
122
|
});
|
|
123
123
|
useAsyncEffect(async () => {
|
|
124
124
|
updateLoading(true);
|
|
125
125
|
await init(userId);
|
|
126
126
|
updateLoading(false);
|
|
127
|
-
}, [
|
|
128
|
-
const refresh =
|
|
127
|
+
}, [channel.url, userId]);
|
|
128
|
+
const refresh = useFreshCallback(async () => {
|
|
129
129
|
updateRefreshing(true);
|
|
130
130
|
await init(userId);
|
|
131
131
|
updateRefreshing(false);
|
|
132
|
-
}
|
|
133
|
-
const prev =
|
|
132
|
+
});
|
|
133
|
+
const prev = useFreshCallback(async () => {
|
|
134
134
|
var _queryRef$current3;
|
|
135
|
-
|
|
136
135
|
if (queryRef.current && (_queryRef$current3 = queryRef.current) !== null && _queryRef$current3 !== void 0 && _queryRef$current3.hasNext) {
|
|
137
136
|
var _queryRef$current4;
|
|
138
|
-
|
|
139
137
|
const list = await ((_queryRef$current4 = queryRef.current) === null || _queryRef$current4 === void 0 ? void 0 : _queryRef$current4.load());
|
|
140
138
|
updateMessages(list, false, sdk.currentUser.userId);
|
|
141
139
|
}
|
|
142
|
-
}
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
const sendUserMessage =
|
|
140
|
+
});
|
|
141
|
+
const hasPrev = useFreshCallback(() => {
|
|
142
|
+
var _queryRef$current5;
|
|
143
|
+
return ((_queryRef$current5 = queryRef.current) === null || _queryRef$current5 === void 0 ? void 0 : _queryRef$current5.hasNext) ?? false;
|
|
144
|
+
});
|
|
145
|
+
const next = useFreshCallback(ASYNC_NOOP);
|
|
146
|
+
const hasNext = useFreshCallback(() => false);
|
|
147
|
+
const sendUserMessage = useFreshCallback((params, onPending) => {
|
|
150
148
|
return new Promise((resolve, reject) => {
|
|
151
149
|
channel.sendUserMessage(params).onPending(pendingMessage => {
|
|
152
150
|
if (pendingMessage.isUserMessage()) {
|
|
153
|
-
|
|
151
|
+
updateMessages([pendingMessage], false, sdk.currentUser.userId);
|
|
154
152
|
onPending === null || onPending === void 0 ? void 0 : onPending(pendingMessage);
|
|
155
153
|
}
|
|
156
154
|
}).onSucceeded(sentMessage => {
|
|
157
155
|
if (sentMessage.isUserMessage()) {
|
|
158
|
-
|
|
156
|
+
updateMessages([sentMessage], false, sdk.currentUser.userId);
|
|
159
157
|
resolve(sentMessage);
|
|
160
158
|
}
|
|
161
159
|
}).onFailed((err, sentMessage) => {
|
|
162
|
-
|
|
160
|
+
updateMessages([sentMessage], false, sdk.currentUser.userId);
|
|
163
161
|
reject(err);
|
|
164
162
|
});
|
|
165
163
|
});
|
|
166
|
-
}
|
|
167
|
-
const sendFileMessage =
|
|
164
|
+
});
|
|
165
|
+
const sendFileMessage = useFreshCallback((params, onPending) => {
|
|
168
166
|
return new Promise((resolve, reject) => {
|
|
169
167
|
channel.sendFileMessage(params).onPending(pendingMessage => {
|
|
170
168
|
if (pendingMessage.isFileMessage()) {
|
|
171
|
-
|
|
169
|
+
updateMessages([pendingMessage], false, sdk.currentUser.userId);
|
|
172
170
|
onPending === null || onPending === void 0 ? void 0 : onPending(pendingMessage);
|
|
173
171
|
}
|
|
174
172
|
}).onSucceeded(sentMessage => {
|
|
175
173
|
if (sentMessage.isFileMessage()) {
|
|
176
|
-
|
|
174
|
+
updateMessages([sentMessage], false, sdk.currentUser.userId);
|
|
177
175
|
resolve(sentMessage);
|
|
178
176
|
}
|
|
179
177
|
}).onFailed((err, sentMessage) => {
|
|
180
|
-
|
|
178
|
+
updateMessages([sentMessage], false, sdk.currentUser.userId);
|
|
181
179
|
reject(err);
|
|
182
180
|
});
|
|
183
181
|
});
|
|
184
|
-
}
|
|
185
|
-
const updateUserMessage =
|
|
182
|
+
});
|
|
183
|
+
const updateUserMessage = useFreshCallback(async (messageId, params) => {
|
|
186
184
|
const updatedMessage = await channel.updateUserMessage(messageId, params);
|
|
187
185
|
updateMessages([updatedMessage], false, sdk.currentUser.userId);
|
|
188
186
|
return updatedMessage;
|
|
189
|
-
}
|
|
190
|
-
const updateFileMessage =
|
|
187
|
+
});
|
|
188
|
+
const updateFileMessage = useFreshCallback(async (messageId, params) => {
|
|
191
189
|
const updatedMessage = await channel.updateFileMessage(messageId, params);
|
|
192
190
|
updateMessages([updatedMessage], false, sdk.currentUser.userId);
|
|
193
191
|
return updatedMessage;
|
|
194
|
-
}
|
|
195
|
-
const resendMessage =
|
|
192
|
+
});
|
|
193
|
+
const resendMessage = useFreshCallback(async failedMessage => {
|
|
196
194
|
const message = await (() => {
|
|
197
195
|
if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);
|
|
198
196
|
if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);
|
|
199
197
|
return null;
|
|
200
198
|
})();
|
|
201
|
-
if (message)
|
|
202
|
-
}
|
|
203
|
-
const deleteMessage =
|
|
199
|
+
if (message) updateMessages([message], false, sdk.currentUser.userId);
|
|
200
|
+
});
|
|
201
|
+
const deleteMessage = useFreshCallback(async message => {
|
|
204
202
|
if (message.sendingStatus === 'succeeded') {
|
|
205
203
|
if (message.isUserMessage()) await channel.deleteMessage(message);
|
|
206
204
|
if (message.isFileMessage()) await channel.deleteMessage(message);
|
|
207
205
|
} else {
|
|
208
206
|
deleteMessages([message.messageId], [message.reqId]);
|
|
209
207
|
}
|
|
210
|
-
}
|
|
208
|
+
});
|
|
209
|
+
const resetNewMessages = useFreshCallback(() => {
|
|
210
|
+
updateNewMessages([], true, sdk.currentUser.userId);
|
|
211
|
+
});
|
|
211
212
|
return {
|
|
212
213
|
loading,
|
|
213
214
|
refreshing,
|
|
214
215
|
refresh,
|
|
215
216
|
messages,
|
|
216
|
-
|
|
217
|
-
|
|
217
|
+
newMessages,
|
|
218
|
+
resetNewMessages,
|
|
218
219
|
next,
|
|
220
|
+
hasNext,
|
|
219
221
|
prev,
|
|
222
|
+
hasPrev,
|
|
220
223
|
sendUserMessage,
|
|
221
224
|
sendFileMessage,
|
|
222
225
|
updateUserMessage,
|
|
223
226
|
updateFileMessage,
|
|
224
227
|
resendMessage,
|
|
225
|
-
deleteMessage
|
|
228
|
+
deleteMessage,
|
|
229
|
+
resetWithStartingPoint() {
|
|
230
|
+
Logger.warn('resetWithStartingPoint is not supported in Query, please use Collection instead.');
|
|
231
|
+
},
|
|
232
|
+
nextMessages: newMessages,
|
|
233
|
+
newMessagesFromMembers: newMessages
|
|
226
234
|
};
|
|
227
235
|
};
|
|
228
236
|
//# sourceMappingURL=useGroupChannelMessagesWithQuery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useRef","Logger","confirmAndMarkAsRead","isDifferentChannel","useAsyncEffect","useForceUpdate","useUniqHandlerId","useChannelHandler","useGroupChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useGroupChannelMessagesWithQuery","sdk","userId","options","queryRef","handlerId","forceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAsRead","e","warn","init","uid","current","queryCreator","hasNext","list","load","currentUser","url","channelUpdater","isGroupChannel","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","foundChannel","find","c","onChannelDeleted","channelUrl","onOperatorUpdated","onUserLeft","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","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":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nimport type {\n SendbirdBaseChannel,\n SendbirdGroupChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n useAsyncEffect,\n useForceUpdate,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageQuery = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['queryCreator'],\n) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithQuery');\n\n const forceUpdate = useForceUpdate();\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 } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAsRead = async () => {\n try {\n await confirmAndMarkAsRead([channel]);\n } catch (e) {\n Logger.warn('[useGroupChannelMessagesWithQuery/channelMarkAsRead]', e);\n }\n };\n\n const init = useCallback(\n async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n channelMarkAsRead();\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser.userId);\n }\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n },\n [sdk, channel.url, options?.queryCreator],\n );\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, handlerId, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n channelMarkAsRead();\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 onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const foundChannel = channels.find((c) => !isDifferentChannel(c, channel));\n if (foundChannel) channelUpdater(foundChannel);\n },\n onChannelDeleted(channelUrl: string) {\n if (channel.url === channelUrl) options?.onChannelDeleted?.();\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserLeft: channelUpdater,\n // onUserEntered: channelUpdater,\n // onUserExited: channelUpdater,\n onUserJoined: 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\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [init, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n }, [init, userId]);\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useCallback(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<UseGroupChannelMessages>['next'] = useCallback(async () => {\n if (nextMessages.length > 0) {\n updateMessages(nextMessages, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n }, [nextMessages.length]);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useCallback(\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 [channel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\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 [channel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [channel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [channel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n 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 [channel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n 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 [channel],\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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"}
|
|
1
|
+
{"version":3,"names":["useRef","ASYNC_NOOP","Logger","confirmAndMarkAsRead","isDifferentChannel","isMyMessage","useAsyncEffect","useForceUpdate","useFreshCallback","useUniqHandlerId","useChannelHandler","useChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useGroupChannelMessagesWithQuery","sdk","userId","options","queryRef","handlerId","forceUpdate","loading","refreshing","messages","newMessages","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAsRead","e","warn","init","uid","_queryRef$current","currentUser","current","queryCreator","hasNext","_queryRef$current2","list","load","channelUpdater","isGroupChannel","onMessageReceived","eventChannel","message","_options$shouldCountN","shouldCountNewMessages","call","onMessagesReceived","onMessageUpdated","onMessageDeleted","messageId","onReactionUpdated","reactionEvent","getMessage","includeReactions","includeParentMessageInfo","includeThreadInfo","includeMetaArray","channelUrl","url","channelType","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","foundChannel","find","c","onChannelDeleted","_options$onChannelDel","onOperatorUpdated","onUserLeft","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_options$onChannelDel2","refresh","prev","_queryRef$current3","_queryRef$current4","hasPrev","_queryRef$current5","next","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","err","sendFileMessage","isFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","resetWithStartingPoint","nextMessages","newMessagesFromMembers"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type {\n SendbirdBaseChannel,\n SendbirdGroupChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n ASYNC_NOOP,\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n isMyMessage,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useChannelMessagesReducer } from '../useChannelMessagesReducer';\n\nconst createMessageQuery = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['queryCreator'],\n) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithQuery');\n\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n deleteMessages,\n updateNewMessages,\n deleteNewMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const channelMarkAsRead = async () => {\n try {\n await confirmAndMarkAsRead([channel]);\n } catch (e) {\n Logger.warn('[useGroupChannelMessagesWithQuery/channelMarkAsRead]', e);\n }\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n channelMarkAsRead();\n updateNewMessages([], true, sdk.currentUser.userId);\n\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser.userId);\n }\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, handlerId, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser.userId)) return;\n\n channelMarkAsRead();\n\n updateMessages([message], false, sdk.currentUser.userId);\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages([message], false, sdk.currentUser.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived([message]);\n }\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser.userId)) return;\n\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNewMessages([messageId], []);\n },\n async onReactionUpdated(eventChannel, reactionEvent) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n const message = await sdk.message.getMessage({\n messageId: reactionEvent.messageId,\n includeReactions: true,\n includeParentMessageInfo: true,\n includeThreadInfo: true,\n includeMetaArray: true,\n channelUrl: channel.url,\n channelType: channel.channelType,\n });\n updateMessages([message], false, sdk.currentUser.userId);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const foundChannel = channels.find((c) => !isDifferentChannel(c, channel));\n if (foundChannel) channelUpdater(foundChannel);\n },\n onChannelDeleted(channelUrl: string) {\n if (channel.url === channelUrl) options?.onChannelDeleted?.();\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserLeft: channelUpdater,\n // onUserEntered: channelUpdater,\n // onUserExited: channelUpdater,\n onUserJoined: 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\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseGroupChannelMessages>['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 const hasPrev: ReturnType<UseGroupChannelMessages>['hasPrev'] = useFreshCallback(\n () => queryRef.current?.hasNext ?? false,\n );\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(ASYNC_NOOP);\n const hasNext: ReturnType<UseGroupChannelMessages>['hasNext'] = useFreshCallback(() => false);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, sentMessage) => {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, sentMessage) => {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['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<UseGroupChannelMessages>['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<UseGroupChannelMessages>['resendMessage'] = useFreshCallback(\n 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) updateMessages([message], false, sdk.currentUser.userId);\n },\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['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 const resetNewMessages: ReturnType<UseGroupChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser.userId);\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n newMessages,\n resetNewMessages,\n next,\n hasNext,\n prev,\n hasPrev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint() {\n Logger.warn('resetWithStartingPoint is not supported in Query, please use Collection instead.');\n },\n\n nextMessages: newMessages,\n newMessagesFromMembers: newMessages,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","useAsyncEffect","useOpenChannel","sdk","channelUrl","channel","setChannel","loading","setLoading","error","setError","openChannel","getChannel","e"],"sources":["useOpenChannel.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { SendbirdChatSDK, SendbirdOpenChannel, useAsyncEffect } from '@sendbird/uikit-utils';\n\nexport const useOpenChannel = (sdk: SendbirdChatSDK, channelUrl: string) => {\n const [channel, setChannel] = useState<SendbirdOpenChannel>();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<unknown>();\n\n useAsyncEffect(async () => {\n try {\n setChannel(await sdk.openChannel.getChannel(channelUrl));\n } catch (e) {\n setError(e);\n } finally {\n setLoading(false);\n }\n }, []);\n\n return { channel, loading, error };\n};\n"],"mappings":"AAAA,SAASA,
|
|
1
|
+
{"version":3,"names":["useState","useAsyncEffect","useOpenChannel","sdk","channelUrl","channel","setChannel","loading","setLoading","error","setError","openChannel","getChannel","e"],"sources":["useOpenChannel.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { SendbirdChatSDK, SendbirdOpenChannel, useAsyncEffect } from '@sendbird/uikit-utils';\n\nexport const useOpenChannel = (sdk: SendbirdChatSDK, channelUrl: string) => {\n const [channel, setChannel] = useState<SendbirdOpenChannel>();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<unknown>();\n\n useAsyncEffect(async () => {\n try {\n setChannel(await sdk.openChannel.getChannel(channelUrl));\n } catch (e) {\n setError(e);\n } finally {\n setLoading(false);\n }\n }, []);\n\n return { channel, loading, error };\n};\n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,OAAO;AAEhC,SAA+CC,cAAc,QAAQ,uBAAuB;AAE5F,OAAO,MAAMC,cAAc,GAAGA,CAACC,GAAoB,EAAEC,UAAkB,KAAK;EAC1E,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGN,QAAQ,EAAuB;EAC7D,MAAM,CAACO,OAAO,EAAEC,UAAU,CAAC,GAAGR,QAAQ,CAAC,IAAI,CAAC;EAC5C,MAAM,CAACS,KAAK,EAAEC,QAAQ,CAAC,GAAGV,QAAQ,EAAW;EAE7CC,cAAc,CAAC,YAAY;IACzB,IAAI;MACFK,UAAU,CAAC,MAAMH,GAAG,CAACQ,WAAW,CAACC,UAAU,CAACR,UAAU,CAAC,CAAC;IAC1D,CAAC,CAAC,OAAOS,CAAC,EAAE;MACVH,QAAQ,CAACG,CAAC,CAAC;IACb,CAAC,SAAS;MACRL,UAAU,CAAC,KAAK,CAAC;IACnB;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IAAEH,OAAO;IAAEE,OAAO;IAAEE;EAAM,CAAC;AACpC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useOpenChannelListWithQuery","useOpenChannelList","sdk","userId","options"],"sources":["index.ts"],"sourcesContent":["import type { UseOpenChannelList } from '../../types';\nimport { useOpenChannelListWithQuery } from './useOpenChannelListWithQuery';\n\nexport const useOpenChannelList: UseOpenChannelList = (sdk, userId, options) => {\n return useOpenChannelListWithQuery(sdk, userId, options);\n};\n"],"mappings":"AACA,SAASA,
|
|
1
|
+
{"version":3,"names":["useOpenChannelListWithQuery","useOpenChannelList","sdk","userId","options"],"sources":["index.ts"],"sourcesContent":["import type { UseOpenChannelList } from '../../types';\nimport { useOpenChannelListWithQuery } from './useOpenChannelListWithQuery';\n\nexport const useOpenChannelList: UseOpenChannelList = (sdk, userId, options) => {\n return useOpenChannelListWithQuery(sdk, userId, options);\n};\n"],"mappings":"AACA,SAASA,2BAA2B,QAAQ,+BAA+B;AAE3E,OAAO,MAAMC,kBAAsC,GAAGA,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,KAAK;EAC9E,OAAOJ,2BAA2B,CAACE,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;AAC1D,CAAC"}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { useReducer } from 'react';
|
|
2
2
|
import { getOpenChannels } from '@sendbird/uikit-utils';
|
|
3
|
-
|
|
4
3
|
const defaultReducer = (_ref, action) => {
|
|
5
|
-
let {
|
|
4
|
+
let {
|
|
5
|
+
...draft
|
|
6
6
|
} = _ref;
|
|
7
|
-
|
|
8
7
|
switch (action.type) {
|
|
9
8
|
case 'update_error':
|
|
10
9
|
{
|
|
11
10
|
draft.error = action.value.error;
|
|
12
11
|
break;
|
|
13
12
|
}
|
|
14
|
-
|
|
15
13
|
case 'update_refreshing':
|
|
16
14
|
case 'update_loading':
|
|
17
15
|
{
|
|
@@ -19,7 +17,6 @@ const defaultReducer = (_ref, action) => {
|
|
|
19
17
|
draft[key] = action.value.status;
|
|
20
18
|
break;
|
|
21
19
|
}
|
|
22
|
-
|
|
23
20
|
case 'update_channels':
|
|
24
21
|
{
|
|
25
22
|
getOpenChannels(action.value.channels).forEach(freshChannel => {
|
|
@@ -28,7 +25,6 @@ const defaultReducer = (_ref, action) => {
|
|
|
28
25
|
});
|
|
29
26
|
break;
|
|
30
27
|
}
|
|
31
|
-
|
|
32
28
|
case 'delete_channels':
|
|
33
29
|
{
|
|
34
30
|
action.value.channelUrls.forEach(url => {
|
|
@@ -37,24 +33,19 @@ const defaultReducer = (_ref, action) => {
|
|
|
37
33
|
});
|
|
38
34
|
break;
|
|
39
35
|
}
|
|
40
|
-
|
|
41
36
|
case 'append_channels':
|
|
42
37
|
{
|
|
43
38
|
const openChannels = getOpenChannels(action.value.channels);
|
|
44
|
-
|
|
45
39
|
if (action.value.clearBeforeAction) {
|
|
46
40
|
draft.openChannels = openChannels;
|
|
47
41
|
} else {
|
|
48
42
|
draft.openChannels = [...draft.openChannels, ...openChannels];
|
|
49
43
|
}
|
|
50
|
-
|
|
51
44
|
break;
|
|
52
45
|
}
|
|
53
46
|
}
|
|
54
|
-
|
|
55
47
|
return draft;
|
|
56
48
|
};
|
|
57
|
-
|
|
58
49
|
export const useOpenChannelListReducer = () => {
|
|
59
50
|
const [{
|
|
60
51
|
error,
|
|
@@ -67,7 +58,6 @@ export const useOpenChannelListReducer = () => {
|
|
|
67
58
|
openChannels: [],
|
|
68
59
|
error: null
|
|
69
60
|
});
|
|
70
|
-
|
|
71
61
|
const updateChannels = channels => {
|
|
72
62
|
dispatch({
|
|
73
63
|
type: 'update_channels',
|
|
@@ -76,7 +66,6 @@ export const useOpenChannelListReducer = () => {
|
|
|
76
66
|
}
|
|
77
67
|
});
|
|
78
68
|
};
|
|
79
|
-
|
|
80
69
|
const deleteChannels = channelUrls => {
|
|
81
70
|
dispatch({
|
|
82
71
|
type: 'delete_channels',
|
|
@@ -85,7 +74,6 @@ export const useOpenChannelListReducer = () => {
|
|
|
85
74
|
}
|
|
86
75
|
});
|
|
87
76
|
};
|
|
88
|
-
|
|
89
77
|
const appendChannels = (channels, clearBeforeAction) => {
|
|
90
78
|
dispatch({
|
|
91
79
|
type: 'append_channels',
|
|
@@ -95,7 +83,6 @@ export const useOpenChannelListReducer = () => {
|
|
|
95
83
|
}
|
|
96
84
|
});
|
|
97
85
|
};
|
|
98
|
-
|
|
99
86
|
const updateLoading = status => {
|
|
100
87
|
dispatch({
|
|
101
88
|
type: 'update_loading',
|
|
@@ -104,7 +91,6 @@ export const useOpenChannelListReducer = () => {
|
|
|
104
91
|
}
|
|
105
92
|
});
|
|
106
93
|
};
|
|
107
|
-
|
|
108
94
|
const updateRefreshing = status => {
|
|
109
95
|
dispatch({
|
|
110
96
|
type: 'update_refreshing',
|
|
@@ -113,7 +99,6 @@ export const useOpenChannelListReducer = () => {
|
|
|
113
99
|
}
|
|
114
100
|
});
|
|
115
101
|
};
|
|
116
|
-
|
|
117
102
|
const updateError = error => {
|
|
118
103
|
dispatch({
|
|
119
104
|
type: 'update_error',
|
|
@@ -122,7 +107,6 @@ export const useOpenChannelListReducer = () => {
|
|
|
122
107
|
}
|
|
123
108
|
});
|
|
124
109
|
};
|
|
125
|
-
|
|
126
110
|
return {
|
|
127
111
|
updateError,
|
|
128
112
|
updateLoading,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useReducer","getOpenChannels","defaultReducer","action","draft","type","error","value","key","status","channels","forEach","freshChannel","idx","openChannels","findIndex","staleChannel","url","channelUrls","c","splice","clearBeforeAction","useOpenChannelListReducer","loading","refreshing","dispatch","updateChannels","deleteChannels","appendChannels","updateLoading","updateRefreshing","updateError"],"sources":["reducer.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport type { SendbirdChannel, SendbirdOpenChannel } from '@sendbird/uikit-utils';\nimport { getOpenChannels } from '@sendbird/uikit-utils';\n\ntype Action =\n | {\n type: 'update_error';\n value: { error: unknown | null };\n }\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_channels';\n value: { channels: SendbirdChannel[] };\n }\n | {\n type: 'delete_channels';\n value: { channelUrls: string[] };\n }\n | {\n type: 'append_channels';\n value: { channels: SendbirdChannel[]; clearBeforeAction: boolean };\n };\n\ntype State = {\n error: unknown | null;\n loading: boolean;\n refreshing: boolean;\n openChannels: SendbirdOpenChannel[];\n};\n\nconst defaultReducer = ({ ...draft }: State, action: Action) => {\n switch (action.type) {\n case 'update_error': {\n draft.error = action.value.error;\n break;\n }\n case 'update_refreshing':\n case 'update_loading': {\n const key = action.type === 'update_loading' ? 'loading' : 'refreshing';\n draft[key] = action.value.status;\n break;\n }\n case 'update_channels': {\n getOpenChannels(action.value.channels).forEach((freshChannel) => {\n const idx = draft.openChannels.findIndex((staleChannel) => staleChannel.url === freshChannel.url);\n if (idx > -1) draft.openChannels[idx] = freshChannel;\n });\n break;\n }\n case 'delete_channels': {\n action.value.channelUrls.forEach((url) => {\n const idx = draft.openChannels.findIndex((c) => c.url === url);\n if (idx > -1) draft.openChannels.splice(idx, 1);\n });\n break;\n }\n case 'append_channels': {\n const openChannels = getOpenChannels(action.value.channels);\n if (action.value.clearBeforeAction) {\n draft.openChannels = openChannels;\n } else {\n draft.openChannels = [...draft.openChannels, ...openChannels];\n }\n break;\n }\n }\n return draft;\n};\n\nexport const useOpenChannelListReducer = () => {\n const [{ error, loading, refreshing, openChannels }, dispatch] = useReducer(defaultReducer, {\n loading: true,\n refreshing: false,\n openChannels: [],\n error: null,\n });\n\n const updateChannels = (channels: SendbirdChannel[]) => {\n dispatch({ type: 'update_channels', value: { channels } });\n };\n const deleteChannels = (channelUrls: string[]) => {\n dispatch({ type: 'delete_channels', value: { channelUrls } });\n };\n const appendChannels = (channels: SendbirdChannel[], clearBeforeAction: boolean) => {\n dispatch({ type: 'append_channels', value: { channels, clearBeforeAction } });\n };\n const updateLoading = (status: boolean) => {\n dispatch({ type: 'update_loading', value: { status } });\n };\n const updateRefreshing = (status: boolean) => {\n dispatch({ type: 'update_refreshing', value: { status } });\n };\n\n const updateError = (error: unknown | null) => {\n dispatch({ type: 'update_error', value: { error } });\n };\n\n return {\n updateError,\n updateLoading,\n updateRefreshing,\n updateChannels,\n deleteChannels,\n appendChannels,\n\n error,\n loading,\n refreshing,\n openChannels,\n };\n};\n"],"mappings":"AAAA,SAASA,
|
|
1
|
+
{"version":3,"names":["useReducer","getOpenChannels","defaultReducer","_ref","action","draft","type","error","value","key","status","channels","forEach","freshChannel","idx","openChannels","findIndex","staleChannel","url","channelUrls","c","splice","clearBeforeAction","useOpenChannelListReducer","loading","refreshing","dispatch","updateChannels","deleteChannels","appendChannels","updateLoading","updateRefreshing","updateError"],"sources":["reducer.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport type { SendbirdChannel, SendbirdOpenChannel } from '@sendbird/uikit-utils';\nimport { getOpenChannels } from '@sendbird/uikit-utils';\n\ntype Action =\n | {\n type: 'update_error';\n value: { error: unknown | null };\n }\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_channels';\n value: { channels: SendbirdChannel[] };\n }\n | {\n type: 'delete_channels';\n value: { channelUrls: string[] };\n }\n | {\n type: 'append_channels';\n value: { channels: SendbirdChannel[]; clearBeforeAction: boolean };\n };\n\ntype State = {\n error: unknown | null;\n loading: boolean;\n refreshing: boolean;\n openChannels: SendbirdOpenChannel[];\n};\n\nconst defaultReducer = ({ ...draft }: State, action: Action) => {\n switch (action.type) {\n case 'update_error': {\n draft.error = action.value.error;\n break;\n }\n case 'update_refreshing':\n case 'update_loading': {\n const key = action.type === 'update_loading' ? 'loading' : 'refreshing';\n draft[key] = action.value.status;\n break;\n }\n case 'update_channels': {\n getOpenChannels(action.value.channels).forEach((freshChannel) => {\n const idx = draft.openChannels.findIndex((staleChannel) => staleChannel.url === freshChannel.url);\n if (idx > -1) draft.openChannels[idx] = freshChannel;\n });\n break;\n }\n case 'delete_channels': {\n action.value.channelUrls.forEach((url) => {\n const idx = draft.openChannels.findIndex((c) => c.url === url);\n if (idx > -1) draft.openChannels.splice(idx, 1);\n });\n break;\n }\n case 'append_channels': {\n const openChannels = getOpenChannels(action.value.channels);\n if (action.value.clearBeforeAction) {\n draft.openChannels = openChannels;\n } else {\n draft.openChannels = [...draft.openChannels, ...openChannels];\n }\n break;\n }\n }\n return draft;\n};\n\nexport const useOpenChannelListReducer = () => {\n const [{ error, loading, refreshing, openChannels }, dispatch] = useReducer(defaultReducer, {\n loading: true,\n refreshing: false,\n openChannels: [],\n error: null,\n });\n\n const updateChannels = (channels: SendbirdChannel[]) => {\n dispatch({ type: 'update_channels', value: { channels } });\n };\n const deleteChannels = (channelUrls: string[]) => {\n dispatch({ type: 'delete_channels', value: { channelUrls } });\n };\n const appendChannels = (channels: SendbirdChannel[], clearBeforeAction: boolean) => {\n dispatch({ type: 'append_channels', value: { channels, clearBeforeAction } });\n };\n const updateLoading = (status: boolean) => {\n dispatch({ type: 'update_loading', value: { status } });\n };\n const updateRefreshing = (status: boolean) => {\n dispatch({ type: 'update_refreshing', value: { status } });\n };\n\n const updateError = (error: unknown | null) => {\n dispatch({ type: 'update_error', value: { error } });\n };\n\n return {\n updateError,\n updateLoading,\n updateRefreshing,\n updateChannels,\n deleteChannels,\n appendChannels,\n\n error,\n loading,\n refreshing,\n openChannels,\n };\n};\n"],"mappings":"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"}
|