@sendbird/uikit-chat-hooks 3.7.3 → 3.7.5
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/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +9 -13
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +2 -9
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
- package/lib/commonjs/common/useUserList.js +1 -1
- package/lib/commonjs/common/useUserList.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +9 -13
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +2 -9
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
- package/lib/module/common/useUserList.js +1 -1
- package/lib/module/common/useUserList.js.map +1 -1
- package/package.json +5 -5
- package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +9 -13
- package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +2 -10
- package/src/common/useUserList.ts +1 -1
package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js
CHANGED
|
@@ -56,18 +56,14 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
|
|
|
56
56
|
updateLoading,
|
|
57
57
|
updateRefreshing
|
|
58
58
|
} = (0, _useChannelMessagesReducer.useChannelMessagesReducer)(options === null || options === void 0 ? void 0 : options.sortComparator);
|
|
59
|
-
const channelMarkAsRead =
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
} catch (e) {
|
|
70
|
-
_uikitUtils.Logger.warn('[useGroupChannelMessagesWithCollection/channelMarkAsRead]', e);
|
|
59
|
+
const channelMarkAsRead = source => {
|
|
60
|
+
switch (source) {
|
|
61
|
+
case _chat.CollectionEventSource.EVENT_MESSAGE_RECEIVED:
|
|
62
|
+
case _chat.CollectionEventSource.EVENT_MESSAGE_SENT_SUCCESS:
|
|
63
|
+
case _chat.CollectionEventSource.SYNC_MESSAGE_FILL:
|
|
64
|
+
case undefined:
|
|
65
|
+
(0, _uikitUtils.confirmAndMarkAsRead)([channel]);
|
|
66
|
+
break;
|
|
71
67
|
}
|
|
72
68
|
};
|
|
73
69
|
const updateNewMessagesReceived = (source, messages) => {
|
|
@@ -97,7 +93,7 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
|
|
|
97
93
|
if (isNotEmpty(pendingMessages)) updateMessages(pendingMessages, false, (_sdk$currentUser3 = sdk.currentUser) === null || _sdk$currentUser3 === void 0 ? void 0 : _sdk$currentUser3.userId);
|
|
98
94
|
if (isNotEmpty(failedMessages)) updateMessages(failedMessages, false, (_sdk$currentUser4 = sdk.currentUser) === null || _sdk$currentUser4 === void 0 ? void 0 : _sdk$currentUser4.userId);
|
|
99
95
|
};
|
|
100
|
-
const init = (0, _uikitUtils.useFreshCallback)(
|
|
96
|
+
const init = (0, _uikitUtils.useFreshCallback)((startingPoint, limit, callback) => {
|
|
101
97
|
var _collectionRef$curren, _sdk$currentUser5, _collectionRef$curren2;
|
|
102
98
|
if (collectionRef.current) (_collectionRef$curren = collectionRef.current) === null || _collectionRef$curren === void 0 ? void 0 : _collectionRef$curren.dispose();
|
|
103
99
|
channelMarkAsRead();
|
package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_chat","_groupChannel","_uikitUtils","_useChannelHandler","_useChannelMessagesReducer","MESSAGE_LIMIT","DEFAULT","SEARCH","createMessageCollection","channel","limit","options","collectionCreator","startingPoint","filter","MessageFilter","replyType","isNotEmpty","arr","length","shouldUseSearchLimit","Date","now","useGroupChannelMessagesWithCollection","sdk","userId","initialStartingPoint","Number","MAX_SAFE_INTEGER","initialLimit","forceUpdate","useForceUpdate","collectionRef","useRef","collectionInitializedRef","handlerId","useUniqHandlerId","loading","refreshing","messages","newMessages","updateMessages","updateNewMessages","deleteNewMessages","deleteMessages","updateLoading","updateRefreshing","useChannelMessagesReducer","sortComparator","channelMarkAsRead","source","CollectionEventSource","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT_SUCCESS","SYNC_MESSAGE_FILL","undefined","confirmAndMarkAsRead","e","Logger","warn","updateNewMessagesReceived","incomingMessages","it","_sdk$currentUser","isMyMessage","currentUser","_options$shouldCountN","_sdk$currentUser2","_options$onMessagesRe","shouldCountNewMessages","call","onMessagesReceived","updateUnsentMessages","_sdk$currentUser3","_sdk$currentUser4","pendingMessages","failedMessages","current","init","useFreshCallback","callback","_collectionRef$curren","_sdk$currentUser5","_collectionRef$curren2","dispose","setMessageCollectionHandler","onMessagesAdded","ctx","__","_sdk$currentUser6","onMessagesUpdated","_sdk$currentUser7","EVENT_MESSAGE_UPDATED","_options$onMessagesUp","onMessagesDeleted","_","___","msgIds","map","messageId","reqIds","isSendableMessage","reqId","onChannelDeleted","_options$onChannelDel","onChannelUpdated","eventChannel","isGroupChannel","isDifferentChannel","onHugeGapDetected","initialize","MessageCollectionInitPolicy","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","error","_sdk$currentUser8","debug","onApiResult","_sdk$currentUser9","_options$onMessagesRe2","useChannelHandler","onUserBanned","bannedUser","_sdk$currentUser10","_options$onChannelDel2","useEffect","setTimeout","url","_collectionRef$curren3","refresh","prev","_collectionRef$curren4","hasPrevious","_collectionRef$curren5","_sdk$currentUser11","list","loadPrevious","hasPrev","next","_collectionRef$curren6","hasNext","_collectionRef$curren7","_sdk$currentUser12","fetchedList","loadNext","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser13","onSucceeded","sentMessage","_sdk$currentUser14","onFailed","failedMessage","_sdk$currentUser15","sendFileMessage","isFileMessage","_sdk$currentUser16","_sdk$currentUser17","_sdk$currentUser18","updateUserMessage","_sdk$currentUser19","updatedMessage","updateFileMessage","_sdk$currentUser20","resendMessage","_sdk$currentUser21","resentMessage","resendUserMessage","resendFileMessage","deleteMessage","message","sendingStatus","_collectionRef$curren8","removeFailedMessage","resetNewMessages","_sdk$currentUser22","resetWithStartingPoint","_sdk$currentUser23","exports"],"sources":["useGroupChannelMessagesWithCollection.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { CollectionEventSource } from '@sendbird/chat';\nimport { MessageCollectionInitPolicy, MessageFilter } from '@sendbird/chat/groupChannel';\nimport type { SendbirdFileMessage, SendbirdGroupChannel, SendbirdMessageCollection } from '@sendbird/uikit-utils';\nimport {\n Logger,\n SendbirdBaseMessage,\n confirmAndMarkAsRead,\n isDifferentChannel,\n isMyMessage,\n isSendableMessage,\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 MESSAGE_LIMIT = {\n DEFAULT: 50,\n SEARCH: 20,\n};\n\nconst createMessageCollection = (\n channel: SendbirdGroupChannel,\n limit: number,\n options: UseGroupChannelMessagesOptions,\n) => {\n if (options?.collectionCreator) return options?.collectionCreator({ startingPoint: options?.startingPoint });\n\n const filter = new MessageFilter();\n if (options.replyType) filter.replyType = options.replyType;\n\n return channel.createMessageCollection({ filter, limit, startingPoint: options?.startingPoint });\n};\n\nfunction isNotEmpty(arr?: unknown[]): arr is unknown[] {\n if (!arr) return false;\n return arr.length !== 0;\n}\n\nfunction shouldUseSearchLimit(startingPoint: number) {\n return startingPoint < Date.now();\n}\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the '@sendbird/uikit-tools' package.\n * */\nexport const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const initialStartingPoint = options?.startingPoint ?? Number.MAX_SAFE_INTEGER;\n const initialLimit = shouldUseSearchLimit(initialStartingPoint) ? MESSAGE_LIMIT.SEARCH : MESSAGE_LIMIT.DEFAULT;\n\n const forceUpdate = useForceUpdate();\n const collectionRef = useRef<SendbirdMessageCollection>();\n const collectionInitializedRef = useRef(false);\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithCollection');\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n updateNewMessages,\n deleteNewMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const channelMarkAsRead = async (source?: CollectionEventSource) => {\n try {\n switch (source) {\n case CollectionEventSource.EVENT_MESSAGE_RECEIVED:\n case CollectionEventSource.EVENT_MESSAGE_SENT_SUCCESS:\n case CollectionEventSource.SYNC_MESSAGE_FILL:\n case undefined:\n await confirmAndMarkAsRead([channel]);\n break;\n }\n } catch (e) {\n Logger.warn('[useGroupChannelMessagesWithCollection/channelMarkAsRead]', e);\n }\n };\n const updateNewMessagesReceived = (source: CollectionEventSource, messages: SendbirdBaseMessage[]) => {\n const incomingMessages = messages.filter((it) => !isMyMessage(it, sdk.currentUser?.userId));\n if (incomingMessages.length > 0) {\n switch (source) {\n case CollectionEventSource.EVENT_MESSAGE_RECEIVED:\n case CollectionEventSource.SYNC_MESSAGE_FILL: {\n if (options?.shouldCountNewMessages?.()) updateNewMessages(incomingMessages, false, sdk.currentUser?.userId);\n options?.onMessagesReceived?.(incomingMessages);\n break;\n }\n }\n }\n };\n\n const updateUnsentMessages = () => {\n const { pendingMessages, failedMessages } = collectionRef.current ?? {};\n if (isNotEmpty(pendingMessages)) updateMessages(pendingMessages, false, sdk.currentUser?.userId);\n if (isNotEmpty(failedMessages)) updateMessages(failedMessages, false, sdk.currentUser?.userId);\n };\n\n const init = useFreshCallback(async (startingPoint: number, limit: number, callback?: () => void) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n channelMarkAsRead();\n updateNewMessages([], true, sdk.currentUser?.userId);\n\n collectionInitializedRef.current = false;\n collectionRef.current = createMessageCollection(channel, limit, {\n ...options,\n startingPoint,\n });\n\n collectionRef.current?.setMessageCollectionHandler({\n onMessagesAdded: (ctx, __, messages) => {\n channelMarkAsRead(ctx.source);\n updateNewMessagesReceived(ctx.source, messages);\n\n updateMessages(messages, false, sdk.currentUser?.userId);\n },\n onMessagesUpdated: (ctx, __, messages) => {\n channelMarkAsRead(ctx.source);\n updateNewMessagesReceived(ctx.source, messages); // NOTE: admin message is not added via onMessagesAdded handler, not checked yet is this a bug.\n\n updateMessages(messages, false, sdk.currentUser?.userId);\n\n if (ctx.source === CollectionEventSource.EVENT_MESSAGE_UPDATED) {\n options?.onMessagesUpdated?.(messages);\n }\n },\n onMessagesDeleted: (_, __, ___, messages) => {\n const msgIds = messages.map((it) => it.messageId);\n const reqIds = messages.filter(isSendableMessage).map((it) => it.reqId);\n deleteMessages(msgIds, reqIds);\n deleteNewMessages(msgIds, reqIds);\n },\n onChannelDeleted: () => {\n options?.onChannelDeleted?.();\n },\n onChannelUpdated: (_, eventChannel) => {\n if (eventChannel.isGroupChannel() && !isDifferentChannel(eventChannel, channel)) {\n forceUpdate();\n }\n },\n onHugeGapDetected: () => {\n init(Number.MAX_SAFE_INTEGER, MESSAGE_LIMIT.DEFAULT);\n },\n });\n\n collectionRef.current\n .initialize(MessageCollectionInitPolicy.CACHE_AND_REPLACE_BY_API)\n .onCacheResult((err, messages) => {\n if (err) sdk.isCacheEnabled && Logger.error('[useGroupChannelMessagesWithCollection/onCacheResult]', err);\n else if (messages) {\n Logger.debug('[useGroupChannelMessagesWithCollection/onCacheResult]', 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser?.userId);\n updateUnsentMessages();\n }\n\n callback?.();\n })\n .onApiResult((err, messages) => {\n if (err) Logger.warn('[useGroupChannelMessagesWithCollection/onApiResult]', err);\n else if (messages) {\n Logger.debug('[useGroupChannelMessagesWithCollection/onApiResult]', 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser?.userId);\n if (!options?.startingPoint) options?.onMessagesReceived?.(messages);\n if (sdk.isCacheEnabled) updateUnsentMessages();\n }\n\n collectionInitializedRef.current = true;\n callback?.();\n });\n });\n\n useChannelHandler(sdk, handlerId, {\n onUserBanned(channel, bannedUser) {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n if (bannedUser.userId === sdk.currentUser?.userId) {\n options?.onChannelDeleted?.();\n } else {\n forceUpdate();\n }\n }\n },\n });\n\n useEffect(() => {\n // NOTE: Cache read is heavy task, and it prevents smooth ui transition\n setTimeout(async () => {\n updateLoading(true);\n init(initialStartingPoint, initialLimit, () => updateLoading(false));\n }, 0);\n }, [channel.url, userId, options?.replyType]);\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n init(Number.MAX_SAFE_INTEGER, MESSAGE_LIMIT.DEFAULT, () => updateRefreshing(false));\n });\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useFreshCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasPrevious) {\n try {\n const list = await collectionRef.current?.loadPrevious();\n updateMessages(list, false, sdk.currentUser?.userId);\n } catch {}\n }\n });\n\n const hasPrev: ReturnType<UseGroupChannelMessages>['hasPrev'] = useFreshCallback(() => {\n if (collectionInitializedRef.current && collectionRef.current) {\n return collectionRef.current.hasPrevious;\n } else {\n return false;\n }\n });\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasNext) {\n try {\n const fetchedList = await collectionRef.current?.loadNext();\n updateMessages(fetchedList, false, sdk.currentUser?.userId);\n } catch {}\n }\n });\n\n const hasNext: ReturnType<UseGroupChannelMessages>['hasNext'] = useFreshCallback(() => {\n if (collectionInitializedRef.current && collectionRef.current) {\n return collectionRef.current.hasNext;\n } else {\n return false;\n }\n });\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 onPending?.(pendingMessage);\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\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 as SendbirdFileMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\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 resentMessage = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (resentMessage) updateMessages([resentMessage], 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 try {\n await collectionRef.current?.removeFailedMessage(message.reqId);\n } finally {\n deleteMessages([message.messageId], [message.reqId]);\n }\n }\n });\n const resetNewMessages: ReturnType<UseGroupChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser?.userId);\n });\n const resetWithStartingPoint: ReturnType<UseGroupChannelMessages>['resetWithStartingPoint'] = useFreshCallback(\n (startingPoint, callback) => {\n const limit = shouldUseSearchLimit(startingPoint) ? MESSAGE_LIMIT.SEARCH : MESSAGE_LIMIT.DEFAULT;\n updateLoading(true);\n updateMessages([], true, sdk.currentUser?.userId);\n init(startingPoint, limit, () => {\n updateLoading(false);\n callback?.();\n });\n },\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n next,\n hasNext,\n prev,\n hasPrev,\n newMessages,\n resetNewMessages,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","require","_chat","_groupChannel","_uikitUtils","_useChannelHandler","_useChannelMessagesReducer","MESSAGE_LIMIT","DEFAULT","SEARCH","createMessageCollection","channel","limit","options","collectionCreator","startingPoint","filter","MessageFilter","replyType","isNotEmpty","arr","length","shouldUseSearchLimit","Date","now","useGroupChannelMessagesWithCollection","sdk","userId","initialStartingPoint","Number","MAX_SAFE_INTEGER","initialLimit","forceUpdate","useForceUpdate","collectionRef","useRef","collectionInitializedRef","handlerId","useUniqHandlerId","loading","refreshing","messages","newMessages","updateMessages","updateNewMessages","deleteNewMessages","deleteMessages","updateLoading","updateRefreshing","useChannelMessagesReducer","sortComparator","channelMarkAsRead","source","CollectionEventSource","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT_SUCCESS","SYNC_MESSAGE_FILL","undefined","confirmAndMarkAsRead","updateNewMessagesReceived","incomingMessages","it","_sdk$currentUser","isMyMessage","currentUser","_options$shouldCountN","_sdk$currentUser2","_options$onMessagesRe","shouldCountNewMessages","call","onMessagesReceived","updateUnsentMessages","_sdk$currentUser3","_sdk$currentUser4","pendingMessages","failedMessages","current","init","useFreshCallback","callback","_collectionRef$curren","_sdk$currentUser5","_collectionRef$curren2","dispose","setMessageCollectionHandler","onMessagesAdded","ctx","__","_sdk$currentUser6","onMessagesUpdated","_sdk$currentUser7","EVENT_MESSAGE_UPDATED","_options$onMessagesUp","onMessagesDeleted","_","___","msgIds","map","messageId","reqIds","isSendableMessage","reqId","onChannelDeleted","_options$onChannelDel","onChannelUpdated","eventChannel","isGroupChannel","isDifferentChannel","onHugeGapDetected","initialize","MessageCollectionInitPolicy","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","Logger","error","_sdk$currentUser8","debug","onApiResult","warn","_sdk$currentUser9","_options$onMessagesRe2","useChannelHandler","onUserBanned","bannedUser","_sdk$currentUser10","_options$onChannelDel2","useEffect","setTimeout","url","_collectionRef$curren3","refresh","prev","_collectionRef$curren4","hasPrevious","_collectionRef$curren5","_sdk$currentUser11","list","loadPrevious","hasPrev","next","_collectionRef$curren6","hasNext","_collectionRef$curren7","_sdk$currentUser12","fetchedList","loadNext","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser13","onSucceeded","sentMessage","_sdk$currentUser14","onFailed","failedMessage","_sdk$currentUser15","sendFileMessage","isFileMessage","_sdk$currentUser16","_sdk$currentUser17","_sdk$currentUser18","updateUserMessage","_sdk$currentUser19","updatedMessage","updateFileMessage","_sdk$currentUser20","resendMessage","_sdk$currentUser21","resentMessage","resendUserMessage","resendFileMessage","deleteMessage","message","sendingStatus","_collectionRef$curren8","removeFailedMessage","resetNewMessages","_sdk$currentUser22","resetWithStartingPoint","_sdk$currentUser23","exports"],"sources":["useGroupChannelMessagesWithCollection.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { CollectionEventSource } from '@sendbird/chat';\nimport { MessageCollectionInitPolicy, MessageFilter } from '@sendbird/chat/groupChannel';\nimport type { SendbirdFileMessage, SendbirdGroupChannel, SendbirdMessageCollection } from '@sendbird/uikit-utils';\nimport {\n Logger,\n SendbirdBaseMessage,\n confirmAndMarkAsRead,\n isDifferentChannel,\n isMyMessage,\n isSendableMessage,\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 MESSAGE_LIMIT = {\n DEFAULT: 50,\n SEARCH: 20,\n};\n\nconst createMessageCollection = (\n channel: SendbirdGroupChannel,\n limit: number,\n options: UseGroupChannelMessagesOptions,\n) => {\n if (options?.collectionCreator) return options?.collectionCreator({ startingPoint: options?.startingPoint });\n\n const filter = new MessageFilter();\n if (options.replyType) filter.replyType = options.replyType;\n\n return channel.createMessageCollection({ filter, limit, startingPoint: options?.startingPoint });\n};\n\nfunction isNotEmpty(arr?: unknown[]): arr is unknown[] {\n if (!arr) return false;\n return arr.length !== 0;\n}\n\nfunction shouldUseSearchLimit(startingPoint: number) {\n return startingPoint < Date.now();\n}\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the '@sendbird/uikit-tools' package.\n * */\nexport const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const initialStartingPoint = options?.startingPoint ?? Number.MAX_SAFE_INTEGER;\n const initialLimit = shouldUseSearchLimit(initialStartingPoint) ? MESSAGE_LIMIT.SEARCH : MESSAGE_LIMIT.DEFAULT;\n\n const forceUpdate = useForceUpdate();\n const collectionRef = useRef<SendbirdMessageCollection>();\n const collectionInitializedRef = useRef(false);\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithCollection');\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n updateNewMessages,\n deleteNewMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const channelMarkAsRead = (source?: CollectionEventSource) => {\n switch (source) {\n case CollectionEventSource.EVENT_MESSAGE_RECEIVED:\n case CollectionEventSource.EVENT_MESSAGE_SENT_SUCCESS:\n case CollectionEventSource.SYNC_MESSAGE_FILL:\n case undefined:\n confirmAndMarkAsRead([channel]);\n break;\n }\n };\n const updateNewMessagesReceived = (source: CollectionEventSource, messages: SendbirdBaseMessage[]) => {\n const incomingMessages = messages.filter((it) => !isMyMessage(it, sdk.currentUser?.userId));\n if (incomingMessages.length > 0) {\n switch (source) {\n case CollectionEventSource.EVENT_MESSAGE_RECEIVED:\n case CollectionEventSource.SYNC_MESSAGE_FILL: {\n if (options?.shouldCountNewMessages?.()) updateNewMessages(incomingMessages, false, sdk.currentUser?.userId);\n options?.onMessagesReceived?.(incomingMessages);\n break;\n }\n }\n }\n };\n\n const updateUnsentMessages = () => {\n const { pendingMessages, failedMessages } = collectionRef.current ?? {};\n if (isNotEmpty(pendingMessages)) updateMessages(pendingMessages, false, sdk.currentUser?.userId);\n if (isNotEmpty(failedMessages)) updateMessages(failedMessages, false, sdk.currentUser?.userId);\n };\n\n const init = useFreshCallback((startingPoint: number, limit: number, callback?: () => void) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n channelMarkAsRead();\n updateNewMessages([], true, sdk.currentUser?.userId);\n\n collectionInitializedRef.current = false;\n collectionRef.current = createMessageCollection(channel, limit, {\n ...options,\n startingPoint,\n });\n\n collectionRef.current?.setMessageCollectionHandler({\n onMessagesAdded: (ctx, __, messages) => {\n channelMarkAsRead(ctx.source);\n updateNewMessagesReceived(ctx.source, messages);\n\n updateMessages(messages, false, sdk.currentUser?.userId);\n },\n onMessagesUpdated: (ctx, __, messages) => {\n channelMarkAsRead(ctx.source);\n updateNewMessagesReceived(ctx.source, messages); // NOTE: admin message is not added via onMessagesAdded handler, not checked yet is this a bug.\n\n updateMessages(messages, false, sdk.currentUser?.userId);\n\n if (ctx.source === CollectionEventSource.EVENT_MESSAGE_UPDATED) {\n options?.onMessagesUpdated?.(messages);\n }\n },\n onMessagesDeleted: (_, __, ___, messages) => {\n const msgIds = messages.map((it) => it.messageId);\n const reqIds = messages.filter(isSendableMessage).map((it) => it.reqId);\n deleteMessages(msgIds, reqIds);\n deleteNewMessages(msgIds, reqIds);\n },\n onChannelDeleted: () => {\n options?.onChannelDeleted?.();\n },\n onChannelUpdated: (_, eventChannel) => {\n if (eventChannel.isGroupChannel() && !isDifferentChannel(eventChannel, channel)) {\n forceUpdate();\n }\n },\n onHugeGapDetected: () => {\n init(Number.MAX_SAFE_INTEGER, MESSAGE_LIMIT.DEFAULT);\n },\n });\n\n collectionRef.current\n .initialize(MessageCollectionInitPolicy.CACHE_AND_REPLACE_BY_API)\n .onCacheResult((err, messages) => {\n if (err) sdk.isCacheEnabled && Logger.error('[useGroupChannelMessagesWithCollection/onCacheResult]', err);\n else if (messages) {\n Logger.debug('[useGroupChannelMessagesWithCollection/onCacheResult]', 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser?.userId);\n updateUnsentMessages();\n }\n\n callback?.();\n })\n .onApiResult((err, messages) => {\n if (err) Logger.warn('[useGroupChannelMessagesWithCollection/onApiResult]', err);\n else if (messages) {\n Logger.debug('[useGroupChannelMessagesWithCollection/onApiResult]', 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser?.userId);\n if (!options?.startingPoint) options?.onMessagesReceived?.(messages);\n if (sdk.isCacheEnabled) updateUnsentMessages();\n }\n\n collectionInitializedRef.current = true;\n callback?.();\n });\n });\n\n useChannelHandler(sdk, handlerId, {\n onUserBanned(channel, bannedUser) {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n if (bannedUser.userId === sdk.currentUser?.userId) {\n options?.onChannelDeleted?.();\n } else {\n forceUpdate();\n }\n }\n },\n });\n\n useEffect(() => {\n // NOTE: Cache read is heavy task, and it prevents smooth ui transition\n setTimeout(async () => {\n updateLoading(true);\n init(initialStartingPoint, initialLimit, () => updateLoading(false));\n }, 0);\n }, [channel.url, userId, options?.replyType]);\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n init(Number.MAX_SAFE_INTEGER, MESSAGE_LIMIT.DEFAULT, () => updateRefreshing(false));\n });\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useFreshCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasPrevious) {\n try {\n const list = await collectionRef.current?.loadPrevious();\n updateMessages(list, false, sdk.currentUser?.userId);\n } catch {}\n }\n });\n\n const hasPrev: ReturnType<UseGroupChannelMessages>['hasPrev'] = useFreshCallback(() => {\n if (collectionInitializedRef.current && collectionRef.current) {\n return collectionRef.current.hasPrevious;\n } else {\n return false;\n }\n });\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasNext) {\n try {\n const fetchedList = await collectionRef.current?.loadNext();\n updateMessages(fetchedList, false, sdk.currentUser?.userId);\n } catch {}\n }\n });\n\n const hasNext: ReturnType<UseGroupChannelMessages>['hasNext'] = useFreshCallback(() => {\n if (collectionInitializedRef.current && collectionRef.current) {\n return collectionRef.current.hasNext;\n } else {\n return false;\n }\n });\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 onPending?.(pendingMessage);\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\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 as SendbirdFileMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\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 resentMessage = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (resentMessage) updateMessages([resentMessage], 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 try {\n await collectionRef.current?.removeFailedMessage(message.reqId);\n } finally {\n deleteMessages([message.messageId], [message.reqId]);\n }\n }\n });\n const resetNewMessages: ReturnType<UseGroupChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser?.userId);\n });\n const resetWithStartingPoint: ReturnType<UseGroupChannelMessages>['resetWithStartingPoint'] = useFreshCallback(\n (startingPoint, callback) => {\n const limit = shouldUseSearchLimit(startingPoint) ? MESSAGE_LIMIT.SEARCH : MESSAGE_LIMIT.DEFAULT;\n updateLoading(true);\n updateMessages([], true, sdk.currentUser?.userId);\n init(startingPoint, limit, () => {\n updateLoading(false);\n callback?.();\n });\n },\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n next,\n hasNext,\n prev,\n hasPrev,\n newMessages,\n resetNewMessages,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n };\n};\n"],"mappings":"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"}
|
|
@@ -37,17 +37,10 @@ const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
|
|
|
37
37
|
updateLoading,
|
|
38
38
|
updateRefreshing
|
|
39
39
|
} = (0, _useChannelMessagesReducer.useChannelMessagesReducer)(options === null || options === void 0 ? void 0 : options.sortComparator);
|
|
40
|
-
const channelMarkAsRead = async () => {
|
|
41
|
-
try {
|
|
42
|
-
await (0, _uikitUtils.confirmAndMarkAsRead)([channel]);
|
|
43
|
-
} catch (e) {
|
|
44
|
-
_uikitUtils.Logger.warn('[useGroupChannelMessagesWithQuery/channelMarkAsRead]', e);
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
40
|
const init = (0, _uikitUtils.useFreshCallback)(async uid => {
|
|
48
41
|
if (uid) {
|
|
49
42
|
var _sdk$currentUser, _queryRef$current;
|
|
50
|
-
|
|
43
|
+
(0, _uikitUtils.confirmAndMarkAsRead)([channel]);
|
|
51
44
|
updateNewMessages([], true, (_sdk$currentUser = sdk.currentUser) === null || _sdk$currentUser === void 0 ? void 0 : _sdk$currentUser.userId);
|
|
52
45
|
queryRef.current = createMessageQuery(channel, options);
|
|
53
46
|
if ((_queryRef$current = queryRef.current) !== null && _queryRef$current !== void 0 && _queryRef$current.hasNext) {
|
|
@@ -68,7 +61,7 @@ const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
|
|
|
68
61
|
var _sdk$currentUser3, _sdk$currentUser4, _options$shouldCountN;
|
|
69
62
|
if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
|
|
70
63
|
if ((0, _uikitUtils.isMyMessage)(message, (_sdk$currentUser3 = sdk.currentUser) === null || _sdk$currentUser3 === void 0 ? void 0 : _sdk$currentUser3.userId)) return;
|
|
71
|
-
|
|
64
|
+
(0, _uikitUtils.confirmAndMarkAsRead)([channel]);
|
|
72
65
|
updateMessages([message], false, (_sdk$currentUser4 = sdk.currentUser) === null || _sdk$currentUser4 === void 0 ? void 0 : _sdk$currentUser4.userId);
|
|
73
66
|
if (options !== null && options !== void 0 && (_options$shouldCountN = options.shouldCountNewMessages) !== null && _options$shouldCountN !== void 0 && _options$shouldCountN.call(options)) {
|
|
74
67
|
var _sdk$currentUser5;
|
package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_useChannelMessagesReducer","createMessageQuery","channel","options","queryCreator","params","limit","reverse","replyType","createPreviousMessageListQuery","useGroupChannelMessagesWithQuery","sdk","userId","queryRef","useRef","handlerId","useUniqHandlerId","forceUpdate","useForceUpdate","loading","refreshing","messages","newMessages","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","useChannelMessagesReducer","sortComparator","channelMarkAsRead","confirmAndMarkAsRead","e","Logger","warn","init","useFreshCallback","uid","_sdk$currentUser","_queryRef$current","currentUser","current","hasNext","_queryRef$current2","_sdk$currentUser2","list","load","channelUpdater","isGroupChannel","isDifferentChannel","useChannelHandler","onMessageReceived","eventChannel","message","_sdk$currentUser3","_sdk$currentUser4","_options$shouldCountN","isMyMessage","shouldCountNewMessages","call","_sdk$currentUser5","onMessagesReceived","onMessageUpdated","_sdk$currentUser6","_sdk$currentUser7","onMessageDeleted","messageId","onReactionUpdated","reactionEvent","_sdk$currentUser8","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","_sdk$currentUser9","_options$onChannelDel2","useAsyncEffect","refresh","prev","_queryRef$current3","_queryRef$current4","_sdk$currentUser10","hasPrev","_queryRef$current5","next","ASYNC_NOOP","sendUserMessage","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser11","onSucceeded","sentMessage","_sdk$currentUser12","onFailed","err","failedMessage","_sdk$currentUser13","sendFileMessage","isFileMessage","_sdk$currentUser14","_sdk$currentUser15","_sdk$currentUser16","updateUserMessage","_sdk$currentUser17","updatedMessage","updateFileMessage","_sdk$currentUser18","resendMessage","_sdk$currentUser19","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","_sdk$currentUser20","resetWithStartingPoint","exports"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { BaseMessage, PreviousMessageListQueryParams } from '@sendbird/chat/message';\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 = (channel: SendbirdGroupChannel, options?: UseGroupChannelMessagesOptions) => {\n if (options?.queryCreator) return options.queryCreator();\n\n const params: PreviousMessageListQueryParams = { limit: 100, reverse: true };\n if (options?.replyType) params.replyType = options.replyType;\n\n return channel.createPreviousMessageListQuery(params);\n};\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the '@sendbird/uikit-tools' package.\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);\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 if (message) updateMessages([message as BaseMessage], 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, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\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, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\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};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_useChannelMessagesReducer","createMessageQuery","channel","options","queryCreator","params","limit","reverse","replyType","createPreviousMessageListQuery","useGroupChannelMessagesWithQuery","sdk","userId","queryRef","useRef","handlerId","useUniqHandlerId","forceUpdate","useForceUpdate","loading","refreshing","messages","newMessages","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","useChannelMessagesReducer","sortComparator","init","useFreshCallback","uid","_sdk$currentUser","_queryRef$current","confirmAndMarkAsRead","currentUser","current","hasNext","_queryRef$current2","_sdk$currentUser2","list","load","channelUpdater","isGroupChannel","isDifferentChannel","useChannelHandler","onMessageReceived","eventChannel","message","_sdk$currentUser3","_sdk$currentUser4","_options$shouldCountN","isMyMessage","shouldCountNewMessages","call","_sdk$currentUser5","onMessagesReceived","onMessageUpdated","_sdk$currentUser6","_sdk$currentUser7","onMessageDeleted","messageId","onReactionUpdated","reactionEvent","_sdk$currentUser8","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","_sdk$currentUser9","_options$onChannelDel2","useAsyncEffect","refresh","prev","_queryRef$current3","_queryRef$current4","_sdk$currentUser10","hasPrev","_queryRef$current5","next","ASYNC_NOOP","sendUserMessage","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser11","onSucceeded","sentMessage","_sdk$currentUser12","onFailed","err","failedMessage","_sdk$currentUser13","sendFileMessage","isFileMessage","_sdk$currentUser14","_sdk$currentUser15","_sdk$currentUser16","updateUserMessage","_sdk$currentUser17","updatedMessage","updateFileMessage","_sdk$currentUser18","resendMessage","_sdk$currentUser19","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","_sdk$currentUser20","resetWithStartingPoint","Logger","warn","exports"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { BaseMessage, PreviousMessageListQueryParams } from '@sendbird/chat/message';\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 = (channel: SendbirdGroupChannel, options?: UseGroupChannelMessagesOptions) => {\n if (options?.queryCreator) return options.queryCreator();\n\n const params: PreviousMessageListQueryParams = { limit: 100, reverse: true };\n if (options?.replyType) params.replyType = options.replyType;\n\n return channel.createPreviousMessageListQuery(params);\n};\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the '@sendbird/uikit-tools' package.\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 init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n confirmAndMarkAsRead([channel]);\n updateNewMessages([], true, sdk.currentUser?.userId);\n\n queryRef.current = createMessageQuery(channel, options);\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 confirmAndMarkAsRead([channel]);\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 if (message) updateMessages([message as BaseMessage], 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, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\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, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\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};\n"],"mappings":"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"}
|
|
@@ -101,7 +101,7 @@ const useUserList = (sdk, options) => {
|
|
|
101
101
|
});
|
|
102
102
|
const next = (0, _uikitUtils.useFreshCallback)(async () => {
|
|
103
103
|
var _query$current3;
|
|
104
|
-
if (query.current && (_query$current3 = query.current) !== null && _query$current3 !== void 0 && _query$current3.hasNext) {
|
|
104
|
+
if (query.current && (_query$current3 = query.current) !== null && _query$current3 !== void 0 && _query$current3.hasNext && !query.current.isLoading) {
|
|
105
105
|
const nextUsers = await query.current.next().catch(e => {
|
|
106
106
|
_uikitUtils.Logger.error(e);
|
|
107
107
|
if (e.code === _uikitUtils.SBErrorCode.UNAUTHORIZED_REQUEST) _uikitUtils.Logger.warn(_uikitUtils.SBErrorMessage.ACL);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_uikitUtils","createUserQuery","sdk","queryCreator","createApplicationUserListQuery","useUserList","options","query","useRef","error","setError","useState","loading","setLoading","refreshing","setRefreshing","users","setUsers","sortedUsers","useMemo","sortComparator","sort","upsertUser","useFreshCallback","user","_ref","draft","userIdx","findIndex","it","userId","push","deleteUser","_ref2","splice","updateUsers","clearPrev","prev","concat","init","_query$current","current","hasNext","_query$current2","next","catch","e","Logger","code","SBErrorCode","UNAUTHORIZED_REQUEST","warn","SBErrorMessage","ACL","useAsyncEffect","refresh","_query$current3","nextUsers","exports"],"sources":["useUserList.ts"],"sourcesContent":["import { useMemo, useRef, useState } from 'react';\n\nimport type { Optional, SendbirdChatSDK, SendbirdUser, UserStruct } from '@sendbird/uikit-utils';\nimport { Logger, SBErrorCode, SBErrorMessage, useAsyncEffect, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport type { CustomQueryInterface, UseUserListOptions, UseUserListReturn } from '../types';\n\nconst createUserQuery = <User extends UserStruct>(\n sdk: SendbirdChatSDK,\n queryCreator?: UseUserListOptions<User>['queryCreator'],\n) => {\n if (queryCreator) return queryCreator();\n // In order to use the API, the option must be turned on in the dashboard.\n return sdk.createApplicationUserListQuery() as unknown as CustomQueryInterface<User>;\n};\n\n/**\n * Get user list from query.\n * default query uses 'instance.createApplicationUserListQuery'\n * The response type of hook is depends on return type of 'query.next()'\n *\n * You can call hook with your custom query using {@link CustomQuery}\n * Or you can create your 'CustomQueryClass' implemented {@link CustomQueryInterface}'\n *\n * ```example\n * const { users } = useUserList(sdk, {\n * queryCreator: () => {\n * const friendQuery = sdk.createFriendListQuery();\n * return new CustomQuery({\n * next: () => friendQuery.next(),\n * isLoading: () => friendQuery.isLoading,\n * hasNext: () => friendQuery.hasMore,\n * });\n * }\n * })\n * ```\n * */\nexport const useUserList = <\n Options extends UseUserListOptions<UserStruct>,\n QueriedUser extends UserStruct = Options['queryCreator'] extends Optional<\n () => CustomQueryInterface<infer User extends UserStruct>\n >\n ? User\n : SendbirdUser,\n>(\n sdk: SendbirdChatSDK,\n options?: UseUserListOptions<QueriedUser>,\n): UseUserListReturn<QueriedUser> => {\n const query = useRef<CustomQueryInterface<QueriedUser>>();\n\n const [error, setError] = useState<unknown>(null);\n const [loading, setLoading] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n\n const [users, setUsers] = useState<QueriedUser[]>([]);\n const sortedUsers = useMemo((): QueriedUser[] => {\n if (options?.sortComparator) return users.sort(options.sortComparator);\n return users;\n }, [users, options?.sortComparator]);\n\n const upsertUser = useFreshCallback((user: QueriedUser) => {\n setUsers(([...draft]) => {\n const userIdx = draft.findIndex((it) => it.userId === user.userId);\n if (userIdx > -1) draft[userIdx] = user;\n else draft.push(user);\n return draft;\n });\n });\n\n const deleteUser = useFreshCallback((userId: QueriedUser['userId']) => {\n setUsers(([...draft]) => {\n const userIdx = draft.findIndex((it) => it.userId === userId);\n if (userIdx > -1) draft.splice(userIdx, 1);\n return draft;\n });\n });\n\n const updateUsers = (users: QueriedUser[], clearPrev: boolean) => {\n if (clearPrev) setUsers(users);\n else setUsers((prev) => prev.concat(users));\n };\n\n const init = useFreshCallback(async () => {\n query.current = createUserQuery<QueriedUser>(sdk, options?.queryCreator);\n if (query.current?.hasNext) {\n const users = await query.current?.next().catch((e) => {\n Logger.error(e);\n if (e.code === SBErrorCode.UNAUTHORIZED_REQUEST) Logger.warn(SBErrorMessage.ACL);\n throw e;\n });\n updateUsers(users, true);\n }\n });\n\n useAsyncEffect(async () => {\n setLoading(true);\n setError(null);\n try {\n await init();\n } catch (e) {\n setError(e);\n setUsers([]);\n } finally {\n setLoading(false);\n }\n }, []);\n\n const refresh = useFreshCallback(async () => {\n setRefreshing(true);\n setError(null);\n try {\n await init();\n } catch (e) {\n setError(e);\n setUsers([]);\n } finally {\n setRefreshing(false);\n }\n });\n\n const next = useFreshCallback(async () => {\n if (query.current && query.current?.hasNext) {\n const nextUsers = await query.current.next().catch((e) => {\n Logger.error(e);\n if (e.code === SBErrorCode.UNAUTHORIZED_REQUEST) Logger.warn(SBErrorMessage.ACL);\n throw e;\n });\n updateUsers(nextUsers, false);\n }\n });\n\n return {\n loading,\n error,\n users: sortedUsers,\n upsertUser,\n deleteUser,\n next,\n refreshing,\n refresh,\n };\n};\n"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["_react","require","_uikitUtils","createUserQuery","sdk","queryCreator","createApplicationUserListQuery","useUserList","options","query","useRef","error","setError","useState","loading","setLoading","refreshing","setRefreshing","users","setUsers","sortedUsers","useMemo","sortComparator","sort","upsertUser","useFreshCallback","user","_ref","draft","userIdx","findIndex","it","userId","push","deleteUser","_ref2","splice","updateUsers","clearPrev","prev","concat","init","_query$current","current","hasNext","_query$current2","next","catch","e","Logger","code","SBErrorCode","UNAUTHORIZED_REQUEST","warn","SBErrorMessage","ACL","useAsyncEffect","refresh","_query$current3","isLoading","nextUsers","exports"],"sources":["useUserList.ts"],"sourcesContent":["import { useMemo, useRef, useState } from 'react';\n\nimport type { Optional, SendbirdChatSDK, SendbirdUser, UserStruct } from '@sendbird/uikit-utils';\nimport { Logger, SBErrorCode, SBErrorMessage, useAsyncEffect, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport type { CustomQueryInterface, UseUserListOptions, UseUserListReturn } from '../types';\n\nconst createUserQuery = <User extends UserStruct>(\n sdk: SendbirdChatSDK,\n queryCreator?: UseUserListOptions<User>['queryCreator'],\n) => {\n if (queryCreator) return queryCreator();\n // In order to use the API, the option must be turned on in the dashboard.\n return sdk.createApplicationUserListQuery() as unknown as CustomQueryInterface<User>;\n};\n\n/**\n * Get user list from query.\n * default query uses 'instance.createApplicationUserListQuery'\n * The response type of hook is depends on return type of 'query.next()'\n *\n * You can call hook with your custom query using {@link CustomQuery}\n * Or you can create your 'CustomQueryClass' implemented {@link CustomQueryInterface}'\n *\n * ```example\n * const { users } = useUserList(sdk, {\n * queryCreator: () => {\n * const friendQuery = sdk.createFriendListQuery();\n * return new CustomQuery({\n * next: () => friendQuery.next(),\n * isLoading: () => friendQuery.isLoading,\n * hasNext: () => friendQuery.hasMore,\n * });\n * }\n * })\n * ```\n * */\nexport const useUserList = <\n Options extends UseUserListOptions<UserStruct>,\n QueriedUser extends UserStruct = Options['queryCreator'] extends Optional<\n () => CustomQueryInterface<infer User extends UserStruct>\n >\n ? User\n : SendbirdUser,\n>(\n sdk: SendbirdChatSDK,\n options?: UseUserListOptions<QueriedUser>,\n): UseUserListReturn<QueriedUser> => {\n const query = useRef<CustomQueryInterface<QueriedUser>>();\n\n const [error, setError] = useState<unknown>(null);\n const [loading, setLoading] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n\n const [users, setUsers] = useState<QueriedUser[]>([]);\n const sortedUsers = useMemo((): QueriedUser[] => {\n if (options?.sortComparator) return users.sort(options.sortComparator);\n return users;\n }, [users, options?.sortComparator]);\n\n const upsertUser = useFreshCallback((user: QueriedUser) => {\n setUsers(([...draft]) => {\n const userIdx = draft.findIndex((it) => it.userId === user.userId);\n if (userIdx > -1) draft[userIdx] = user;\n else draft.push(user);\n return draft;\n });\n });\n\n const deleteUser = useFreshCallback((userId: QueriedUser['userId']) => {\n setUsers(([...draft]) => {\n const userIdx = draft.findIndex((it) => it.userId === userId);\n if (userIdx > -1) draft.splice(userIdx, 1);\n return draft;\n });\n });\n\n const updateUsers = (users: QueriedUser[], clearPrev: boolean) => {\n if (clearPrev) setUsers(users);\n else setUsers((prev) => prev.concat(users));\n };\n\n const init = useFreshCallback(async () => {\n query.current = createUserQuery<QueriedUser>(sdk, options?.queryCreator);\n if (query.current?.hasNext) {\n const users = await query.current?.next().catch((e) => {\n Logger.error(e);\n if (e.code === SBErrorCode.UNAUTHORIZED_REQUEST) Logger.warn(SBErrorMessage.ACL);\n throw e;\n });\n updateUsers(users, true);\n }\n });\n\n useAsyncEffect(async () => {\n setLoading(true);\n setError(null);\n try {\n await init();\n } catch (e) {\n setError(e);\n setUsers([]);\n } finally {\n setLoading(false);\n }\n }, []);\n\n const refresh = useFreshCallback(async () => {\n setRefreshing(true);\n setError(null);\n try {\n await init();\n } catch (e) {\n setError(e);\n setUsers([]);\n } finally {\n setRefreshing(false);\n }\n });\n\n const next = useFreshCallback(async () => {\n if (query.current && query.current?.hasNext && !query.current.isLoading) {\n const nextUsers = await query.current.next().catch((e) => {\n Logger.error(e);\n if (e.code === SBErrorCode.UNAUTHORIZED_REQUEST) Logger.warn(SBErrorMessage.ACL);\n throw e;\n });\n updateUsers(nextUsers, false);\n }\n });\n\n return {\n loading,\n error,\n users: sortedUsers,\n upsertUser,\n deleteUser,\n next,\n refreshing,\n refresh,\n };\n};\n"],"mappings":"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"}
|
|
@@ -50,18 +50,14 @@ export const useGroupChannelMessagesWithCollection = (sdk, channel, userId, opti
|
|
|
50
50
|
updateLoading,
|
|
51
51
|
updateRefreshing
|
|
52
52
|
} = useChannelMessagesReducer(options === null || options === void 0 ? void 0 : options.sortComparator);
|
|
53
|
-
const channelMarkAsRead =
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
63
|
-
} catch (e) {
|
|
64
|
-
Logger.warn('[useGroupChannelMessagesWithCollection/channelMarkAsRead]', e);
|
|
53
|
+
const channelMarkAsRead = source => {
|
|
54
|
+
switch (source) {
|
|
55
|
+
case CollectionEventSource.EVENT_MESSAGE_RECEIVED:
|
|
56
|
+
case CollectionEventSource.EVENT_MESSAGE_SENT_SUCCESS:
|
|
57
|
+
case CollectionEventSource.SYNC_MESSAGE_FILL:
|
|
58
|
+
case undefined:
|
|
59
|
+
confirmAndMarkAsRead([channel]);
|
|
60
|
+
break;
|
|
65
61
|
}
|
|
66
62
|
};
|
|
67
63
|
const updateNewMessagesReceived = (source, messages) => {
|
|
@@ -91,7 +87,7 @@ export const useGroupChannelMessagesWithCollection = (sdk, channel, userId, opti
|
|
|
91
87
|
if (isNotEmpty(pendingMessages)) updateMessages(pendingMessages, false, (_sdk$currentUser3 = sdk.currentUser) === null || _sdk$currentUser3 === void 0 ? void 0 : _sdk$currentUser3.userId);
|
|
92
88
|
if (isNotEmpty(failedMessages)) updateMessages(failedMessages, false, (_sdk$currentUser4 = sdk.currentUser) === null || _sdk$currentUser4 === void 0 ? void 0 : _sdk$currentUser4.userId);
|
|
93
89
|
};
|
|
94
|
-
const init = useFreshCallback(
|
|
90
|
+
const init = useFreshCallback((startingPoint, limit, callback) => {
|
|
95
91
|
var _collectionRef$curren, _sdk$currentUser5, _collectionRef$curren2;
|
|
96
92
|
if (collectionRef.current) (_collectionRef$curren = collectionRef.current) === null || _collectionRef$curren === void 0 ? void 0 : _collectionRef$curren.dispose();
|
|
97
93
|
channelMarkAsRead();
|
package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","CollectionEventSource","MessageCollectionInitPolicy","MessageFilter","Logger","confirmAndMarkAsRead","isDifferentChannel","isMyMessage","isSendableMessage","useForceUpdate","useFreshCallback","useUniqHandlerId","useChannelHandler","useChannelMessagesReducer","MESSAGE_LIMIT","DEFAULT","SEARCH","createMessageCollection","channel","limit","options","collectionCreator","startingPoint","filter","replyType","isNotEmpty","arr","length","shouldUseSearchLimit","Date","now","useGroupChannelMessagesWithCollection","sdk","userId","initialStartingPoint","Number","MAX_SAFE_INTEGER","initialLimit","forceUpdate","collectionRef","collectionInitializedRef","handlerId","loading","refreshing","messages","newMessages","updateMessages","updateNewMessages","deleteNewMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAsRead","source","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT_SUCCESS","SYNC_MESSAGE_FILL","undefined","e","warn","updateNewMessagesReceived","incomingMessages","it","_sdk$currentUser","currentUser","_options$shouldCountN","_sdk$currentUser2","_options$onMessagesRe","shouldCountNewMessages","call","onMessagesReceived","updateUnsentMessages","_sdk$currentUser3","_sdk$currentUser4","pendingMessages","failedMessages","current","init","callback","_collectionRef$curren","_sdk$currentUser5","_collectionRef$curren2","dispose","setMessageCollectionHandler","onMessagesAdded","ctx","__","_sdk$currentUser6","onMessagesUpdated","_sdk$currentUser7","EVENT_MESSAGE_UPDATED","_options$onMessagesUp","onMessagesDeleted","_","___","msgIds","map","messageId","reqIds","reqId","onChannelDeleted","_options$onChannelDel","onChannelUpdated","eventChannel","isGroupChannel","onHugeGapDetected","initialize","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","error","_sdk$currentUser8","debug","onApiResult","_sdk$currentUser9","_options$onMessagesRe2","onUserBanned","bannedUser","_sdk$currentUser10","_options$onChannelDel2","setTimeout","url","_collectionRef$curren3","refresh","prev","_collectionRef$curren4","hasPrevious","_collectionRef$curren5","_sdk$currentUser11","list","loadPrevious","hasPrev","next","_collectionRef$curren6","hasNext","_collectionRef$curren7","_sdk$currentUser12","fetchedList","loadNext","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser13","onSucceeded","sentMessage","_sdk$currentUser14","onFailed","failedMessage","_sdk$currentUser15","sendFileMessage","isFileMessage","_sdk$currentUser16","_sdk$currentUser17","_sdk$currentUser18","updateUserMessage","_sdk$currentUser19","updatedMessage","updateFileMessage","_sdk$currentUser20","resendMessage","_sdk$currentUser21","resentMessage","resendUserMessage","resendFileMessage","deleteMessage","message","sendingStatus","_collectionRef$curren8","removeFailedMessage","resetNewMessages","_sdk$currentUser22","resetWithStartingPoint","_sdk$currentUser23"],"sources":["useGroupChannelMessagesWithCollection.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { CollectionEventSource } from '@sendbird/chat';\nimport { MessageCollectionInitPolicy, MessageFilter } from '@sendbird/chat/groupChannel';\nimport type { SendbirdFileMessage, SendbirdGroupChannel, SendbirdMessageCollection } from '@sendbird/uikit-utils';\nimport {\n Logger,\n SendbirdBaseMessage,\n confirmAndMarkAsRead,\n isDifferentChannel,\n isMyMessage,\n isSendableMessage,\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 MESSAGE_LIMIT = {\n DEFAULT: 50,\n SEARCH: 20,\n};\n\nconst createMessageCollection = (\n channel: SendbirdGroupChannel,\n limit: number,\n options: UseGroupChannelMessagesOptions,\n) => {\n if (options?.collectionCreator) return options?.collectionCreator({ startingPoint: options?.startingPoint });\n\n const filter = new MessageFilter();\n if (options.replyType) filter.replyType = options.replyType;\n\n return channel.createMessageCollection({ filter, limit, startingPoint: options?.startingPoint });\n};\n\nfunction isNotEmpty(arr?: unknown[]): arr is unknown[] {\n if (!arr) return false;\n return arr.length !== 0;\n}\n\nfunction shouldUseSearchLimit(startingPoint: number) {\n return startingPoint < Date.now();\n}\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the '@sendbird/uikit-tools' package.\n * */\nexport const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const initialStartingPoint = options?.startingPoint ?? Number.MAX_SAFE_INTEGER;\n const initialLimit = shouldUseSearchLimit(initialStartingPoint) ? MESSAGE_LIMIT.SEARCH : MESSAGE_LIMIT.DEFAULT;\n\n const forceUpdate = useForceUpdate();\n const collectionRef = useRef<SendbirdMessageCollection>();\n const collectionInitializedRef = useRef(false);\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithCollection');\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n updateNewMessages,\n deleteNewMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const channelMarkAsRead = async (source?: CollectionEventSource) => {\n try {\n switch (source) {\n case CollectionEventSource.EVENT_MESSAGE_RECEIVED:\n case CollectionEventSource.EVENT_MESSAGE_SENT_SUCCESS:\n case CollectionEventSource.SYNC_MESSAGE_FILL:\n case undefined:\n await confirmAndMarkAsRead([channel]);\n break;\n }\n } catch (e) {\n Logger.warn('[useGroupChannelMessagesWithCollection/channelMarkAsRead]', e);\n }\n };\n const updateNewMessagesReceived = (source: CollectionEventSource, messages: SendbirdBaseMessage[]) => {\n const incomingMessages = messages.filter((it) => !isMyMessage(it, sdk.currentUser?.userId));\n if (incomingMessages.length > 0) {\n switch (source) {\n case CollectionEventSource.EVENT_MESSAGE_RECEIVED:\n case CollectionEventSource.SYNC_MESSAGE_FILL: {\n if (options?.shouldCountNewMessages?.()) updateNewMessages(incomingMessages, false, sdk.currentUser?.userId);\n options?.onMessagesReceived?.(incomingMessages);\n break;\n }\n }\n }\n };\n\n const updateUnsentMessages = () => {\n const { pendingMessages, failedMessages } = collectionRef.current ?? {};\n if (isNotEmpty(pendingMessages)) updateMessages(pendingMessages, false, sdk.currentUser?.userId);\n if (isNotEmpty(failedMessages)) updateMessages(failedMessages, false, sdk.currentUser?.userId);\n };\n\n const init = useFreshCallback(async (startingPoint: number, limit: number, callback?: () => void) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n channelMarkAsRead();\n updateNewMessages([], true, sdk.currentUser?.userId);\n\n collectionInitializedRef.current = false;\n collectionRef.current = createMessageCollection(channel, limit, {\n ...options,\n startingPoint,\n });\n\n collectionRef.current?.setMessageCollectionHandler({\n onMessagesAdded: (ctx, __, messages) => {\n channelMarkAsRead(ctx.source);\n updateNewMessagesReceived(ctx.source, messages);\n\n updateMessages(messages, false, sdk.currentUser?.userId);\n },\n onMessagesUpdated: (ctx, __, messages) => {\n channelMarkAsRead(ctx.source);\n updateNewMessagesReceived(ctx.source, messages); // NOTE: admin message is not added via onMessagesAdded handler, not checked yet is this a bug.\n\n updateMessages(messages, false, sdk.currentUser?.userId);\n\n if (ctx.source === CollectionEventSource.EVENT_MESSAGE_UPDATED) {\n options?.onMessagesUpdated?.(messages);\n }\n },\n onMessagesDeleted: (_, __, ___, messages) => {\n const msgIds = messages.map((it) => it.messageId);\n const reqIds = messages.filter(isSendableMessage).map((it) => it.reqId);\n deleteMessages(msgIds, reqIds);\n deleteNewMessages(msgIds, reqIds);\n },\n onChannelDeleted: () => {\n options?.onChannelDeleted?.();\n },\n onChannelUpdated: (_, eventChannel) => {\n if (eventChannel.isGroupChannel() && !isDifferentChannel(eventChannel, channel)) {\n forceUpdate();\n }\n },\n onHugeGapDetected: () => {\n init(Number.MAX_SAFE_INTEGER, MESSAGE_LIMIT.DEFAULT);\n },\n });\n\n collectionRef.current\n .initialize(MessageCollectionInitPolicy.CACHE_AND_REPLACE_BY_API)\n .onCacheResult((err, messages) => {\n if (err) sdk.isCacheEnabled && Logger.error('[useGroupChannelMessagesWithCollection/onCacheResult]', err);\n else if (messages) {\n Logger.debug('[useGroupChannelMessagesWithCollection/onCacheResult]', 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser?.userId);\n updateUnsentMessages();\n }\n\n callback?.();\n })\n .onApiResult((err, messages) => {\n if (err) Logger.warn('[useGroupChannelMessagesWithCollection/onApiResult]', err);\n else if (messages) {\n Logger.debug('[useGroupChannelMessagesWithCollection/onApiResult]', 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser?.userId);\n if (!options?.startingPoint) options?.onMessagesReceived?.(messages);\n if (sdk.isCacheEnabled) updateUnsentMessages();\n }\n\n collectionInitializedRef.current = true;\n callback?.();\n });\n });\n\n useChannelHandler(sdk, handlerId, {\n onUserBanned(channel, bannedUser) {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n if (bannedUser.userId === sdk.currentUser?.userId) {\n options?.onChannelDeleted?.();\n } else {\n forceUpdate();\n }\n }\n },\n });\n\n useEffect(() => {\n // NOTE: Cache read is heavy task, and it prevents smooth ui transition\n setTimeout(async () => {\n updateLoading(true);\n init(initialStartingPoint, initialLimit, () => updateLoading(false));\n }, 0);\n }, [channel.url, userId, options?.replyType]);\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n init(Number.MAX_SAFE_INTEGER, MESSAGE_LIMIT.DEFAULT, () => updateRefreshing(false));\n });\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useFreshCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasPrevious) {\n try {\n const list = await collectionRef.current?.loadPrevious();\n updateMessages(list, false, sdk.currentUser?.userId);\n } catch {}\n }\n });\n\n const hasPrev: ReturnType<UseGroupChannelMessages>['hasPrev'] = useFreshCallback(() => {\n if (collectionInitializedRef.current && collectionRef.current) {\n return collectionRef.current.hasPrevious;\n } else {\n return false;\n }\n });\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasNext) {\n try {\n const fetchedList = await collectionRef.current?.loadNext();\n updateMessages(fetchedList, false, sdk.currentUser?.userId);\n } catch {}\n }\n });\n\n const hasNext: ReturnType<UseGroupChannelMessages>['hasNext'] = useFreshCallback(() => {\n if (collectionInitializedRef.current && collectionRef.current) {\n return collectionRef.current.hasNext;\n } else {\n return false;\n }\n });\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 onPending?.(pendingMessage);\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\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 as SendbirdFileMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\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 resentMessage = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (resentMessage) updateMessages([resentMessage], 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 try {\n await collectionRef.current?.removeFailedMessage(message.reqId);\n } finally {\n deleteMessages([message.messageId], [message.reqId]);\n }\n }\n });\n const resetNewMessages: ReturnType<UseGroupChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser?.userId);\n });\n const resetWithStartingPoint: ReturnType<UseGroupChannelMessages>['resetWithStartingPoint'] = useFreshCallback(\n (startingPoint, callback) => {\n const limit = shouldUseSearchLimit(startingPoint) ? MESSAGE_LIMIT.SEARCH : MESSAGE_LIMIT.DEFAULT;\n updateLoading(true);\n updateMessages([], true, sdk.currentUser?.userId);\n init(startingPoint, limit, () => {\n updateLoading(false);\n callback?.();\n });\n },\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n next,\n hasNext,\n prev,\n hasPrev,\n newMessages,\n resetNewMessages,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","CollectionEventSource","MessageCollectionInitPolicy","MessageFilter","Logger","confirmAndMarkAsRead","isDifferentChannel","isMyMessage","isSendableMessage","useForceUpdate","useFreshCallback","useUniqHandlerId","useChannelHandler","useChannelMessagesReducer","MESSAGE_LIMIT","DEFAULT","SEARCH","createMessageCollection","channel","limit","options","collectionCreator","startingPoint","filter","replyType","isNotEmpty","arr","length","shouldUseSearchLimit","Date","now","useGroupChannelMessagesWithCollection","sdk","userId","initialStartingPoint","Number","MAX_SAFE_INTEGER","initialLimit","forceUpdate","collectionRef","collectionInitializedRef","handlerId","loading","refreshing","messages","newMessages","updateMessages","updateNewMessages","deleteNewMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAsRead","source","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT_SUCCESS","SYNC_MESSAGE_FILL","undefined","updateNewMessagesReceived","incomingMessages","it","_sdk$currentUser","currentUser","_options$shouldCountN","_sdk$currentUser2","_options$onMessagesRe","shouldCountNewMessages","call","onMessagesReceived","updateUnsentMessages","_sdk$currentUser3","_sdk$currentUser4","pendingMessages","failedMessages","current","init","callback","_collectionRef$curren","_sdk$currentUser5","_collectionRef$curren2","dispose","setMessageCollectionHandler","onMessagesAdded","ctx","__","_sdk$currentUser6","onMessagesUpdated","_sdk$currentUser7","EVENT_MESSAGE_UPDATED","_options$onMessagesUp","onMessagesDeleted","_","___","msgIds","map","messageId","reqIds","reqId","onChannelDeleted","_options$onChannelDel","onChannelUpdated","eventChannel","isGroupChannel","onHugeGapDetected","initialize","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","error","_sdk$currentUser8","debug","onApiResult","warn","_sdk$currentUser9","_options$onMessagesRe2","onUserBanned","bannedUser","_sdk$currentUser10","_options$onChannelDel2","setTimeout","url","_collectionRef$curren3","refresh","prev","_collectionRef$curren4","hasPrevious","_collectionRef$curren5","_sdk$currentUser11","list","loadPrevious","hasPrev","next","_collectionRef$curren6","hasNext","_collectionRef$curren7","_sdk$currentUser12","fetchedList","loadNext","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser13","onSucceeded","sentMessage","_sdk$currentUser14","onFailed","failedMessage","_sdk$currentUser15","sendFileMessage","isFileMessage","_sdk$currentUser16","_sdk$currentUser17","_sdk$currentUser18","updateUserMessage","_sdk$currentUser19","updatedMessage","updateFileMessage","_sdk$currentUser20","resendMessage","_sdk$currentUser21","resentMessage","resendUserMessage","resendFileMessage","deleteMessage","message","sendingStatus","_collectionRef$curren8","removeFailedMessage","resetNewMessages","_sdk$currentUser22","resetWithStartingPoint","_sdk$currentUser23"],"sources":["useGroupChannelMessagesWithCollection.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { CollectionEventSource } from '@sendbird/chat';\nimport { MessageCollectionInitPolicy, MessageFilter } from '@sendbird/chat/groupChannel';\nimport type { SendbirdFileMessage, SendbirdGroupChannel, SendbirdMessageCollection } from '@sendbird/uikit-utils';\nimport {\n Logger,\n SendbirdBaseMessage,\n confirmAndMarkAsRead,\n isDifferentChannel,\n isMyMessage,\n isSendableMessage,\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 MESSAGE_LIMIT = {\n DEFAULT: 50,\n SEARCH: 20,\n};\n\nconst createMessageCollection = (\n channel: SendbirdGroupChannel,\n limit: number,\n options: UseGroupChannelMessagesOptions,\n) => {\n if (options?.collectionCreator) return options?.collectionCreator({ startingPoint: options?.startingPoint });\n\n const filter = new MessageFilter();\n if (options.replyType) filter.replyType = options.replyType;\n\n return channel.createMessageCollection({ filter, limit, startingPoint: options?.startingPoint });\n};\n\nfunction isNotEmpty(arr?: unknown[]): arr is unknown[] {\n if (!arr) return false;\n return arr.length !== 0;\n}\n\nfunction shouldUseSearchLimit(startingPoint: number) {\n return startingPoint < Date.now();\n}\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the '@sendbird/uikit-tools' package.\n * */\nexport const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const initialStartingPoint = options?.startingPoint ?? Number.MAX_SAFE_INTEGER;\n const initialLimit = shouldUseSearchLimit(initialStartingPoint) ? MESSAGE_LIMIT.SEARCH : MESSAGE_LIMIT.DEFAULT;\n\n const forceUpdate = useForceUpdate();\n const collectionRef = useRef<SendbirdMessageCollection>();\n const collectionInitializedRef = useRef(false);\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithCollection');\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n updateNewMessages,\n deleteNewMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const channelMarkAsRead = (source?: CollectionEventSource) => {\n switch (source) {\n case CollectionEventSource.EVENT_MESSAGE_RECEIVED:\n case CollectionEventSource.EVENT_MESSAGE_SENT_SUCCESS:\n case CollectionEventSource.SYNC_MESSAGE_FILL:\n case undefined:\n confirmAndMarkAsRead([channel]);\n break;\n }\n };\n const updateNewMessagesReceived = (source: CollectionEventSource, messages: SendbirdBaseMessage[]) => {\n const incomingMessages = messages.filter((it) => !isMyMessage(it, sdk.currentUser?.userId));\n if (incomingMessages.length > 0) {\n switch (source) {\n case CollectionEventSource.EVENT_MESSAGE_RECEIVED:\n case CollectionEventSource.SYNC_MESSAGE_FILL: {\n if (options?.shouldCountNewMessages?.()) updateNewMessages(incomingMessages, false, sdk.currentUser?.userId);\n options?.onMessagesReceived?.(incomingMessages);\n break;\n }\n }\n }\n };\n\n const updateUnsentMessages = () => {\n const { pendingMessages, failedMessages } = collectionRef.current ?? {};\n if (isNotEmpty(pendingMessages)) updateMessages(pendingMessages, false, sdk.currentUser?.userId);\n if (isNotEmpty(failedMessages)) updateMessages(failedMessages, false, sdk.currentUser?.userId);\n };\n\n const init = useFreshCallback((startingPoint: number, limit: number, callback?: () => void) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n channelMarkAsRead();\n updateNewMessages([], true, sdk.currentUser?.userId);\n\n collectionInitializedRef.current = false;\n collectionRef.current = createMessageCollection(channel, limit, {\n ...options,\n startingPoint,\n });\n\n collectionRef.current?.setMessageCollectionHandler({\n onMessagesAdded: (ctx, __, messages) => {\n channelMarkAsRead(ctx.source);\n updateNewMessagesReceived(ctx.source, messages);\n\n updateMessages(messages, false, sdk.currentUser?.userId);\n },\n onMessagesUpdated: (ctx, __, messages) => {\n channelMarkAsRead(ctx.source);\n updateNewMessagesReceived(ctx.source, messages); // NOTE: admin message is not added via onMessagesAdded handler, not checked yet is this a bug.\n\n updateMessages(messages, false, sdk.currentUser?.userId);\n\n if (ctx.source === CollectionEventSource.EVENT_MESSAGE_UPDATED) {\n options?.onMessagesUpdated?.(messages);\n }\n },\n onMessagesDeleted: (_, __, ___, messages) => {\n const msgIds = messages.map((it) => it.messageId);\n const reqIds = messages.filter(isSendableMessage).map((it) => it.reqId);\n deleteMessages(msgIds, reqIds);\n deleteNewMessages(msgIds, reqIds);\n },\n onChannelDeleted: () => {\n options?.onChannelDeleted?.();\n },\n onChannelUpdated: (_, eventChannel) => {\n if (eventChannel.isGroupChannel() && !isDifferentChannel(eventChannel, channel)) {\n forceUpdate();\n }\n },\n onHugeGapDetected: () => {\n init(Number.MAX_SAFE_INTEGER, MESSAGE_LIMIT.DEFAULT);\n },\n });\n\n collectionRef.current\n .initialize(MessageCollectionInitPolicy.CACHE_AND_REPLACE_BY_API)\n .onCacheResult((err, messages) => {\n if (err) sdk.isCacheEnabled && Logger.error('[useGroupChannelMessagesWithCollection/onCacheResult]', err);\n else if (messages) {\n Logger.debug('[useGroupChannelMessagesWithCollection/onCacheResult]', 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser?.userId);\n updateUnsentMessages();\n }\n\n callback?.();\n })\n .onApiResult((err, messages) => {\n if (err) Logger.warn('[useGroupChannelMessagesWithCollection/onApiResult]', err);\n else if (messages) {\n Logger.debug('[useGroupChannelMessagesWithCollection/onApiResult]', 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser?.userId);\n if (!options?.startingPoint) options?.onMessagesReceived?.(messages);\n if (sdk.isCacheEnabled) updateUnsentMessages();\n }\n\n collectionInitializedRef.current = true;\n callback?.();\n });\n });\n\n useChannelHandler(sdk, handlerId, {\n onUserBanned(channel, bannedUser) {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n if (bannedUser.userId === sdk.currentUser?.userId) {\n options?.onChannelDeleted?.();\n } else {\n forceUpdate();\n }\n }\n },\n });\n\n useEffect(() => {\n // NOTE: Cache read is heavy task, and it prevents smooth ui transition\n setTimeout(async () => {\n updateLoading(true);\n init(initialStartingPoint, initialLimit, () => updateLoading(false));\n }, 0);\n }, [channel.url, userId, options?.replyType]);\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n init(Number.MAX_SAFE_INTEGER, MESSAGE_LIMIT.DEFAULT, () => updateRefreshing(false));\n });\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useFreshCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasPrevious) {\n try {\n const list = await collectionRef.current?.loadPrevious();\n updateMessages(list, false, sdk.currentUser?.userId);\n } catch {}\n }\n });\n\n const hasPrev: ReturnType<UseGroupChannelMessages>['hasPrev'] = useFreshCallback(() => {\n if (collectionInitializedRef.current && collectionRef.current) {\n return collectionRef.current.hasPrevious;\n } else {\n return false;\n }\n });\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasNext) {\n try {\n const fetchedList = await collectionRef.current?.loadNext();\n updateMessages(fetchedList, false, sdk.currentUser?.userId);\n } catch {}\n }\n });\n\n const hasNext: ReturnType<UseGroupChannelMessages>['hasNext'] = useFreshCallback(() => {\n if (collectionInitializedRef.current && collectionRef.current) {\n return collectionRef.current.hasNext;\n } else {\n return false;\n }\n });\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 onPending?.(pendingMessage);\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\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 as SendbirdFileMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\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 resentMessage = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (resentMessage) updateMessages([resentMessage], 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 try {\n await collectionRef.current?.removeFailedMessage(message.reqId);\n } finally {\n deleteMessages([message.messageId], [message.reqId]);\n }\n }\n });\n const resetNewMessages: ReturnType<UseGroupChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser?.userId);\n });\n const resetWithStartingPoint: ReturnType<UseGroupChannelMessages>['resetWithStartingPoint'] = useFreshCallback(\n (startingPoint, callback) => {\n const limit = shouldUseSearchLimit(startingPoint) ? MESSAGE_LIMIT.SEARCH : MESSAGE_LIMIT.DEFAULT;\n updateLoading(true);\n updateMessages([], true, sdk.currentUser?.userId);\n init(startingPoint, limit, () => {\n updateLoading(false);\n callback?.();\n });\n },\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n next,\n hasNext,\n prev,\n hasPrev,\n newMessages,\n resetNewMessages,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint,\n };\n};\n"],"mappings":"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"}
|
|
@@ -31,17 +31,10 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
31
31
|
updateLoading,
|
|
32
32
|
updateRefreshing
|
|
33
33
|
} = useChannelMessagesReducer(options === null || options === void 0 ? void 0 : options.sortComparator);
|
|
34
|
-
const channelMarkAsRead = async () => {
|
|
35
|
-
try {
|
|
36
|
-
await confirmAndMarkAsRead([channel]);
|
|
37
|
-
} catch (e) {
|
|
38
|
-
Logger.warn('[useGroupChannelMessagesWithQuery/channelMarkAsRead]', e);
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
34
|
const init = useFreshCallback(async uid => {
|
|
42
35
|
if (uid) {
|
|
43
36
|
var _sdk$currentUser, _queryRef$current;
|
|
44
|
-
|
|
37
|
+
confirmAndMarkAsRead([channel]);
|
|
45
38
|
updateNewMessages([], true, (_sdk$currentUser = sdk.currentUser) === null || _sdk$currentUser === void 0 ? void 0 : _sdk$currentUser.userId);
|
|
46
39
|
queryRef.current = createMessageQuery(channel, options);
|
|
47
40
|
if ((_queryRef$current = queryRef.current) !== null && _queryRef$current !== void 0 && _queryRef$current.hasNext) {
|
|
@@ -62,7 +55,7 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
62
55
|
var _sdk$currentUser3, _sdk$currentUser4, _options$shouldCountN;
|
|
63
56
|
if (isDifferentChannel(channel, eventChannel)) return;
|
|
64
57
|
if (isMyMessage(message, (_sdk$currentUser3 = sdk.currentUser) === null || _sdk$currentUser3 === void 0 ? void 0 : _sdk$currentUser3.userId)) return;
|
|
65
|
-
|
|
58
|
+
confirmAndMarkAsRead([channel]);
|
|
66
59
|
updateMessages([message], false, (_sdk$currentUser4 = sdk.currentUser) === null || _sdk$currentUser4 === void 0 ? void 0 : _sdk$currentUser4.userId);
|
|
67
60
|
if (options !== null && options !== void 0 && (_options$shouldCountN = options.shouldCountNewMessages) !== null && _options$shouldCountN !== void 0 && _options$shouldCountN.call(options)) {
|
|
68
61
|
var _sdk$currentUser5;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useRef","ASYNC_NOOP","Logger","confirmAndMarkAsRead","isDifferentChannel","isMyMessage","useAsyncEffect","useForceUpdate","useFreshCallback","useUniqHandlerId","useChannelHandler","useChannelMessagesReducer","createMessageQuery","channel","options","queryCreator","params","limit","reverse","replyType","createPreviousMessageListQuery","useGroupChannelMessagesWithQuery","sdk","userId","queryRef","handlerId","forceUpdate","loading","refreshing","messages","newMessages","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAsRead","e","warn","init","uid","_sdk$currentUser","_queryRef$current","currentUser","current","hasNext","_queryRef$current2","_sdk$currentUser2","list","load","channelUpdater","isGroupChannel","onMessageReceived","eventChannel","message","_sdk$currentUser3","_sdk$currentUser4","_options$shouldCountN","shouldCountNewMessages","call","_sdk$currentUser5","onMessagesReceived","onMessageUpdated","_sdk$currentUser6","_sdk$currentUser7","onMessageDeleted","messageId","onReactionUpdated","reactionEvent","_sdk$currentUser8","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","_sdk$currentUser9","_options$onChannelDel2","refresh","prev","_queryRef$current3","_queryRef$current4","_sdk$currentUser10","hasPrev","_queryRef$current5","next","sendUserMessage","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser11","onSucceeded","sentMessage","_sdk$currentUser12","onFailed","err","failedMessage","_sdk$currentUser13","sendFileMessage","isFileMessage","_sdk$currentUser14","_sdk$currentUser15","_sdk$currentUser16","updateUserMessage","_sdk$currentUser17","updatedMessage","updateFileMessage","_sdk$currentUser18","resendMessage","_sdk$currentUser19","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","_sdk$currentUser20","resetWithStartingPoint"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { BaseMessage, PreviousMessageListQueryParams } from '@sendbird/chat/message';\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 = (channel: SendbirdGroupChannel, options?: UseGroupChannelMessagesOptions) => {\n if (options?.queryCreator) return options.queryCreator();\n\n const params: PreviousMessageListQueryParams = { limit: 100, reverse: true };\n if (options?.replyType) params.replyType = options.replyType;\n\n return channel.createPreviousMessageListQuery(params);\n};\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the '@sendbird/uikit-tools' package.\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);\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 if (message) updateMessages([message as BaseMessage], 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, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\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, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\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};\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","options","queryCreator","params","limit","reverse","replyType","createPreviousMessageListQuery","useGroupChannelMessagesWithQuery","sdk","userId","queryRef","handlerId","forceUpdate","loading","refreshing","messages","newMessages","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","sortComparator","init","uid","_sdk$currentUser","_queryRef$current","currentUser","current","hasNext","_queryRef$current2","_sdk$currentUser2","list","load","channelUpdater","isGroupChannel","onMessageReceived","eventChannel","message","_sdk$currentUser3","_sdk$currentUser4","_options$shouldCountN","shouldCountNewMessages","call","_sdk$currentUser5","onMessagesReceived","onMessageUpdated","_sdk$currentUser6","_sdk$currentUser7","onMessageDeleted","messageId","onReactionUpdated","reactionEvent","_sdk$currentUser8","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","_sdk$currentUser9","_options$onChannelDel2","refresh","prev","_queryRef$current3","_queryRef$current4","_sdk$currentUser10","hasPrev","_queryRef$current5","next","sendUserMessage","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser11","onSucceeded","sentMessage","_sdk$currentUser12","onFailed","err","failedMessage","_sdk$currentUser13","sendFileMessage","isFileMessage","_sdk$currentUser14","_sdk$currentUser15","_sdk$currentUser16","updateUserMessage","_sdk$currentUser17","updatedMessage","updateFileMessage","_sdk$currentUser18","resendMessage","_sdk$currentUser19","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","_sdk$currentUser20","resetWithStartingPoint","warn"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { BaseMessage, PreviousMessageListQueryParams } from '@sendbird/chat/message';\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 = (channel: SendbirdGroupChannel, options?: UseGroupChannelMessagesOptions) => {\n if (options?.queryCreator) return options.queryCreator();\n\n const params: PreviousMessageListQueryParams = { limit: 100, reverse: true };\n if (options?.replyType) params.replyType = options.replyType;\n\n return channel.createPreviousMessageListQuery(params);\n};\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the '@sendbird/uikit-tools' package.\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 init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n confirmAndMarkAsRead([channel]);\n updateNewMessages([], true, sdk.currentUser?.userId);\n\n queryRef.current = createMessageQuery(channel, options);\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 confirmAndMarkAsRead([channel]);\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 if (message) updateMessages([message as BaseMessage], 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, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\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, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\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};\n"],"mappings":"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"}
|
|
@@ -95,7 +95,7 @@ export const useUserList = (sdk, options) => {
|
|
|
95
95
|
});
|
|
96
96
|
const next = useFreshCallback(async () => {
|
|
97
97
|
var _query$current3;
|
|
98
|
-
if (query.current && (_query$current3 = query.current) !== null && _query$current3 !== void 0 && _query$current3.hasNext) {
|
|
98
|
+
if (query.current && (_query$current3 = query.current) !== null && _query$current3 !== void 0 && _query$current3.hasNext && !query.current.isLoading) {
|
|
99
99
|
const nextUsers = await query.current.next().catch(e => {
|
|
100
100
|
Logger.error(e);
|
|
101
101
|
if (e.code === SBErrorCode.UNAUTHORIZED_REQUEST) Logger.warn(SBErrorMessage.ACL);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","useRef","useState","Logger","SBErrorCode","SBErrorMessage","useAsyncEffect","useFreshCallback","createUserQuery","sdk","queryCreator","createApplicationUserListQuery","useUserList","options","query","error","setError","loading","setLoading","refreshing","setRefreshing","users","setUsers","sortedUsers","sortComparator","sort","upsertUser","user","_ref","draft","userIdx","findIndex","it","userId","push","deleteUser","_ref2","splice","updateUsers","clearPrev","prev","concat","init","_query$current","current","hasNext","_query$current2","next","catch","e","code","UNAUTHORIZED_REQUEST","warn","ACL","refresh","_query$current3","nextUsers"],"sources":["useUserList.ts"],"sourcesContent":["import { useMemo, useRef, useState } from 'react';\n\nimport type { Optional, SendbirdChatSDK, SendbirdUser, UserStruct } from '@sendbird/uikit-utils';\nimport { Logger, SBErrorCode, SBErrorMessage, useAsyncEffect, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport type { CustomQueryInterface, UseUserListOptions, UseUserListReturn } from '../types';\n\nconst createUserQuery = <User extends UserStruct>(\n sdk: SendbirdChatSDK,\n queryCreator?: UseUserListOptions<User>['queryCreator'],\n) => {\n if (queryCreator) return queryCreator();\n // In order to use the API, the option must be turned on in the dashboard.\n return sdk.createApplicationUserListQuery() as unknown as CustomQueryInterface<User>;\n};\n\n/**\n * Get user list from query.\n * default query uses 'instance.createApplicationUserListQuery'\n * The response type of hook is depends on return type of 'query.next()'\n *\n * You can call hook with your custom query using {@link CustomQuery}\n * Or you can create your 'CustomQueryClass' implemented {@link CustomQueryInterface}'\n *\n * ```example\n * const { users } = useUserList(sdk, {\n * queryCreator: () => {\n * const friendQuery = sdk.createFriendListQuery();\n * return new CustomQuery({\n * next: () => friendQuery.next(),\n * isLoading: () => friendQuery.isLoading,\n * hasNext: () => friendQuery.hasMore,\n * });\n * }\n * })\n * ```\n * */\nexport const useUserList = <\n Options extends UseUserListOptions<UserStruct>,\n QueriedUser extends UserStruct = Options['queryCreator'] extends Optional<\n () => CustomQueryInterface<infer User extends UserStruct>\n >\n ? User\n : SendbirdUser,\n>(\n sdk: SendbirdChatSDK,\n options?: UseUserListOptions<QueriedUser>,\n): UseUserListReturn<QueriedUser> => {\n const query = useRef<CustomQueryInterface<QueriedUser>>();\n\n const [error, setError] = useState<unknown>(null);\n const [loading, setLoading] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n\n const [users, setUsers] = useState<QueriedUser[]>([]);\n const sortedUsers = useMemo((): QueriedUser[] => {\n if (options?.sortComparator) return users.sort(options.sortComparator);\n return users;\n }, [users, options?.sortComparator]);\n\n const upsertUser = useFreshCallback((user: QueriedUser) => {\n setUsers(([...draft]) => {\n const userIdx = draft.findIndex((it) => it.userId === user.userId);\n if (userIdx > -1) draft[userIdx] = user;\n else draft.push(user);\n return draft;\n });\n });\n\n const deleteUser = useFreshCallback((userId: QueriedUser['userId']) => {\n setUsers(([...draft]) => {\n const userIdx = draft.findIndex((it) => it.userId === userId);\n if (userIdx > -1) draft.splice(userIdx, 1);\n return draft;\n });\n });\n\n const updateUsers = (users: QueriedUser[], clearPrev: boolean) => {\n if (clearPrev) setUsers(users);\n else setUsers((prev) => prev.concat(users));\n };\n\n const init = useFreshCallback(async () => {\n query.current = createUserQuery<QueriedUser>(sdk, options?.queryCreator);\n if (query.current?.hasNext) {\n const users = await query.current?.next().catch((e) => {\n Logger.error(e);\n if (e.code === SBErrorCode.UNAUTHORIZED_REQUEST) Logger.warn(SBErrorMessage.ACL);\n throw e;\n });\n updateUsers(users, true);\n }\n });\n\n useAsyncEffect(async () => {\n setLoading(true);\n setError(null);\n try {\n await init();\n } catch (e) {\n setError(e);\n setUsers([]);\n } finally {\n setLoading(false);\n }\n }, []);\n\n const refresh = useFreshCallback(async () => {\n setRefreshing(true);\n setError(null);\n try {\n await init();\n } catch (e) {\n setError(e);\n setUsers([]);\n } finally {\n setRefreshing(false);\n }\n });\n\n const next = useFreshCallback(async () => {\n if (query.current && query.current?.hasNext) {\n const nextUsers = await query.current.next().catch((e) => {\n Logger.error(e);\n if (e.code === SBErrorCode.UNAUTHORIZED_REQUEST) Logger.warn(SBErrorMessage.ACL);\n throw e;\n });\n updateUsers(nextUsers, false);\n }\n });\n\n return {\n loading,\n error,\n users: sortedUsers,\n upsertUser,\n deleteUser,\n next,\n refreshing,\n refresh,\n };\n};\n"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["useMemo","useRef","useState","Logger","SBErrorCode","SBErrorMessage","useAsyncEffect","useFreshCallback","createUserQuery","sdk","queryCreator","createApplicationUserListQuery","useUserList","options","query","error","setError","loading","setLoading","refreshing","setRefreshing","users","setUsers","sortedUsers","sortComparator","sort","upsertUser","user","_ref","draft","userIdx","findIndex","it","userId","push","deleteUser","_ref2","splice","updateUsers","clearPrev","prev","concat","init","_query$current","current","hasNext","_query$current2","next","catch","e","code","UNAUTHORIZED_REQUEST","warn","ACL","refresh","_query$current3","isLoading","nextUsers"],"sources":["useUserList.ts"],"sourcesContent":["import { useMemo, useRef, useState } from 'react';\n\nimport type { Optional, SendbirdChatSDK, SendbirdUser, UserStruct } from '@sendbird/uikit-utils';\nimport { Logger, SBErrorCode, SBErrorMessage, useAsyncEffect, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport type { CustomQueryInterface, UseUserListOptions, UseUserListReturn } from '../types';\n\nconst createUserQuery = <User extends UserStruct>(\n sdk: SendbirdChatSDK,\n queryCreator?: UseUserListOptions<User>['queryCreator'],\n) => {\n if (queryCreator) return queryCreator();\n // In order to use the API, the option must be turned on in the dashboard.\n return sdk.createApplicationUserListQuery() as unknown as CustomQueryInterface<User>;\n};\n\n/**\n * Get user list from query.\n * default query uses 'instance.createApplicationUserListQuery'\n * The response type of hook is depends on return type of 'query.next()'\n *\n * You can call hook with your custom query using {@link CustomQuery}\n * Or you can create your 'CustomQueryClass' implemented {@link CustomQueryInterface}'\n *\n * ```example\n * const { users } = useUserList(sdk, {\n * queryCreator: () => {\n * const friendQuery = sdk.createFriendListQuery();\n * return new CustomQuery({\n * next: () => friendQuery.next(),\n * isLoading: () => friendQuery.isLoading,\n * hasNext: () => friendQuery.hasMore,\n * });\n * }\n * })\n * ```\n * */\nexport const useUserList = <\n Options extends UseUserListOptions<UserStruct>,\n QueriedUser extends UserStruct = Options['queryCreator'] extends Optional<\n () => CustomQueryInterface<infer User extends UserStruct>\n >\n ? User\n : SendbirdUser,\n>(\n sdk: SendbirdChatSDK,\n options?: UseUserListOptions<QueriedUser>,\n): UseUserListReturn<QueriedUser> => {\n const query = useRef<CustomQueryInterface<QueriedUser>>();\n\n const [error, setError] = useState<unknown>(null);\n const [loading, setLoading] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n\n const [users, setUsers] = useState<QueriedUser[]>([]);\n const sortedUsers = useMemo((): QueriedUser[] => {\n if (options?.sortComparator) return users.sort(options.sortComparator);\n return users;\n }, [users, options?.sortComparator]);\n\n const upsertUser = useFreshCallback((user: QueriedUser) => {\n setUsers(([...draft]) => {\n const userIdx = draft.findIndex((it) => it.userId === user.userId);\n if (userIdx > -1) draft[userIdx] = user;\n else draft.push(user);\n return draft;\n });\n });\n\n const deleteUser = useFreshCallback((userId: QueriedUser['userId']) => {\n setUsers(([...draft]) => {\n const userIdx = draft.findIndex((it) => it.userId === userId);\n if (userIdx > -1) draft.splice(userIdx, 1);\n return draft;\n });\n });\n\n const updateUsers = (users: QueriedUser[], clearPrev: boolean) => {\n if (clearPrev) setUsers(users);\n else setUsers((prev) => prev.concat(users));\n };\n\n const init = useFreshCallback(async () => {\n query.current = createUserQuery<QueriedUser>(sdk, options?.queryCreator);\n if (query.current?.hasNext) {\n const users = await query.current?.next().catch((e) => {\n Logger.error(e);\n if (e.code === SBErrorCode.UNAUTHORIZED_REQUEST) Logger.warn(SBErrorMessage.ACL);\n throw e;\n });\n updateUsers(users, true);\n }\n });\n\n useAsyncEffect(async () => {\n setLoading(true);\n setError(null);\n try {\n await init();\n } catch (e) {\n setError(e);\n setUsers([]);\n } finally {\n setLoading(false);\n }\n }, []);\n\n const refresh = useFreshCallback(async () => {\n setRefreshing(true);\n setError(null);\n try {\n await init();\n } catch (e) {\n setError(e);\n setUsers([]);\n } finally {\n setRefreshing(false);\n }\n });\n\n const next = useFreshCallback(async () => {\n if (query.current && query.current?.hasNext && !query.current.isLoading) {\n const nextUsers = await query.current.next().catch((e) => {\n Logger.error(e);\n if (e.code === SBErrorCode.UNAUTHORIZED_REQUEST) Logger.warn(SBErrorMessage.ACL);\n throw e;\n });\n updateUsers(nextUsers, false);\n }\n });\n\n return {\n loading,\n error,\n users: sortedUsers,\n upsertUser,\n deleteUser,\n next,\n refreshing,\n refresh,\n };\n};\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sendbird/uikit-chat-hooks",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.5",
|
|
4
4
|
"description": "A set of React hooks for integrating Sendbird chat functionality into your React app.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sendbird",
|
|
@@ -45,17 +45,17 @@
|
|
|
45
45
|
"access": "public"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@sendbird/uikit-utils": "3.7.
|
|
48
|
+
"@sendbird/uikit-utils": "3.7.5"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@sendbird/uikit-testing-tools": "3.7.
|
|
51
|
+
"@sendbird/uikit-testing-tools": "3.7.5",
|
|
52
52
|
"@types/react": "*",
|
|
53
53
|
"react": "18.2.0",
|
|
54
54
|
"react-native-builder-bob": "^0.18.0",
|
|
55
55
|
"typescript": "5.2.2"
|
|
56
56
|
},
|
|
57
57
|
"peerDependencies": {
|
|
58
|
-
"@sendbird/chat": "^4.
|
|
58
|
+
"@sendbird/chat": "^4.13.3",
|
|
59
59
|
"react": ">=16.13.1"
|
|
60
60
|
},
|
|
61
61
|
"react-native-builder-bob": {
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
]
|
|
73
73
|
]
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "5ab71ecbed6948f2e26797d3b566369580386b53"
|
|
76
76
|
}
|
|
@@ -71,18 +71,14 @@ export const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (s
|
|
|
71
71
|
updateRefreshing,
|
|
72
72
|
} = useChannelMessagesReducer(options?.sortComparator);
|
|
73
73
|
|
|
74
|
-
const channelMarkAsRead =
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
break;
|
|
83
|
-
}
|
|
84
|
-
} catch (e) {
|
|
85
|
-
Logger.warn('[useGroupChannelMessagesWithCollection/channelMarkAsRead]', e);
|
|
74
|
+
const channelMarkAsRead = (source?: CollectionEventSource) => {
|
|
75
|
+
switch (source) {
|
|
76
|
+
case CollectionEventSource.EVENT_MESSAGE_RECEIVED:
|
|
77
|
+
case CollectionEventSource.EVENT_MESSAGE_SENT_SUCCESS:
|
|
78
|
+
case CollectionEventSource.SYNC_MESSAGE_FILL:
|
|
79
|
+
case undefined:
|
|
80
|
+
confirmAndMarkAsRead([channel]);
|
|
81
|
+
break;
|
|
86
82
|
}
|
|
87
83
|
};
|
|
88
84
|
const updateNewMessagesReceived = (source: CollectionEventSource, messages: SendbirdBaseMessage[]) => {
|
|
@@ -105,7 +101,7 @@ export const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (s
|
|
|
105
101
|
if (isNotEmpty(failedMessages)) updateMessages(failedMessages, false, sdk.currentUser?.userId);
|
|
106
102
|
};
|
|
107
103
|
|
|
108
|
-
const init = useFreshCallback(
|
|
104
|
+
const init = useFreshCallback((startingPoint: number, limit: number, callback?: () => void) => {
|
|
109
105
|
if (collectionRef.current) collectionRef.current?.dispose();
|
|
110
106
|
|
|
111
107
|
channelMarkAsRead();
|
|
@@ -53,17 +53,9 @@ export const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, c
|
|
|
53
53
|
updateRefreshing,
|
|
54
54
|
} = useChannelMessagesReducer(options?.sortComparator);
|
|
55
55
|
|
|
56
|
-
const channelMarkAsRead = async () => {
|
|
57
|
-
try {
|
|
58
|
-
await confirmAndMarkAsRead([channel]);
|
|
59
|
-
} catch (e) {
|
|
60
|
-
Logger.warn('[useGroupChannelMessagesWithQuery/channelMarkAsRead]', e);
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
|
|
64
56
|
const init = useFreshCallback(async (uid?: string) => {
|
|
65
57
|
if (uid) {
|
|
66
|
-
|
|
58
|
+
confirmAndMarkAsRead([channel]);
|
|
67
59
|
updateNewMessages([], true, sdk.currentUser?.userId);
|
|
68
60
|
|
|
69
61
|
queryRef.current = createMessageQuery(channel, options);
|
|
@@ -86,7 +78,7 @@ export const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, c
|
|
|
86
78
|
if (isDifferentChannel(channel, eventChannel)) return;
|
|
87
79
|
if (isMyMessage(message, sdk.currentUser?.userId)) return;
|
|
88
80
|
|
|
89
|
-
|
|
81
|
+
confirmAndMarkAsRead([channel]);
|
|
90
82
|
|
|
91
83
|
updateMessages([message], false, sdk.currentUser?.userId);
|
|
92
84
|
if (options?.shouldCountNewMessages?.()) {
|
|
@@ -119,7 +119,7 @@ export const useUserList = <
|
|
|
119
119
|
});
|
|
120
120
|
|
|
121
121
|
const next = useFreshCallback(async () => {
|
|
122
|
-
if (query.current && query.current?.hasNext) {
|
|
122
|
+
if (query.current && query.current?.hasNext && !query.current.isLoading) {
|
|
123
123
|
const nextUsers = await query.current.next().catch((e) => {
|
|
124
124
|
Logger.error(e);
|
|
125
125
|
if (e.code === SBErrorCode.UNAUTHORIZED_REQUEST) Logger.warn(SBErrorMessage.ACL);
|