@sendbird/uikit-chat-hooks 1.1.2 → 2.0.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,5 +1,5 @@
|
|
|
1
1
|
import { useCallback, useRef } from 'react';
|
|
2
|
-
import { Logger, isDifferentChannel, useAsyncEffect, useForceUpdate } from '@sendbird/uikit-utils';
|
|
2
|
+
import { Logger, confirmAndMarkAsDelivered, confirmAndMarkAsRead, isDifferentChannel, useAsyncEffect, useForceUpdate } from '@sendbird/uikit-utils';
|
|
3
3
|
import { useAppFeatures } from '../../common/useAppFeatures';
|
|
4
4
|
import { useChannelHandler } from '../../handler/useChannelHandler';
|
|
5
5
|
import { useActiveGroupChannel } from '../useActiveGroupChannel';
|
|
@@ -7,10 +7,10 @@ import { useGroupChannelMessagesReducer } from './reducer';
|
|
|
7
7
|
|
|
8
8
|
const createMessageQuery = (channel, creator) => {
|
|
9
9
|
if (creator) return creator();
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
return channel.createPreviousMessageListQuery({
|
|
11
|
+
limit: 100,
|
|
12
|
+
reverse: true
|
|
13
|
+
});
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
const HOOK_NAME = 'useGroupChannelMessagesWithQuery';
|
|
@@ -41,13 +41,13 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
41
41
|
|
|
42
42
|
const channelMarkAs = async () => {
|
|
43
43
|
try {
|
|
44
|
-
if (deliveryReceiptEnabled) sdk
|
|
44
|
+
if (deliveryReceiptEnabled) await confirmAndMarkAsDelivered(sdk, activeChannel);
|
|
45
45
|
} catch (e) {
|
|
46
46
|
Logger.warn(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
try {
|
|
50
|
-
await sdk
|
|
50
|
+
await confirmAndMarkAsRead(sdk, [activeChannel]);
|
|
51
51
|
} catch (e) {
|
|
52
52
|
Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);
|
|
53
53
|
}
|
|
@@ -58,9 +58,9 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
58
58
|
var _queryRef$current;
|
|
59
59
|
|
|
60
60
|
queryRef.current = createMessageQuery(activeChannel, options === null || options === void 0 ? void 0 : options.queryCreator);
|
|
61
|
-
channelMarkAs();
|
|
61
|
+
channelMarkAs().catch();
|
|
62
62
|
|
|
63
|
-
if ((_queryRef$current = queryRef.current) !== null && _queryRef$current !== void 0 && _queryRef$current.
|
|
63
|
+
if ((_queryRef$current = queryRef.current) !== null && _queryRef$current !== void 0 && _queryRef$current.hasNext) {
|
|
64
64
|
var _queryRef$current2;
|
|
65
65
|
|
|
66
66
|
const list = await ((_queryRef$current2 = queryRef.current) === null || _queryRef$current2 === void 0 ? void 0 : _queryRef$current2.load());
|
|
@@ -117,8 +117,8 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
117
117
|
// Users
|
|
118
118
|
onOperatorUpdated: channelUpdater,
|
|
119
119
|
onUserLeft: channelUpdater,
|
|
120
|
-
onUserEntered: channelUpdater,
|
|
121
|
-
onUserExited: channelUpdater,
|
|
120
|
+
// onUserEntered: channelUpdater,
|
|
121
|
+
// onUserExited: channelUpdater,
|
|
122
122
|
onUserJoined: channelUpdater,
|
|
123
123
|
onUserUnbanned: channelUpdater,
|
|
124
124
|
onUserMuted: channelUpdater,
|
|
@@ -150,7 +150,7 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
150
150
|
const prev = useCallback(async () => {
|
|
151
151
|
var _queryRef$current3;
|
|
152
152
|
|
|
153
|
-
if (queryRef.current && (_queryRef$current3 = queryRef.current) !== null && _queryRef$current3 !== void 0 && _queryRef$current3.
|
|
153
|
+
if (queryRef.current && (_queryRef$current3 = queryRef.current) !== null && _queryRef$current3 !== void 0 && _queryRef$current3.hasNext) {
|
|
154
154
|
var _queryRef$current4;
|
|
155
155
|
|
|
156
156
|
const list = await ((_queryRef$current4 = queryRef.current) === null || _queryRef$current4 === void 0 ? void 0 : _queryRef$current4.load());
|
|
@@ -165,26 +165,36 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
165
165
|
}, [nextMessages.length]);
|
|
166
166
|
const sendUserMessage = useCallback((params, onPending) => {
|
|
167
167
|
return new Promise((resolve, reject) => {
|
|
168
|
-
|
|
169
|
-
if (
|
|
168
|
+
activeChannel.sendUserMessage(params).onPending(pendingMessage => {
|
|
169
|
+
if (pendingMessage.isUserMessage()) {
|
|
170
|
+
updateNextMessages([pendingMessage], false, sdk.currentUser.userId);
|
|
171
|
+
onPending === null || onPending === void 0 ? void 0 : onPending(pendingMessage);
|
|
172
|
+
}
|
|
173
|
+
}).onSucceeded(sentMessage => {
|
|
174
|
+
if (sentMessage.isUserMessage()) {
|
|
170
175
|
updateNextMessages([sentMessage], false, sdk.currentUser.userId);
|
|
171
176
|
resolve(sentMessage);
|
|
172
177
|
}
|
|
178
|
+
}).onFailed(err => {
|
|
179
|
+
reject(err);
|
|
173
180
|
});
|
|
174
|
-
updateNextMessages([pendingMessage], false, sdk.currentUser.userId);
|
|
175
|
-
onPending === null || onPending === void 0 ? void 0 : onPending(pendingMessage);
|
|
176
181
|
});
|
|
177
182
|
}, [activeChannel]);
|
|
178
183
|
const sendFileMessage = useCallback((params, onPending) => {
|
|
179
184
|
return new Promise((resolve, reject) => {
|
|
180
|
-
|
|
181
|
-
if (
|
|
185
|
+
activeChannel.sendFileMessage(params).onPending(pendingMessage => {
|
|
186
|
+
if (pendingMessage.isFileMessage()) {
|
|
187
|
+
updateNextMessages([pendingMessage], false, sdk.currentUser.userId);
|
|
188
|
+
onPending === null || onPending === void 0 ? void 0 : onPending(pendingMessage);
|
|
189
|
+
}
|
|
190
|
+
}).onSucceeded(sentMessage => {
|
|
191
|
+
if (sentMessage.isFileMessage()) {
|
|
182
192
|
updateNextMessages([sentMessage], false, sdk.currentUser.userId);
|
|
183
193
|
resolve(sentMessage);
|
|
184
194
|
}
|
|
195
|
+
}).onFailed(err => {
|
|
196
|
+
reject(err);
|
|
185
197
|
});
|
|
186
|
-
updateNextMessages([pendingMessage], false, sdk.currentUser.userId);
|
|
187
|
-
onPending === null || onPending === void 0 ? void 0 : onPending(pendingMessage);
|
|
188
198
|
});
|
|
189
199
|
}, [activeChannel]);
|
|
190
200
|
const updateUserMessage = useCallback(async (messageId, params) => {
|
|
@@ -199,7 +209,9 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
199
209
|
}, [activeChannel]);
|
|
200
210
|
const resendMessage = useCallback(async failedMessage => {
|
|
201
211
|
const message = await (() => {
|
|
202
|
-
if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage);
|
|
212
|
+
if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage); // FIXME: v4 bugs
|
|
213
|
+
// @ts-ignore
|
|
214
|
+
|
|
203
215
|
if (failedMessage.isFileMessage()) return activeChannel.resendFileMessage(failedMessage);
|
|
204
216
|
return null;
|
|
205
217
|
})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useRef","Logger","isDifferentChannel","useAsyncEffect","useForceUpdate","useAppFeatures","useChannelHandler","useActiveGroupChannel","useGroupChannelMessagesReducer","createMessageQuery","channel","creator","query","createPreviousMessageListQuery","limit","reverse","HOOK_NAME","useGroupChannelMessagesWithQuery","sdk","userId","options","deliveryReceiptEnabled","queryRef","activeChannel","setActiveChannel","forceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAs","markAsDelivered","url","e","warn","markAsReadWithChannelUrls","init","uid","current","queryCreator","hasMore","list","load","currentUser","channelUpdater","isGroupChannel","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","find","c","onChannelDeleted","channelUrl","onOperatorUpdated","onUserLeft","onUserEntered","onUserExited","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","refresh","prev","next","length","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","sentMessage","error","sendFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","isUserMessage","resendUserMessage","isFileMessage","resendFileMessage","deleteMessage","sendingStatus","reqId"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport type { SendbirdFileMessage, SendbirdGroupChannel, SendbirdOpenChannel } from '@sendbird/uikit-utils';\nimport { Logger, isDifferentChannel, useAsyncEffect, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useActiveGroupChannel } from '../useActiveGroupChannel';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageQuery = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['queryCreator'],\n) => {\n if (creator) return creator();\n const query = channel.createPreviousMessageListQuery();\n query.limit = 100;\n query.reverse = true;\n return query;\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithQuery';\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const queryRef = useRef<Sendbird.PreviousMessageListQuery>();\n\n // NOTE: We cannot determine the channel object of Sendbird SDK is stale or not, so force update after setActiveChannel\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\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 channelMarkAs = async () => {\n try {\n if (deliveryReceiptEnabled) sdk.markAsDelivered(activeChannel.url);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);\n }\n try {\n await sdk.markAsReadWithChannelUrls([activeChannel.url]);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);\n }\n };\n\n const init = useCallback(\n async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(activeChannel, options?.queryCreator);\n channelMarkAs();\n if (queryRef.current?.hasMore) {\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, activeChannel.url, options?.queryCreator],\n );\n\n const channelUpdater = (channel: SendbirdGroupChannel | SendbirdOpenChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n setActiveChannel(channel);\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, HOOK_NAME, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n channelMarkAs();\n updateNextMessages([message], false, sdk.currentUser.userId);\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(activeChannel, 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 channel = channels.find((c) => !isDifferentChannel(c, activeChannel));\n if (channel) channelUpdater(channel);\n },\n onChannelDeleted(channelUrl: string) {\n if (activeChannel.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(activeChannel, 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?.hasMore) {\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 const pendingMessage = activeChannel.sendUserMessage(params, (sentMessage, error) => {\n if (error) reject(error);\n else {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n });\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n });\n },\n [activeChannel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n const pendingMessage = activeChannel.sendFileMessage(params, (sentMessage, error) => {\n if (error) reject(error);\n else {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage as SendbirdFileMessage);\n }\n });\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n });\n },\n [activeChannel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return activeChannel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateNextMessages([message], false, sdk.currentUser.userId);\n },\n [activeChannel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await activeChannel.deleteMessage(message);\n if (message.isFileMessage()) await activeChannel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n },\n [activeChannel],\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 activeChannel,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["useCallback","useRef","Logger","confirmAndMarkAsDelivered","confirmAndMarkAsRead","isDifferentChannel","useAsyncEffect","useForceUpdate","useAppFeatures","useChannelHandler","useActiveGroupChannel","useGroupChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","HOOK_NAME","useGroupChannelMessagesWithQuery","sdk","userId","options","deliveryReceiptEnabled","queryRef","activeChannel","setActiveChannel","forceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAs","e","warn","init","uid","current","queryCreator","catch","hasNext","list","load","currentUser","url","channelUpdater","isGroupChannel","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","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 { SendbirdBaseChannel, SendbirdGroupChannel } from '@sendbird/uikit-utils';\nimport {\n Logger,\n confirmAndMarkAsDelivered,\n confirmAndMarkAsRead,\n isDifferentChannel,\n useAsyncEffect,\n useForceUpdate,\n} from '@sendbird/uikit-utils';\nimport type { SendbirdPreviousMessageListQuery } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useActiveGroupChannel } from '../useActiveGroupChannel';\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\nconst HOOK_NAME = 'useGroupChannelMessagesWithQuery';\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n\n // NOTE: We cannot determine the channel object of Sendbird SDK is stale or not, so force update after setActiveChannel\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\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 channelMarkAs = async () => {\n try {\n if (deliveryReceiptEnabled) await confirmAndMarkAsDelivered(sdk, activeChannel);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);\n }\n try {\n await confirmAndMarkAsRead(sdk, [activeChannel]);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);\n }\n };\n\n const init = useCallback(\n async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(activeChannel, options?.queryCreator);\n channelMarkAs().catch();\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, activeChannel.url, options?.queryCreator],\n );\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n setActiveChannel(channel);\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, HOOK_NAME, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n channelMarkAs();\n updateNextMessages([message], false, sdk.currentUser.userId);\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(activeChannel, 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 channel = channels.find((c) => !isDifferentChannel(c, activeChannel));\n if (channel) channelUpdater(channel);\n },\n onChannelDeleted(channelUrl: string) {\n if (activeChannel.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(activeChannel, 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 activeChannel\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) => {\n reject(err);\n });\n });\n },\n [activeChannel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n activeChannel\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) => {\n reject(err);\n });\n });\n },\n [activeChannel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage);\n // FIXME: v4 bugs\n // @ts-ignore\n if (failedMessage.isFileMessage()) return activeChannel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateNextMessages([message], false, sdk.currentUser.userId);\n },\n [activeChannel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await activeChannel.deleteMessage(message);\n if (message.isFileMessage()) await activeChannel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n },\n [activeChannel],\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 activeChannel,\n };\n};\n"],"mappings":"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"}
|
|
@@ -8,13 +8,13 @@ export const useMessageOutgoingStatus = (sdk, channel, message) => {
|
|
|
8
8
|
const currentUser = sdk.currentUser;
|
|
9
9
|
const uniqId = useUniqId(HOOK_NAME);
|
|
10
10
|
useChannelHandler(sdk, `${HOOK_NAME}_${uniqId}`, {
|
|
11
|
-
|
|
11
|
+
onUndeliveredMemberStatusUpdated(eventChannel) {
|
|
12
12
|
if (isDifferentChannel(channel, eventChannel)) return;
|
|
13
13
|
if (!isMyMessage(message, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
|
|
14
14
|
forceUpdate();
|
|
15
15
|
},
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
onUnreadMemberStatusUpdated(eventChannel) {
|
|
18
18
|
if (isDifferentChannel(channel, eventChannel)) return;
|
|
19
19
|
if (!isMyMessage(message, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
|
|
20
20
|
forceUpdate();
|
|
@@ -22,8 +22,12 @@ export const useMessageOutgoingStatus = (sdk, channel, message) => {
|
|
|
22
22
|
|
|
23
23
|
});
|
|
24
24
|
if (!message) return 'NONE';
|
|
25
|
-
|
|
26
|
-
if (
|
|
25
|
+
|
|
26
|
+
if ('sendingStatus' in message) {
|
|
27
|
+
if (message.sendingStatus === 'pending') return 'PENDING';
|
|
28
|
+
if (message.sendingStatus === 'failed') return 'FAILED';
|
|
29
|
+
}
|
|
30
|
+
|
|
27
31
|
if (channel.getUnreadMemberCount(message) === 0) return 'READ';
|
|
28
32
|
|
|
29
33
|
if (features.deliveryReceiptEnabled) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isDifferentChannel","isMyMessage","useForceUpdate","useUniqId","useChannelHandler","useAppFeatures","HOOK_NAME","useMessageOutgoingStatus","sdk","channel","message","features","forceUpdate","currentUser","uniqId","
|
|
1
|
+
{"version":3,"names":["isDifferentChannel","isMyMessage","useForceUpdate","useUniqId","useChannelHandler","useAppFeatures","HOOK_NAME","useMessageOutgoingStatus","sdk","channel","message","features","forceUpdate","currentUser","uniqId","onUndeliveredMemberStatusUpdated","eventChannel","userId","onUnreadMemberStatusUpdated","sendingStatus","getUnreadMemberCount","deliveryReceiptEnabled","getUndeliveredMemberCount"],"sources":["useMessageOutgoingStatus.ts"],"sourcesContent":["import type { SendbirdChatSDK, SendbirdGroupChannel, SendbirdMessage } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, isMyMessage, useForceUpdate, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../handler/useChannelHandler';\nimport { useAppFeatures } from './useAppFeatures';\n\nconst HOOK_NAME = 'useMessageOutgoingStatus';\n\nexport type SBUOutgoingStatus = 'NONE' | 'PENDING' | 'FAILED' | 'UNDELIVERED' | 'DELIVERED' | 'UNREAD' | 'READ';\n\nexport const useMessageOutgoingStatus = (\n sdk: SendbirdChatSDK,\n channel: SendbirdGroupChannel,\n message?: SendbirdMessage | null,\n): SBUOutgoingStatus => {\n const features = useAppFeatures(sdk);\n const forceUpdate = useForceUpdate();\n const currentUser = sdk.currentUser;\n\n const uniqId = useUniqId(HOOK_NAME);\n useChannelHandler(sdk, `${HOOK_NAME}_${uniqId}`, {\n onUndeliveredMemberStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!isMyMessage(message, currentUser?.userId)) return;\n\n forceUpdate();\n },\n onUnreadMemberStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!isMyMessage(message, currentUser?.userId)) return;\n\n forceUpdate();\n },\n });\n\n if (!message) return 'NONE';\n\n if ('sendingStatus' in message) {\n if (message.sendingStatus === 'pending') return 'PENDING';\n if (message.sendingStatus === 'failed') return 'FAILED';\n }\n\n if (channel.getUnreadMemberCount(message) === 0) return 'READ';\n\n if (features.deliveryReceiptEnabled) {\n if (channel.getUndeliveredMemberCount(message) === 0) return 'DELIVERED';\n return 'UNDELIVERED';\n }\n\n return 'UNREAD';\n};\n"],"mappings":"AACA,SAASA,kBAAT,EAA6BC,WAA7B,EAA0CC,cAA1C,EAA0DC,SAA1D,QAA2E,uBAA3E;AAEA,SAASC,iBAAT,QAAkC,8BAAlC;AACA,SAASC,cAAT,QAA+B,kBAA/B;AAEA,MAAMC,SAAS,GAAG,0BAAlB;AAIA,OAAO,MAAMC,wBAAwB,GAAG,CACtCC,GADsC,EAEtCC,OAFsC,EAGtCC,OAHsC,KAIhB;EACtB,MAAMC,QAAQ,GAAGN,cAAc,CAACG,GAAD,CAA/B;EACA,MAAMI,WAAW,GAAGV,cAAc,EAAlC;EACA,MAAMW,WAAW,GAAGL,GAAG,CAACK,WAAxB;EAEA,MAAMC,MAAM,GAAGX,SAAS,CAACG,SAAD,CAAxB;EACAF,iBAAiB,CAACI,GAAD,EAAO,GAAEF,SAAU,IAAGQ,MAAO,EAA7B,EAAgC;IAC/CC,gCAAgC,CAACC,YAAD,EAAe;MAC7C,IAAIhB,kBAAkB,CAACS,OAAD,EAAUO,YAAV,CAAtB,EAA+C;MAC/C,IAAI,CAACf,WAAW,CAACS,OAAD,EAAUG,WAAV,aAAUA,WAAV,uBAAUA,WAAW,CAAEI,MAAvB,CAAhB,EAAgD;MAEhDL,WAAW;IACZ,CAN8C;;IAO/CM,2BAA2B,CAACF,YAAD,EAAe;MACxC,IAAIhB,kBAAkB,CAACS,OAAD,EAAUO,YAAV,CAAtB,EAA+C;MAC/C,IAAI,CAACf,WAAW,CAACS,OAAD,EAAUG,WAAV,aAAUA,WAAV,uBAAUA,WAAW,CAAEI,MAAvB,CAAhB,EAAgD;MAEhDL,WAAW;IACZ;;EAZ8C,CAAhC,CAAjB;EAeA,IAAI,CAACF,OAAL,EAAc,OAAO,MAAP;;EAEd,IAAI,mBAAmBA,OAAvB,EAAgC;IAC9B,IAAIA,OAAO,CAACS,aAAR,KAA0B,SAA9B,EAAyC,OAAO,SAAP;IACzC,IAAIT,OAAO,CAACS,aAAR,KAA0B,QAA9B,EAAwC,OAAO,QAAP;EACzC;;EAED,IAAIV,OAAO,CAACW,oBAAR,CAA6BV,OAA7B,MAA0C,CAA9C,EAAiD,OAAO,MAAP;;EAEjD,IAAIC,QAAQ,CAACU,sBAAb,EAAqC;IACnC,IAAIZ,OAAO,CAACa,yBAAR,CAAkCZ,OAAlC,MAA+C,CAAnD,EAAsD,OAAO,WAAP;IACtD,OAAO,aAAP;EACD;;EAED,OAAO,QAAP;AACD,CAxCM"}
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
import { useCallback, useState } from 'react';
|
|
2
|
+
import { PushTriggerOption } from '@sendbird/chat';
|
|
2
3
|
import { Logger, useAsyncEffect } from '@sendbird/uikit-utils';
|
|
4
|
+
const PushTriggerMap = {
|
|
5
|
+
'all': PushTriggerOption.ALL,
|
|
6
|
+
'mention_only': PushTriggerOption.MENTION_ONLY,
|
|
7
|
+
'off': PushTriggerOption.OFF,
|
|
8
|
+
'default': PushTriggerOption.DEFAULT
|
|
9
|
+
};
|
|
3
10
|
export const usePushTrigger = sdk => {
|
|
4
|
-
const [option, setOption] = useState(
|
|
11
|
+
const [option, setOption] = useState(PushTriggerOption.DEFAULT);
|
|
5
12
|
const updateOption = useCallback(async value => {
|
|
6
13
|
try {
|
|
7
|
-
|
|
8
|
-
setOption(
|
|
14
|
+
const _option = PushTriggerMap[value];
|
|
15
|
+
await sdk.setPushTriggerOption(_option).then(() => setOption(_option));
|
|
9
16
|
} catch (e) {
|
|
10
17
|
Logger.warn('[usePushTrigger]', 'Cannot update push trigger option', e);
|
|
11
18
|
}
|
|
12
19
|
}, [sdk, sdk.currentUser]);
|
|
13
20
|
useAsyncEffect(async () => {
|
|
14
|
-
|
|
15
|
-
setOption(currentOption);
|
|
21
|
+
setOption(await sdk.getPushTriggerOption());
|
|
16
22
|
}, [sdk, sdk.currentUser]);
|
|
17
23
|
return {
|
|
18
24
|
option,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useState","Logger","useAsyncEffect","usePushTrigger","sdk","option","setOption","updateOption","value","setPushTriggerOption","e","warn","currentUser","
|
|
1
|
+
{"version":3,"names":["useCallback","useState","PushTriggerOption","Logger","useAsyncEffect","PushTriggerMap","ALL","MENTION_ONLY","OFF","DEFAULT","usePushTrigger","sdk","option","setOption","updateOption","value","_option","setPushTriggerOption","then","e","warn","currentUser","getPushTriggerOption"],"sources":["usePushTrigger.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\nimport { PushTriggerOption } from '@sendbird/chat';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { Logger, useAsyncEffect } from '@sendbird/uikit-utils';\n\nconst PushTriggerMap = {\n 'all': PushTriggerOption.ALL,\n 'mention_only': PushTriggerOption.MENTION_ONLY,\n 'off': PushTriggerOption.OFF,\n 'default': PushTriggerOption.DEFAULT,\n};\n\nexport const usePushTrigger = (sdk: SendbirdChatSDK) => {\n const [option, setOption] = useState<PushTriggerOption>(PushTriggerOption.DEFAULT);\n\n const updateOption = useCallback(\n async (value: keyof typeof PushTriggerMap) => {\n try {\n const _option = PushTriggerMap[value];\n await sdk.setPushTriggerOption(_option).then(() => setOption(_option));\n } catch (e) {\n Logger.warn('[usePushTrigger]', 'Cannot update push trigger option', e);\n }\n },\n [sdk, sdk.currentUser],\n );\n\n useAsyncEffect(async () => {\n setOption(await sdk.getPushTriggerOption());\n }, [sdk, sdk.currentUser]);\n\n return {\n option,\n updateOption,\n };\n};\n"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,QAAtB,QAAsC,OAAtC;AAEA,SAASC,iBAAT,QAAkC,gBAAlC;AAEA,SAASC,MAAT,EAAiBC,cAAjB,QAAuC,uBAAvC;AAEA,MAAMC,cAAc,GAAG;EACrB,OAAOH,iBAAiB,CAACI,GADJ;EAErB,gBAAgBJ,iBAAiB,CAACK,YAFb;EAGrB,OAAOL,iBAAiB,CAACM,GAHJ;EAIrB,WAAWN,iBAAiB,CAACO;AAJR,CAAvB;AAOA,OAAO,MAAMC,cAAc,GAAIC,GAAD,IAA0B;EACtD,MAAM,CAACC,MAAD,EAASC,SAAT,IAAsBZ,QAAQ,CAAoBC,iBAAiB,CAACO,OAAtC,CAApC;EAEA,MAAMK,YAAY,GAAGd,WAAW,CAC9B,MAAOe,KAAP,IAA8C;IAC5C,IAAI;MACF,MAAMC,OAAO,GAAGX,cAAc,CAACU,KAAD,CAA9B;MACA,MAAMJ,GAAG,CAACM,oBAAJ,CAAyBD,OAAzB,EAAkCE,IAAlC,CAAuC,MAAML,SAAS,CAACG,OAAD,CAAtD,CAAN;IACD,CAHD,CAGE,OAAOG,CAAP,EAAU;MACVhB,MAAM,CAACiB,IAAP,CAAY,kBAAZ,EAAgC,mCAAhC,EAAqED,CAArE;IACD;EACF,CAR6B,EAS9B,CAACR,GAAD,EAAMA,GAAG,CAACU,WAAV,CAT8B,CAAhC;EAYAjB,cAAc,CAAC,YAAY;IACzBS,SAAS,CAAC,MAAMF,GAAG,CAACW,oBAAJ,EAAP,CAAT;EACD,CAFa,EAEX,CAACX,GAAD,EAAMA,GAAG,CAACU,WAAV,CAFW,CAAd;EAIA,OAAO;IACLT,MADK;IAELE;EAFK,CAAP;AAID,CAvBM"}
|
|
@@ -7,10 +7,12 @@ export const useTotalUnreadChannelCount = (sdk, params) => {
|
|
|
7
7
|
const id = useUniqId(HOOK_NAME);
|
|
8
8
|
const [unreadChannelCount, setUnreadChannelCount] = useState(0);
|
|
9
9
|
useAsyncEffect(async () => {
|
|
10
|
-
setUnreadChannelCount(await sdk.getTotalUnreadChannelCount());
|
|
10
|
+
setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());
|
|
11
11
|
}, [sdk]);
|
|
12
12
|
useUserEventHandler(sdk, HOOK_NAME + id, {
|
|
13
|
-
onTotalUnreadMessageCountUpdated: async () =>
|
|
13
|
+
onTotalUnreadMessageCountUpdated: async () => {
|
|
14
|
+
setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());
|
|
15
|
+
}
|
|
14
16
|
});
|
|
15
17
|
return truncatedBadgeCount(unreadChannelCount, params === null || params === void 0 ? void 0 : params.maxCount);
|
|
16
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","truncatedBadgeCount","useAsyncEffect","useUniqId","useUserEventHandler","HOOK_NAME","useTotalUnreadChannelCount","sdk","params","id","unreadChannelCount","setUnreadChannelCount","getTotalUnreadChannelCount","onTotalUnreadMessageCountUpdated","maxCount"],"sources":["useTotalUnreadChannelCount.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedBadgeCount, useAsyncEffect } from '@sendbird/uikit-utils';\nimport { useUniqId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Params = {\n maxCount?: number;\n};\nconst HOOK_NAME = 'useTotalUnreadChannelCount';\nexport const useTotalUnreadChannelCount = (sdk: SendbirdChatSDK, params?: Params) => {\n const id = useUniqId(HOOK_NAME);\n const [unreadChannelCount, setUnreadChannelCount] = useState(0);\n\n useAsyncEffect(async () => {\n setUnreadChannelCount(await sdk.getTotalUnreadChannelCount());\n }, [sdk]);\n\n useUserEventHandler(sdk, HOOK_NAME + id, {\n onTotalUnreadMessageCountUpdated: async () => setUnreadChannelCount(await sdk.getTotalUnreadChannelCount()),\n });\n\n return truncatedBadgeCount(unreadChannelCount, params?.maxCount);\n};\n"],"mappings":"AAAA,SAASA,QAAT,QAAyB,OAAzB;AAGA,SAASC,mBAAT,EAA8BC,cAA9B,QAAoD,uBAApD;AACA,SAASC,SAAT,QAA0B,uBAA1B;AAEA,SAASC,mBAAT,QAAoC,gCAApC;AAKA,MAAMC,SAAS,GAAG,4BAAlB;AACA,OAAO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,MAAvB,KAA2C;EACnF,MAAMC,EAAE,GAAGN,SAAS,CAACE,SAAD,CAApB;EACA,MAAM,CAACK,kBAAD,EAAqBC,qBAArB,IAA8CX,QAAQ,CAAC,CAAD,CAA5D;EAEAE,cAAc,CAAC,YAAY;IACzBS,qBAAqB,CAAC,MAAMJ,GAAG,CAACK,
|
|
1
|
+
{"version":3,"names":["useState","truncatedBadgeCount","useAsyncEffect","useUniqId","useUserEventHandler","HOOK_NAME","useTotalUnreadChannelCount","sdk","params","id","unreadChannelCount","setUnreadChannelCount","groupChannel","getTotalUnreadChannelCount","onTotalUnreadMessageCountUpdated","maxCount"],"sources":["useTotalUnreadChannelCount.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedBadgeCount, useAsyncEffect } from '@sendbird/uikit-utils';\nimport { useUniqId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Params = {\n maxCount?: number;\n};\nconst HOOK_NAME = 'useTotalUnreadChannelCount';\nexport const useTotalUnreadChannelCount = (sdk: SendbirdChatSDK, params?: Params) => {\n const id = useUniqId(HOOK_NAME);\n const [unreadChannelCount, setUnreadChannelCount] = useState(0);\n\n useAsyncEffect(async () => {\n setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());\n }, [sdk]);\n\n useUserEventHandler(sdk, HOOK_NAME + id, {\n onTotalUnreadMessageCountUpdated: async () => {\n setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());\n },\n });\n\n return truncatedBadgeCount(unreadChannelCount, params?.maxCount);\n};\n"],"mappings":"AAAA,SAASA,QAAT,QAAyB,OAAzB;AAGA,SAASC,mBAAT,EAA8BC,cAA9B,QAAoD,uBAApD;AACA,SAASC,SAAT,QAA0B,uBAA1B;AAEA,SAASC,mBAAT,QAAoC,gCAApC;AAKA,MAAMC,SAAS,GAAG,4BAAlB;AACA,OAAO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,MAAvB,KAA2C;EACnF,MAAMC,EAAE,GAAGN,SAAS,CAACE,SAAD,CAApB;EACA,MAAM,CAACK,kBAAD,EAAqBC,qBAArB,IAA8CX,QAAQ,CAAC,CAAD,CAA5D;EAEAE,cAAc,CAAC,YAAY;IACzBS,qBAAqB,CAAC,MAAMJ,GAAG,CAACK,YAAJ,CAAiBC,0BAAjB,EAAP,CAArB;EACD,CAFa,EAEX,CAACN,GAAD,CAFW,CAAd;EAIAH,mBAAmB,CAACG,GAAD,EAAMF,SAAS,GAAGI,EAAlB,EAAsB;IACvCK,gCAAgC,EAAE,YAAY;MAC5CH,qBAAqB,CAAC,MAAMJ,GAAG,CAACK,YAAJ,CAAiBC,0BAAjB,EAAP,CAArB;IACD;EAHsC,CAAtB,CAAnB;EAMA,OAAOZ,mBAAmB,CAACS,kBAAD,EAAqBF,MAArB,aAAqBA,MAArB,uBAAqBA,MAAM,CAAEO,QAA7B,CAA1B;AACD,CAfM"}
|
|
@@ -1,28 +1,23 @@
|
|
|
1
1
|
import { useState } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import { useUniqId } from '@sendbird/uikit-utils';
|
|
2
|
+
import { SuperChannelFilter } from '@sendbird/chat/groupChannel';
|
|
3
|
+
import { truncatedBadgeCount, useAsyncEffect, useUniqId } from '@sendbird/uikit-utils';
|
|
4
4
|
import { useUserEventHandler } from '../handler/useUserEventHandler';
|
|
5
5
|
const HOOK_NAME = 'useTotalUnreadMessageCount';
|
|
6
|
-
export const useTotalUnreadMessageCount = (sdk,
|
|
6
|
+
export const useTotalUnreadMessageCount = (sdk, options) => {
|
|
7
|
+
var _options$params, _options$params2;
|
|
8
|
+
|
|
7
9
|
const id = useUniqId(HOOK_NAME);
|
|
8
10
|
const [unreadMessageCount, setUnreadMessageCount] = useState(0);
|
|
9
11
|
useAsyncEffect(async () => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
} else {
|
|
15
|
-
const params = new sdk.GroupChannelTotalUnreadMessageCountParams();
|
|
16
|
-
params.superChannelFilter = 'all';
|
|
17
|
-
param = params;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const unreadCount = await sdk.getTotalUnreadMessageCount(param);
|
|
12
|
+
const unreadCount = await sdk.groupChannel.getTotalUnreadMessageCount({
|
|
13
|
+
superChannelFilter: SuperChannelFilter.ALL,
|
|
14
|
+
...(options === null || options === void 0 ? void 0 : options.params)
|
|
15
|
+
});
|
|
21
16
|
setUnreadMessageCount(unreadCount);
|
|
22
|
-
}, [sdk, params === null || params === void 0 ? void 0 : params.
|
|
17
|
+
}, [sdk, options === null || options === void 0 ? void 0 : (_options$params = options.params) === null || _options$params === void 0 ? void 0 : _options$params.superChannelFilter, options === null || options === void 0 ? void 0 : (_options$params2 = options.params) === null || _options$params2 === void 0 ? void 0 : _options$params2.channelCustomTypesFilter]);
|
|
23
18
|
useUserEventHandler(sdk, `${HOOK_NAME}_${id}`, {
|
|
24
19
|
onTotalUnreadMessageCountUpdated: totalCount => setUnreadMessageCount(totalCount)
|
|
25
|
-
}
|
|
26
|
-
return truncatedBadgeCount(unreadMessageCount,
|
|
20
|
+
});
|
|
21
|
+
return truncatedBadgeCount(unreadMessageCount, options === null || options === void 0 ? void 0 : options.maxCount);
|
|
27
22
|
};
|
|
28
23
|
//# sourceMappingURL=useTotalUnreadMessageCount.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","truncatedBadgeCount","useAsyncEffect","useUniqId","useUserEventHandler","HOOK_NAME","useTotalUnreadMessageCount","sdk","
|
|
1
|
+
{"version":3,"names":["useState","SuperChannelFilter","truncatedBadgeCount","useAsyncEffect","useUniqId","useUserEventHandler","HOOK_NAME","useTotalUnreadMessageCount","sdk","options","id","unreadMessageCount","setUnreadMessageCount","unreadCount","groupChannel","getTotalUnreadMessageCount","superChannelFilter","ALL","params","channelCustomTypesFilter","onTotalUnreadMessageCountUpdated","totalCount","maxCount"],"sources":["useTotalUnreadMessageCount.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { SuperChannelFilter, TotalUnreadMessageCountParams } from '@sendbird/chat/groupChannel';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedBadgeCount, useAsyncEffect, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Options = {\n params?: TotalUnreadMessageCountParams;\n maxCount?: number;\n};\n\nconst HOOK_NAME = 'useTotalUnreadMessageCount';\nexport const useTotalUnreadMessageCount = (sdk: SendbirdChatSDK, options?: Options) => {\n const id = useUniqId(HOOK_NAME);\n const [unreadMessageCount, setUnreadMessageCount] = useState(0);\n\n useAsyncEffect(async () => {\n const unreadCount = await sdk.groupChannel.getTotalUnreadMessageCount({\n superChannelFilter: SuperChannelFilter.ALL,\n ...options?.params,\n });\n setUnreadMessageCount(unreadCount);\n }, [sdk, options?.params?.superChannelFilter, options?.params?.channelCustomTypesFilter]);\n\n useUserEventHandler(sdk, `${HOOK_NAME}_${id}`, {\n onTotalUnreadMessageCountUpdated: (totalCount: number) => setUnreadMessageCount(totalCount),\n });\n\n return truncatedBadgeCount(unreadMessageCount, options?.maxCount);\n};\n"],"mappings":"AAAA,SAASA,QAAT,QAAyB,OAAzB;AAEA,SAASC,kBAAT,QAAkE,6BAAlE;AAEA,SAASC,mBAAT,EAA8BC,cAA9B,EAA8CC,SAA9C,QAA+D,uBAA/D;AAEA,SAASC,mBAAT,QAAoC,gCAApC;AAOA,MAAMC,SAAS,GAAG,4BAAlB;AACA,OAAO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,OAAvB,KAA6C;EAAA;;EACrF,MAAMC,EAAE,GAAGN,SAAS,CAACE,SAAD,CAApB;EACA,MAAM,CAACK,kBAAD,EAAqBC,qBAArB,IAA8CZ,QAAQ,CAAC,CAAD,CAA5D;EAEAG,cAAc,CAAC,YAAY;IACzB,MAAMU,WAAW,GAAG,MAAML,GAAG,CAACM,YAAJ,CAAiBC,0BAAjB,CAA4C;MACpEC,kBAAkB,EAAEf,kBAAkB,CAACgB,GAD6B;MAEpE,IAAGR,OAAH,aAAGA,OAAH,uBAAGA,OAAO,CAAES,MAAZ;IAFoE,CAA5C,CAA1B;IAIAN,qBAAqB,CAACC,WAAD,CAArB;EACD,CANa,EAMX,CAACL,GAAD,EAAMC,OAAN,aAAMA,OAAN,0CAAMA,OAAO,CAAES,MAAf,oDAAM,gBAAiBF,kBAAvB,EAA2CP,OAA3C,aAA2CA,OAA3C,2CAA2CA,OAAO,CAAES,MAApD,qDAA2C,iBAAiBC,wBAA5D,CANW,CAAd;EAQAd,mBAAmB,CAACG,GAAD,EAAO,GAAEF,SAAU,IAAGI,EAAG,EAAzB,EAA4B;IAC7CU,gCAAgC,EAAGC,UAAD,IAAwBT,qBAAqB,CAACS,UAAD;EADlC,CAA5B,CAAnB;EAIA,OAAOnB,mBAAmB,CAACS,kBAAD,EAAqBF,OAArB,aAAqBA,OAArB,uBAAqBA,OAAO,CAAEa,QAA9B,CAA1B;AACD,CAjBM"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { useEffect, useLayoutEffect, useRef } from 'react';
|
|
2
|
+
import { GroupChannelHandler } from '@sendbird/chat/groupChannel';
|
|
2
3
|
import { Logger } from '@sendbird/uikit-utils';
|
|
3
4
|
export const useChannelHandler = (sdk, handlerId, hookHandler) => {
|
|
4
5
|
const handlerRef = useRef(hookHandler);
|
|
@@ -7,7 +8,7 @@ export const useChannelHandler = (sdk, handlerId, hookHandler) => {
|
|
|
7
8
|
});
|
|
8
9
|
useEffect(() => {
|
|
9
10
|
Logger.debug('[useChannelHandler] hook called by', handlerId);
|
|
10
|
-
const handler = new
|
|
11
|
+
const handler = new GroupChannelHandler();
|
|
11
12
|
const handlerKeys = Object.keys(handler);
|
|
12
13
|
handlerKeys.forEach(key => {
|
|
13
14
|
handler[key] = function () {
|
|
@@ -21,8 +22,8 @@ export const useChannelHandler = (sdk, handlerId, hookHandler) => {
|
|
|
21
22
|
(_handlerRef$current$k = (_handlerRef$current = handlerRef.current)[key]) === null || _handlerRef$current$k === void 0 ? void 0 : _handlerRef$current$k.call(_handlerRef$current, ...args);
|
|
22
23
|
};
|
|
23
24
|
});
|
|
24
|
-
sdk.
|
|
25
|
-
return () => sdk.
|
|
25
|
+
sdk.groupChannel.addGroupChannelHandler(handlerId, handler);
|
|
26
|
+
return () => sdk.groupChannel.removeGroupChannelHandler(handlerId);
|
|
26
27
|
}, [sdk, handlerId]);
|
|
27
28
|
};
|
|
28
29
|
//# sourceMappingURL=useChannelHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useLayoutEffect","useRef","Logger","useChannelHandler","sdk","handlerId","hookHandler","handlerRef","current","debug","handler","
|
|
1
|
+
{"version":3,"names":["useEffect","useLayoutEffect","useRef","GroupChannelHandler","Logger","useChannelHandler","sdk","handlerId","hookHandler","handlerRef","current","debug","handler","handlerKeys","Object","keys","forEach","key","args","groupChannel","addGroupChannelHandler","removeGroupChannelHandler"],"sources":["useChannelHandler.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { GroupChannelHandler } from '@sendbird/chat/groupChannel';\nimport { Logger, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useChannelHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<GroupChannelHandler>,\n) => {\n const handlerRef = useRef(hookHandler);\n useLayoutEffect(() => {\n handlerRef.current = hookHandler;\n });\n\n useEffect(() => {\n Logger.debug('[useChannelHandler] hook called by', handlerId);\n\n const handler = new GroupChannelHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n handlerKeys.forEach((key) => {\n handler[key] = (...args: unknown[]) => {\n // @ts-ignore\n handlerRef.current[key]?.(...args);\n };\n });\n\n sdk.groupChannel.addGroupChannelHandler(handlerId, handler);\n return () => sdk.groupChannel.removeGroupChannelHandler(handlerId);\n }, [sdk, handlerId]);\n};\n"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,eAApB,EAAqCC,MAArC,QAAmD,OAAnD;AAEA,SAASC,mBAAT,QAAoC,6BAApC;AACA,SAASC,MAAT,QAAwC,uBAAxC;AAEA,OAAO,MAAMC,iBAAiB,GAAG,CAC/BC,GAD+B,EAE/BC,SAF+B,EAG/BC,WAH+B,KAI5B;EACH,MAAMC,UAAU,GAAGP,MAAM,CAACM,WAAD,CAAzB;EACAP,eAAe,CAAC,MAAM;IACpBQ,UAAU,CAACC,OAAX,GAAqBF,WAArB;EACD,CAFc,CAAf;EAIAR,SAAS,CAAC,MAAM;IACdI,MAAM,CAACO,KAAP,CAAa,oCAAb,EAAmDJ,SAAnD;IAEA,MAAMK,OAAO,GAAG,IAAIT,mBAAJ,EAAhB;IACA,MAAMU,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYH,OAAZ,CAApB;IACAC,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3BL,OAAO,CAACK,GAAD,CAAP,GAAe,YAAwB;QAAA;;QAAA,kCAApBC,IAAoB;UAApBA,IAAoB;QAAA;;QACrC;QACA,gDAAAT,UAAU,CAACC,OAAX,EAAmBO,GAAnB,2GAA0B,GAAGC,IAA7B;MACD,CAHD;IAID,CALD;IAOAZ,GAAG,CAACa,YAAJ,CAAiBC,sBAAjB,CAAwCb,SAAxC,EAAmDK,OAAnD;IACA,OAAO,MAAMN,GAAG,CAACa,YAAJ,CAAiBE,yBAAjB,CAA2Cd,SAA3C,CAAb;EACD,CAdQ,EAcN,CAACD,GAAD,EAAMC,SAAN,CAdM,CAAT;AAeD,CAzBM"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
|
+
import { ConnectionHandler } from '@sendbird/chat';
|
|
2
3
|
import { Logger } from '@sendbird/uikit-utils';
|
|
3
4
|
export const useConnectionHandler = function (sdk, handlerId, hookHandler) {
|
|
4
5
|
let deps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
|
5
6
|
useEffect(() => {
|
|
6
7
|
Logger.info('[useConnectionHandler]', handlerId);
|
|
7
|
-
const handler = new
|
|
8
|
+
const handler = new ConnectionHandler();
|
|
8
9
|
const handlerKeys = Object.keys(handler);
|
|
9
10
|
handlerKeys.forEach(key => {
|
|
10
|
-
|
|
11
|
-
if (
|
|
11
|
+
// @ts-ignore
|
|
12
|
+
if (hookHandler[key]) handler[key] = hookHandler[key];
|
|
12
13
|
});
|
|
13
14
|
sdk.addConnectionHandler(handlerId, handler);
|
|
14
15
|
return () => sdk.removeConnectionHandler(handlerId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","Logger","useConnectionHandler","sdk","handlerId","hookHandler","deps","info","handler","
|
|
1
|
+
{"version":3,"names":["useEffect","ConnectionHandler","Logger","useConnectionHandler","sdk","handlerId","hookHandler","deps","info","handler","handlerKeys","Object","keys","forEach","key","addConnectionHandler","removeConnectionHandler"],"sources":["useConnectionHandler.ts"],"sourcesContent":["import React, { useEffect } from 'react';\n\nimport { ConnectionHandler } from '@sendbird/chat';\nimport { Logger, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useConnectionHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<ConnectionHandler>,\n deps: React.DependencyList = [],\n) => {\n useEffect(() => {\n Logger.info('[useConnectionHandler]', handlerId);\n\n const handler = new ConnectionHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n handlerKeys.forEach((key) => {\n // @ts-ignore\n if (hookHandler[key]) handler[key] = hookHandler[key];\n });\n\n sdk.addConnectionHandler(handlerId, handler);\n return () => sdk.removeConnectionHandler(handlerId);\n }, [sdk, handlerId, ...deps]);\n};\n"],"mappings":"AAAA,SAAgBA,SAAhB,QAAiC,OAAjC;AAEA,SAASC,iBAAT,QAAkC,gBAAlC;AACA,SAASC,MAAT,QAAwC,uBAAxC;AAEA,OAAO,MAAMC,oBAAoB,GAAG,UAClCC,GADkC,EAElCC,SAFkC,EAGlCC,WAHkC,EAK/B;EAAA,IADHC,IACG,uEAD0B,EAC1B;EACHP,SAAS,CAAC,MAAM;IACdE,MAAM,CAACM,IAAP,CAAY,wBAAZ,EAAsCH,SAAtC;IAEA,MAAMI,OAAO,GAAG,IAAIR,iBAAJ,EAAhB;IACA,MAAMS,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYH,OAAZ,CAApB;IACAC,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3B;MACA,IAAIR,WAAW,CAACQ,GAAD,CAAf,EAAsBL,OAAO,CAACK,GAAD,CAAP,GAAeR,WAAW,CAACQ,GAAD,CAA1B;IACvB,CAHD;IAKAV,GAAG,CAACW,oBAAJ,CAAyBV,SAAzB,EAAoCI,OAApC;IACA,OAAO,MAAML,GAAG,CAACY,uBAAJ,CAA4BX,SAA5B,CAAb;EACD,CAZQ,EAYN,CAACD,GAAD,EAAMC,SAAN,EAAiB,GAAGE,IAApB,CAZM,CAAT;AAaD,CAnBM"}
|
|
@@ -1,17 +1,29 @@
|
|
|
1
|
-
import { useEffect } from 'react';
|
|
1
|
+
import { useEffect, useLayoutEffect, useRef } from 'react';
|
|
2
|
+
import { UserEventHandler } from '@sendbird/chat';
|
|
2
3
|
import { Logger } from '@sendbird/uikit-utils';
|
|
3
|
-
export const useUserEventHandler =
|
|
4
|
-
|
|
4
|
+
export const useUserEventHandler = (sdk, handlerId, hookHandler) => {
|
|
5
|
+
const handlerRef = useRef(hookHandler);
|
|
6
|
+
useLayoutEffect(() => {
|
|
7
|
+
handlerRef.current = hookHandler;
|
|
8
|
+
});
|
|
5
9
|
useEffect(() => {
|
|
6
10
|
Logger.debug('[useUserEventHandler] hook called by', handlerId);
|
|
7
|
-
const handler = new
|
|
11
|
+
const handler = new UserEventHandler();
|
|
8
12
|
const handlerKeys = Object.keys(handler);
|
|
9
13
|
handlerKeys.forEach(key => {
|
|
10
|
-
|
|
11
|
-
|
|
14
|
+
handler[key] = function () {
|
|
15
|
+
var _handlerRef$current$k, _handlerRef$current;
|
|
16
|
+
|
|
17
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
18
|
+
args[_key] = arguments[_key];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// @ts-ignore
|
|
22
|
+
(_handlerRef$current$k = (_handlerRef$current = handlerRef.current)[key]) === null || _handlerRef$current$k === void 0 ? void 0 : _handlerRef$current$k.call(_handlerRef$current, ...args);
|
|
23
|
+
};
|
|
12
24
|
});
|
|
13
25
|
sdk.addUserEventHandler(handlerId, handler);
|
|
14
26
|
return () => sdk.removeUserEventHandler(handlerId);
|
|
15
|
-
}, [sdk, handlerId
|
|
27
|
+
}, [sdk, handlerId]);
|
|
16
28
|
};
|
|
17
29
|
//# sourceMappingURL=useUserEventHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","Logger","useUserEventHandler","sdk","handlerId","hookHandler","
|
|
1
|
+
{"version":3,"names":["useEffect","useLayoutEffect","useRef","UserEventHandler","Logger","useUserEventHandler","sdk","handlerId","hookHandler","handlerRef","current","debug","handler","handlerKeys","Object","keys","forEach","key","args","addUserEventHandler","removeUserEventHandler"],"sources":["useUserEventHandler.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { UserEventHandler } from '@sendbird/chat';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { Logger } from '@sendbird/uikit-utils';\n\nexport const useUserEventHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<UserEventHandler>,\n) => {\n const handlerRef = useRef(hookHandler);\n useLayoutEffect(() => {\n handlerRef.current = hookHandler;\n });\n\n useEffect(() => {\n Logger.debug('[useUserEventHandler] hook called by', handlerId);\n\n const handler = new UserEventHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n\n handlerKeys.forEach((key) => {\n handler[key] = (...args: unknown[]) => {\n // @ts-ignore\n handlerRef.current[key]?.(...args);\n };\n });\n\n sdk.addUserEventHandler(handlerId, handler);\n return () => sdk.removeUserEventHandler(handlerId);\n }, [sdk, handlerId]);\n};\n"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,eAApB,EAAqCC,MAArC,QAAmD,OAAnD;AAEA,SAASC,gBAAT,QAAiC,gBAAjC;AAEA,SAASC,MAAT,QAAuB,uBAAvB;AAEA,OAAO,MAAMC,mBAAmB,GAAG,CACjCC,GADiC,EAEjCC,SAFiC,EAGjCC,WAHiC,KAI9B;EACH,MAAMC,UAAU,GAAGP,MAAM,CAACM,WAAD,CAAzB;EACAP,eAAe,CAAC,MAAM;IACpBQ,UAAU,CAACC,OAAX,GAAqBF,WAArB;EACD,CAFc,CAAf;EAIAR,SAAS,CAAC,MAAM;IACdI,MAAM,CAACO,KAAP,CAAa,sCAAb,EAAqDJ,SAArD;IAEA,MAAMK,OAAO,GAAG,IAAIT,gBAAJ,EAAhB;IACA,MAAMU,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYH,OAAZ,CAApB;IAEAC,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3BL,OAAO,CAACK,GAAD,CAAP,GAAe,YAAwB;QAAA;;QAAA,kCAApBC,IAAoB;UAApBA,IAAoB;QAAA;;QACrC;QACA,gDAAAT,UAAU,CAACC,OAAX,EAAmBO,GAAnB,2GAA0B,GAAGC,IAA7B;MACD,CAHD;IAID,CALD;IAOAZ,GAAG,CAACa,mBAAJ,CAAwBZ,SAAxB,EAAmCK,OAAnC;IACA,OAAO,MAAMN,GAAG,CAACc,sBAAJ,CAA2Bb,SAA3B,CAAb;EACD,CAfQ,EAeN,CAACD,GAAD,EAAMC,SAAN,CAfM,CAAT;AAgBD,CA1BM"}
|
package/lib/module/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type {\n SendbirdChatSDK,\n SendbirdError,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n SendbirdGroupChannelListQuery,\n SendbirdMessage,\n SendbirdMessageCollection,\n SendbirdPreviousMessageListQuery,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n} from '@sendbird/uikit-utils';\n\nexport interface CustomQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: boolean;\n}\nexport interface CustomBidirectionalQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: () => boolean;\n prev: () => Promise<Data[]>;\n hasPrev: () => boolean;\n}\n\n/**\n * @interface UseGroupChannelList\n * @description interface for group channel list hook\n * */\nexport interface UseGroupChannelList {\n (sdk: SendbirdChatSDK, userId?: string, options?: UseGroupChannelListOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get group channels state\n * */\n groupChannels: SendbirdGroupChannel[];\n\n /**\n * Fetch next channels to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n };\n}\nexport type UseGroupChannelListOptions = {\n queryCreator?: () => SendbirdGroupChannelListQuery;\n collectionCreator?: () => SendbirdGroupChannelCollection;\n enableCollectionWithoutLocalCache?: boolean;\n};\n\n/**\n * @interface UseGroupChannelMessages\n * @description interface for group channel messages hook\n * - Receive new messages from other users -> append to state(nextMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> next() -> nextMessages append to state(messages)\n * */\nexport interface UseGroupChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdGroupChannel, userId?: string, options?: UseGroupChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Get messages, this state is for temporary data before render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * */\n nextMessages: SendbirdMessage[];\n\n /**\n * Get new messages from nextMessages\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessagesFromMembers: SendbirdMessage[];\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageCreateParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageCreateParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageCreateParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageCreateParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Activated channel\n * */\n activeChannel: SendbirdGroupChannel;\n };\n}\n\nexport type UseGroupChannelMessagesOptions = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n collectionCreator?: () => SendbirdMessageCollection;\n enableCollectionWithoutLocalCache?: boolean;\n onChannelDeleted?: () => void;\n};\n\n/**\n * @interface UseUserListReturn\n * @description interface for user list hook return value\n * */\nexport interface UseUserListReturn<User> {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get users state\n * */\n users: User[];\n\n /**\n * Fetch next users to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n}\n\nexport type UseUserListOptions<User> = {\n sortComparator?: (a: User, b: User) => number;\n queryCreator?: () => CustomQueryInterface<User>;\n};\n"],"mappings":""}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SendbirdChatSDK, SendbirdGroupChannel } from '@sendbird/uikit-utils';
|
|
2
2
|
export declare const useActiveGroupChannel: (sdk: SendbirdChatSDK, staleChannel: SendbirdGroupChannel) => {
|
|
3
|
-
activeChannel: import("sendbird").GroupChannel;
|
|
4
|
-
setActiveChannel: import("react").Dispatch<import("react").SetStateAction<import("sendbird").GroupChannel>>;
|
|
3
|
+
activeChannel: import("@sendbird/chat/groupChannel").GroupChannel;
|
|
4
|
+
setActiveChannel: import("react").Dispatch<import("react").SetStateAction<import("@sendbird/chat/groupChannel").GroupChannel>>;
|
|
5
5
|
};
|
|
@@ -9,6 +9,6 @@ export declare const useGroupChannelListReducer: (order?: Order) => {
|
|
|
9
9
|
updateOrder: (order?: Order) => void;
|
|
10
10
|
loading: boolean;
|
|
11
11
|
refreshing: boolean;
|
|
12
|
-
groupChannels: import("sendbird").GroupChannel[];
|
|
12
|
+
groupChannels: import("@sendbird/chat/groupChannel").GroupChannel[];
|
|
13
13
|
};
|
|
14
14
|
export {};
|