@sendbird/uikit-chat-hooks 3.12.1 → 3.12.3
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/useGroupChannelList/useGroupChannelListWithCollection.js +1 -1
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js +1 -1
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js +1 -1
- package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +1 -1
- package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
- package/lib/commonjs/common/useUserList.js +1 -1
- package/lib/commonjs/common/useUserList.js.map +1 -1
- package/lib/commonjs/handler/useConnectionHandler.js +1 -1
- package/lib/commonjs/handler/useConnectionHandler.js.map +1 -1
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js +1 -1
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js +1 -1
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
- package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js +1 -1
- package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -1
- package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +1 -1
- package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
- package/lib/module/common/useUserList.js +1 -1
- package/lib/module/common/useUserList.js.map +1 -1
- package/lib/module/handler/useConnectionHandler.js +1 -1
- package/lib/module/handler/useConnectionHandler.js.map +1 -1
- package/lib/typescript/src/channel/useGroupChannel.d.ts +3 -1
- package/lib/typescript/src/channel/useOpenChannel.d.ts +3 -1
- package/package.json +4 -4
- package/src/channel/useGroupChannelList/useGroupChannelListWithCollection.ts +1 -1
- package/src/channel/useGroupChannelList/useGroupChannelListWithQuery.ts +1 -1
- package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +1 -1
- package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +1 -1
- package/src/channel/useOpenChannelList/useOpenChannelListWithQuery.ts +1 -1
- package/src/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.ts +1 -1
- package/src/common/useUserList.ts +1 -1
- package/src/handler/useConnectionHandler.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_useConnectionHandler","_useChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useOpenChannelMessagesWithQuery","sdk","userId","options","queryRef","useRef","forceUpdate","useForceUpdate","handlerId","useUniqHandlerId","loading","refreshing","messages","newMessages","updateMessages","updateNewMessages","deleteNewMessages","deleteMessages","updateLoading","updateRefreshing","useChannelMessagesReducer","sortComparator","init","useFreshCallback","uid","_queryRef$current","_sdk$currentUser2","current","queryCreator","hasNext","_queryRef$current2","_sdk$currentUser","list","load","currentUser","channelUpdater","isOpenChannel","isDifferentChannel","useConnectionHandler","onReconnectSucceeded","_queryRef$current3","_queryRef$current4","_queryRef$current5","_queryRef$current6","_queryRef$current7","_queryRef$current8","_queryRef$current9","_queryRef$current0","_queryRef$current1","_queryRef$current10","_queryRef$current11","_queryRef$current12","_queryRef$current13","_queryRef$current14","_queryRef$current15","_queryRef$current16","_sdk$currentUser3","lastMessage","messageContext","updatedMessages","addedMessages","deletedMessageIds","changeLogsContext","hasMore","token","messageQueryContext","timestamp","createdAt","changelogsParams","replyType","includeMetaArray","includeReactions","includeThreadInfo","includeParentMessageInfo","changeLogsByTS","getMessageChangeLogsSinceTimestamp","push","changeLogsByToken","getMessageChangeLogsSinceToken","messageQueryParams","prevResultSize","nextResultSize","customTypesFilter","messageTypeFilter","senderUserIdsFilter","showSubchannelMessagesOnly","queriedMessages","getMessagesByTimestamp","length","unshift","_options$shouldCountN","shouldCountNewMessages","call","_sdk$currentUser4","onMessagesReceived","useChannelHandler","onMessageReceived","eventChannel","message","_sdk$currentUser5","_sdk$currentUser6","_options$shouldCountN2","isMyMessage","_sdk$currentUser7","onMessageUpdated","_sdk$currentUser8","_sdk$currentUser9","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelParticipantCountChanged","onChannelDeleted","channelUrl","type","url","_options$onChannelDel","onOperatorUpdated","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_sdk$currentUser0","_options$onChannelDel2","useAsyncEffect","enter","error","_options$onError","_options$onChannelDel3","onError","exit","catch","NOOP","refresh","prev","_queryRef$current17","_queryRef$current18","_sdk$currentUser1","hasPrev","_queryRef$current19","next","ASYNC_NOOP","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser10","onSucceeded","sentMessage","_sdk$currentUser11","onFailed","err","failedMessage","_sdk$currentUser12","sendFileMessage","isFileMessage","_sdk$currentUser13","_sdk$currentUser14","_sdk$currentUser15","updateUserMessage","_sdk$currentUser16","updatedMessage","updateFileMessage","_sdk$currentUser17","resendMessage","_sdk$currentUser18","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","_sdk$currentUser19","exports"],"sources":["useOpenChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport { MessageListParams } from '@sendbird/chat/message';\nimport type {\n SendbirdBaseChannel,\n SendbirdBaseMessage,\n SendbirdOpenChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n ASYNC_NOOP,\n NOOP,\n isDifferentChannel,\n isMyMessage,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport { useConnectionHandler } from '../../handler/useConnectionHandler';\nimport type { UseOpenChannelMessages, UseOpenChannelMessagesOptions } from '../../types';\nimport { useChannelMessagesReducer } from '../useChannelMessagesReducer';\n\nconst createMessageQuery = (channel: SendbirdOpenChannel, creator?: UseOpenChannelMessagesOptions['queryCreator']) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nexport const useOpenChannelMessagesWithQuery: UseOpenChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const forceUpdate = useForceUpdate();\n const handlerId = useUniqHandlerId('useOpenChannelMessagesWithQuery');\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 init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n\n updateMessages(list, true, sdk.currentUser?.userId);\n }\n updateNewMessages([], true, sdk.currentUser?.userId);\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isOpenChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useConnectionHandler(sdk, handlerId, {\n async onReconnectSucceeded() {\n const lastMessage = messages[0];\n if (!lastMessage) return;\n\n const messageContext = {\n updatedMessages: [] as SendbirdBaseMessage[],\n addedMessages: [] as SendbirdBaseMessage[],\n deletedMessageIds: [] as (number | string)[],\n };\n const changeLogsContext = {\n hasMore: false,\n token: '',\n };\n const messageQueryContext = {\n hasMore: false,\n timestamp: lastMessage.createdAt,\n };\n\n // Updated & Deleted messages\n const changelogsParams = {\n replyType: queryRef.current?.replyType,\n includeMetaArray: queryRef.current?.includeMetaArray,\n includeReactions: queryRef.current?.includeReactions,\n includeThreadInfo: queryRef.current?.includeThreadInfo,\n includeParentMessageInfo: queryRef.current?.includeParentMessageInfo,\n };\n\n const changeLogsByTS = await channel.getMessageChangeLogsSinceTimestamp(lastMessage.createdAt);\n changeLogsContext.token = changeLogsByTS.token;\n changeLogsContext.hasMore = changeLogsByTS.hasMore;\n messageContext.updatedMessages.push(...changeLogsByTS.updatedMessages);\n messageContext.deletedMessageIds.push(...changeLogsByTS.deletedMessageIds);\n\n while (changeLogsContext.hasMore) {\n const changeLogsByToken = await channel.getMessageChangeLogsSinceToken(changeLogsByTS.token, changelogsParams);\n changeLogsContext.token = changeLogsByToken.token;\n changeLogsContext.hasMore = changeLogsByToken.hasMore;\n messageContext.updatedMessages.push(...changeLogsByToken.updatedMessages);\n messageContext.deletedMessageIds.push(...changeLogsByToken.deletedMessageIds);\n }\n\n // Added messages\n const messageQueryParams: MessageListParams = {\n prevResultSize: 0,\n nextResultSize: queryRef.current?.limit ?? 100,\n reverse: queryRef.current?.reverse,\n includeParentMessageInfo: queryRef.current?.includeParentMessageInfo,\n includeThreadInfo: queryRef.current?.includeThreadInfo,\n includeReactions: queryRef.current?.includeReactions,\n includeMetaArray: queryRef.current?.includeMetaArray,\n replyType: queryRef.current?.replyType,\n customTypesFilter: queryRef.current?.customTypesFilter as never,\n messageTypeFilter: queryRef.current?.messageTypeFilter,\n senderUserIdsFilter: queryRef.current?.senderUserIdsFilter as never,\n showSubchannelMessagesOnly: queryRef.current?.showSubchannelMessagesOnly,\n };\n\n const queriedMessages = await channel.getMessagesByTimestamp(lastMessage.createdAt, messageQueryParams);\n messageQueryContext.hasMore = queriedMessages.length > 0;\n if (messageQueryContext.hasMore) {\n messageQueryContext.timestamp = queriedMessages[0].createdAt;\n messageContext.addedMessages.unshift(...queriedMessages);\n }\n\n while (messageQueryContext.hasMore) {\n const queriedMessages = await channel.getMessagesByTimestamp(messageQueryContext.timestamp, messageQueryParams);\n messageQueryContext.hasMore = queriedMessages.length > 0;\n if (messageQueryContext.hasMore) {\n messageQueryContext.timestamp = queriedMessages[0].createdAt;\n messageContext.addedMessages.unshift(...queriedMessages);\n }\n }\n\n // Update to View\n updateMessages(\n [...messageContext.addedMessages, ...messageContext.updatedMessages],\n false,\n sdk.currentUser?.userId,\n );\n deleteMessages(messageContext.deletedMessageIds, []);\n\n if (messageContext.addedMessages.length > 0) {\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages(messageContext.addedMessages, false, sdk.currentUser?.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived(messageContext.addedMessages);\n }\n }\n },\n });\n\n useChannelHandler(\n sdk,\n handlerId,\n {\n // Messages\n onMessageReceived(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 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 // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelParticipantCountChanged(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n channelUpdater(eventChannel);\n },\n onChannelDeleted(channelUrl, type) {\n if (channel.url === channelUrl && type === 'open') {\n options?.onChannelDeleted?.();\n }\n },\n // Users\n onOperatorUpdated: 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 'open',\n );\n\n useAsyncEffect(async () => {\n updateLoading(true);\n\n try {\n await channel.enter();\n await init(userId);\n } catch (error) {\n options?.onError?.(error);\n options?.onChannelDeleted?.();\n } finally {\n updateLoading(false);\n }\n\n return () => {\n channel.exit().catch(NOOP);\n };\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseOpenChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseOpenChannelMessages>['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<UseOpenChannelMessages>['hasPrev'] = useFreshCallback(\n () => queryRef.current?.hasNext ?? false,\n );\n\n const next: ReturnType<UseOpenChannelMessages>['next'] = useFreshCallback(ASYNC_NOOP);\n const hasNext: ReturnType<UseOpenChannelMessages>['hasNext'] = useFreshCallback(() => false);\n\n const sendUserMessage: ReturnType<UseOpenChannelMessages>['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\n const sendFileMessage: ReturnType<UseOpenChannelMessages>['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\n const updateUserMessage: ReturnType<UseOpenChannelMessages>['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<UseOpenChannelMessages>['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<UseOpenChannelMessages>['resendMessage'] = useFreshCallback(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 const deleteMessage: ReturnType<UseOpenChannelMessages>['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<UseOpenChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser?.userId);\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n newMessages,\n next,\n hasNext,\n prev,\n hasPrev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetNewMessages,\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_useConnectionHandler","_useChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useOpenChannelMessagesWithQuery","sdk","userId","options","queryRef","useRef","undefined","forceUpdate","useForceUpdate","handlerId","useUniqHandlerId","loading","refreshing","messages","newMessages","updateMessages","updateNewMessages","deleteNewMessages","deleteMessages","updateLoading","updateRefreshing","useChannelMessagesReducer","sortComparator","init","useFreshCallback","uid","_queryRef$current","_sdk$currentUser2","current","queryCreator","hasNext","_queryRef$current2","_sdk$currentUser","list","load","currentUser","channelUpdater","isOpenChannel","isDifferentChannel","useConnectionHandler","onReconnectSucceeded","_queryRef$current3","_queryRef$current4","_queryRef$current5","_queryRef$current6","_queryRef$current7","_queryRef$current8","_queryRef$current9","_queryRef$current0","_queryRef$current1","_queryRef$current10","_queryRef$current11","_queryRef$current12","_queryRef$current13","_queryRef$current14","_queryRef$current15","_queryRef$current16","_sdk$currentUser3","lastMessage","messageContext","updatedMessages","addedMessages","deletedMessageIds","changeLogsContext","hasMore","token","messageQueryContext","timestamp","createdAt","changelogsParams","replyType","includeMetaArray","includeReactions","includeThreadInfo","includeParentMessageInfo","changeLogsByTS","getMessageChangeLogsSinceTimestamp","push","changeLogsByToken","getMessageChangeLogsSinceToken","messageQueryParams","prevResultSize","nextResultSize","customTypesFilter","messageTypeFilter","senderUserIdsFilter","showSubchannelMessagesOnly","queriedMessages","getMessagesByTimestamp","length","unshift","_options$shouldCountN","shouldCountNewMessages","call","_sdk$currentUser4","onMessagesReceived","useChannelHandler","onMessageReceived","eventChannel","message","_sdk$currentUser5","_sdk$currentUser6","_options$shouldCountN2","isMyMessage","_sdk$currentUser7","onMessageUpdated","_sdk$currentUser8","_sdk$currentUser9","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelParticipantCountChanged","onChannelDeleted","channelUrl","type","url","_options$onChannelDel","onOperatorUpdated","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_sdk$currentUser0","_options$onChannelDel2","useAsyncEffect","enter","error","_options$onError","_options$onChannelDel3","onError","exit","catch","NOOP","refresh","prev","_queryRef$current17","_queryRef$current18","_sdk$currentUser1","hasPrev","_queryRef$current19","next","ASYNC_NOOP","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser10","onSucceeded","sentMessage","_sdk$currentUser11","onFailed","err","failedMessage","_sdk$currentUser12","sendFileMessage","isFileMessage","_sdk$currentUser13","_sdk$currentUser14","_sdk$currentUser15","updateUserMessage","_sdk$currentUser16","updatedMessage","updateFileMessage","_sdk$currentUser17","resendMessage","_sdk$currentUser18","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","_sdk$currentUser19","exports"],"sources":["useOpenChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport { MessageListParams } from '@sendbird/chat/message';\nimport type {\n SendbirdBaseChannel,\n SendbirdBaseMessage,\n SendbirdOpenChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n ASYNC_NOOP,\n NOOP,\n isDifferentChannel,\n isMyMessage,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport { useConnectionHandler } from '../../handler/useConnectionHandler';\nimport type { UseOpenChannelMessages, UseOpenChannelMessagesOptions } from '../../types';\nimport { useChannelMessagesReducer } from '../useChannelMessagesReducer';\n\nconst createMessageQuery = (channel: SendbirdOpenChannel, creator?: UseOpenChannelMessagesOptions['queryCreator']) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nexport const useOpenChannelMessagesWithQuery: UseOpenChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery | undefined>(undefined);\n const forceUpdate = useForceUpdate();\n const handlerId = useUniqHandlerId('useOpenChannelMessagesWithQuery');\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 init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n\n updateMessages(list, true, sdk.currentUser?.userId);\n }\n updateNewMessages([], true, sdk.currentUser?.userId);\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isOpenChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useConnectionHandler(sdk, handlerId, {\n async onReconnectSucceeded() {\n const lastMessage = messages[0];\n if (!lastMessage) return;\n\n const messageContext = {\n updatedMessages: [] as SendbirdBaseMessage[],\n addedMessages: [] as SendbirdBaseMessage[],\n deletedMessageIds: [] as (number | string)[],\n };\n const changeLogsContext = {\n hasMore: false,\n token: '',\n };\n const messageQueryContext = {\n hasMore: false,\n timestamp: lastMessage.createdAt,\n };\n\n // Updated & Deleted messages\n const changelogsParams = {\n replyType: queryRef.current?.replyType,\n includeMetaArray: queryRef.current?.includeMetaArray,\n includeReactions: queryRef.current?.includeReactions,\n includeThreadInfo: queryRef.current?.includeThreadInfo,\n includeParentMessageInfo: queryRef.current?.includeParentMessageInfo,\n };\n\n const changeLogsByTS = await channel.getMessageChangeLogsSinceTimestamp(lastMessage.createdAt);\n changeLogsContext.token = changeLogsByTS.token;\n changeLogsContext.hasMore = changeLogsByTS.hasMore;\n messageContext.updatedMessages.push(...changeLogsByTS.updatedMessages);\n messageContext.deletedMessageIds.push(...changeLogsByTS.deletedMessageIds);\n\n while (changeLogsContext.hasMore) {\n const changeLogsByToken = await channel.getMessageChangeLogsSinceToken(changeLogsByTS.token, changelogsParams);\n changeLogsContext.token = changeLogsByToken.token;\n changeLogsContext.hasMore = changeLogsByToken.hasMore;\n messageContext.updatedMessages.push(...changeLogsByToken.updatedMessages);\n messageContext.deletedMessageIds.push(...changeLogsByToken.deletedMessageIds);\n }\n\n // Added messages\n const messageQueryParams: MessageListParams = {\n prevResultSize: 0,\n nextResultSize: queryRef.current?.limit ?? 100,\n reverse: queryRef.current?.reverse,\n includeParentMessageInfo: queryRef.current?.includeParentMessageInfo,\n includeThreadInfo: queryRef.current?.includeThreadInfo,\n includeReactions: queryRef.current?.includeReactions,\n includeMetaArray: queryRef.current?.includeMetaArray,\n replyType: queryRef.current?.replyType,\n customTypesFilter: queryRef.current?.customTypesFilter as never,\n messageTypeFilter: queryRef.current?.messageTypeFilter,\n senderUserIdsFilter: queryRef.current?.senderUserIdsFilter as never,\n showSubchannelMessagesOnly: queryRef.current?.showSubchannelMessagesOnly,\n };\n\n const queriedMessages = await channel.getMessagesByTimestamp(lastMessage.createdAt, messageQueryParams);\n messageQueryContext.hasMore = queriedMessages.length > 0;\n if (messageQueryContext.hasMore) {\n messageQueryContext.timestamp = queriedMessages[0].createdAt;\n messageContext.addedMessages.unshift(...queriedMessages);\n }\n\n while (messageQueryContext.hasMore) {\n const queriedMessages = await channel.getMessagesByTimestamp(messageQueryContext.timestamp, messageQueryParams);\n messageQueryContext.hasMore = queriedMessages.length > 0;\n if (messageQueryContext.hasMore) {\n messageQueryContext.timestamp = queriedMessages[0].createdAt;\n messageContext.addedMessages.unshift(...queriedMessages);\n }\n }\n\n // Update to View\n updateMessages(\n [...messageContext.addedMessages, ...messageContext.updatedMessages],\n false,\n sdk.currentUser?.userId,\n );\n deleteMessages(messageContext.deletedMessageIds, []);\n\n if (messageContext.addedMessages.length > 0) {\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages(messageContext.addedMessages, false, sdk.currentUser?.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived(messageContext.addedMessages);\n }\n }\n },\n });\n\n useChannelHandler(\n sdk,\n handlerId,\n {\n // Messages\n onMessageReceived(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 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 // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelParticipantCountChanged(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n channelUpdater(eventChannel);\n },\n onChannelDeleted(channelUrl, type) {\n if (channel.url === channelUrl && type === 'open') {\n options?.onChannelDeleted?.();\n }\n },\n // Users\n onOperatorUpdated: 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 'open',\n );\n\n useAsyncEffect(async () => {\n updateLoading(true);\n\n try {\n await channel.enter();\n await init(userId);\n } catch (error) {\n options?.onError?.(error);\n options?.onChannelDeleted?.();\n } finally {\n updateLoading(false);\n }\n\n return () => {\n channel.exit().catch(NOOP);\n };\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseOpenChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseOpenChannelMessages>['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<UseOpenChannelMessages>['hasPrev'] = useFreshCallback(\n () => queryRef.current?.hasNext ?? false,\n );\n\n const next: ReturnType<UseOpenChannelMessages>['next'] = useFreshCallback(ASYNC_NOOP);\n const hasNext: ReturnType<UseOpenChannelMessages>['hasNext'] = useFreshCallback(() => false);\n\n const sendUserMessage: ReturnType<UseOpenChannelMessages>['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\n const sendFileMessage: ReturnType<UseOpenChannelMessages>['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\n const updateUserMessage: ReturnType<UseOpenChannelMessages>['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<UseOpenChannelMessages>['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<UseOpenChannelMessages>['resendMessage'] = useFreshCallback(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 const deleteMessage: ReturnType<UseOpenChannelMessages>['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<UseOpenChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser?.userId);\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n newMessages,\n next,\n hasNext,\n prev,\n hasPrev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetNewMessages,\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -34,7 +34,7 @@ const createUserQuery = (sdk, queryCreator) => {
|
|
|
34
34
|
* ```
|
|
35
35
|
* */
|
|
36
36
|
const useUserList = (sdk, options) => {
|
|
37
|
-
const query = (0, _react.useRef)();
|
|
37
|
+
const query = (0, _react.useRef)(undefined);
|
|
38
38
|
const [error, setError] = (0, _react.useState)(null);
|
|
39
39
|
const [loading, setLoading] = (0, _react.useState)(false);
|
|
40
40
|
const [refreshing, setRefreshing] = (0, _react.useState)(false);
|
|
@@ -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","draft","userIdx","findIndex","it","userId","push","deleteUser","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
|
|
1
|
+
{"version":3,"names":["_react","require","_uikitUtils","createUserQuery","sdk","queryCreator","createApplicationUserListQuery","useUserList","options","query","useRef","undefined","error","setError","useState","loading","setLoading","refreshing","setRefreshing","users","setUsers","sortedUsers","useMemo","sortComparator","sort","upsertUser","useFreshCallback","user","draft","userIdx","findIndex","it","userId","push","deleteUser","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> | undefined>(undefined);\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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","ignoreList":[]}
|
|
@@ -8,7 +8,7 @@ var _react = require("react");
|
|
|
8
8
|
var _chat = require("@sendbird/chat");
|
|
9
9
|
var _uikitUtils = require("@sendbird/uikit-utils");
|
|
10
10
|
const useConnectionHandler = (sdk, handlerId, hookHandler) => {
|
|
11
|
-
const handlerRef = (0, _react.useRef)();
|
|
11
|
+
const handlerRef = (0, _react.useRef)(undefined);
|
|
12
12
|
(0, _react.useLayoutEffect)(() => {
|
|
13
13
|
handlerRef.current = hookHandler;
|
|
14
14
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_chat","_uikitUtils","useConnectionHandler","sdk","handlerId","hookHandler","handlerRef","useRef","useLayoutEffect","current","useEffect","Logger","info","handler","ConnectionHandler","handlerKeys","Object","keys","forEach","key","args","_handlerRef$current$k","_handlerRef$current","call","addConnectionHandler","removeConnectionHandler","exports"],"sources":["useConnectionHandler.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { ConnectionHandler } from '@sendbird/chat';\nimport { Logger, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useConnectionHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<ConnectionHandler>,\n) => {\n const handlerRef = useRef<Partial<ConnectionHandler
|
|
1
|
+
{"version":3,"names":["_react","require","_chat","_uikitUtils","useConnectionHandler","sdk","handlerId","hookHandler","handlerRef","useRef","undefined","useLayoutEffect","current","useEffect","Logger","info","handler","ConnectionHandler","handlerKeys","Object","keys","forEach","key","args","_handlerRef$current$k","_handlerRef$current","call","addConnectionHandler","removeConnectionHandler","exports"],"sources":["useConnectionHandler.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { ConnectionHandler } from '@sendbird/chat';\nimport { Logger, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useConnectionHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<ConnectionHandler>,\n) => {\n const handlerRef = useRef<Partial<ConnectionHandler> | undefined>(undefined);\n useLayoutEffect(() => {\n handlerRef.current = hookHandler;\n });\n\n useEffect(() => {\n Logger.info('[useConnectionHandler]', handlerId);\n\n const handler = new ConnectionHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n handlerKeys.forEach((key) => {\n handler[key] = (...args: unknown[]) => {\n // @ts-ignore\n handlerRef.current[key]?.(...args);\n };\n });\n\n sdk.addConnectionHandler(handlerId, handler);\n return () => sdk.removeConnectionHandler(handlerId);\n }, [sdk, handlerId]);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAEO,MAAMG,oBAAoB,GAAGA,CAClCC,GAAoB,EACpBC,SAAiB,EACjBC,WAAuC,KACpC;EACH,MAAMC,UAAU,GAAG,IAAAC,aAAM,EAAyCC,SAAS,CAAC;EAC5E,IAAAC,sBAAe,EAAC,MAAM;IACpBH,UAAU,CAACI,OAAO,GAAGL,WAAW;EAClC,CAAC,CAAC;EAEF,IAAAM,gBAAS,EAAC,MAAM;IACdC,kBAAM,CAACC,IAAI,CAAC,wBAAwB,EAAET,SAAS,CAAC;IAEhD,MAAMU,OAAO,GAAG,IAAIC,uBAAiB,CAAC,CAAC;IACvC,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAI,CAACJ,OAAO,CAA6B;IACpEE,WAAW,CAACG,OAAO,CAAEC,GAAG,IAAK;MAC3BN,OAAO,CAACM,GAAG,CAAC,GAAG,CAAC,GAAGC,IAAe,KAAK;QAAA,IAAAC,qBAAA,EAAAC,mBAAA;QACrC;QACA,CAAAD,qBAAA,IAAAC,mBAAA,GAAAjB,UAAU,CAACI,OAAO,EAACU,GAAG,CAAC,cAAAE,qBAAA,eAAvBA,qBAAA,CAAAE,IAAA,CAAAD,mBAAA,EAA0B,GAAGF,IAAI,CAAC;MACpC,CAAC;IACH,CAAC,CAAC;IAEFlB,GAAG,CAACsB,oBAAoB,CAACrB,SAAS,EAAEU,OAAO,CAAC;IAC5C,OAAO,MAAMX,GAAG,CAACuB,uBAAuB,CAACtB,SAAS,CAAC;EACrD,CAAC,EAAE,CAACD,GAAG,EAAEC,SAAS,CAAC,CAAC;AACtB,CAAC;AAACuB,OAAA,CAAAzB,oBAAA,GAAAA,oBAAA","ignoreList":[]}
|
|
@@ -24,7 +24,7 @@ export const useGroupChannelListWithCollection = (sdk, userId, options) => {
|
|
|
24
24
|
const {
|
|
25
25
|
deliveryReceiptEnabled
|
|
26
26
|
} = useAppFeatures(sdk);
|
|
27
|
-
const collectionRef = useRef();
|
|
27
|
+
const collectionRef = useRef(undefined);
|
|
28
28
|
const {
|
|
29
29
|
loading,
|
|
30
30
|
groupChannels,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","GroupChannelEventSource","GroupChannelFilter","GroupChannelListOrder","confirmAndMarkAsDelivered","useAsyncEffect","useFreshCallback","useUniqHandlerId","useAppFeatures","useChannelHandler","useGroupChannelListReducer","createGroupChannelListCollection","sdk","collectionCreator","passedCollection","filter","includeEmpty","groupChannel","createGroupChannelCollection","limit","order","LATEST_LAST_MESSAGE","useGroupChannelListWithCollection","userId","options","handlerId","deliveryReceiptEnabled","collectionRef","loading","groupChannels","refreshing","appendChannels","deleteChannels","updateRefreshing","updateLoading","updateChannelsAndMarkAsDelivered","markAsDelivered","source","updatedChannels","_collectionRef$curren","channels","current","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT","SYNC_CHANNEL_BACKGROUND","SYNC_CHANNEL_CHANGELOGS","
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","GroupChannelEventSource","GroupChannelFilter","GroupChannelListOrder","confirmAndMarkAsDelivered","useAsyncEffect","useFreshCallback","useUniqHandlerId","useAppFeatures","useChannelHandler","useGroupChannelListReducer","createGroupChannelListCollection","sdk","collectionCreator","passedCollection","filter","includeEmpty","groupChannel","createGroupChannelCollection","limit","order","LATEST_LAST_MESSAGE","useGroupChannelListWithCollection","userId","options","handlerId","deliveryReceiptEnabled","collectionRef","undefined","loading","groupChannels","refreshing","appendChannels","deleteChannels","updateRefreshing","updateLoading","updateChannelsAndMarkAsDelivered","markAsDelivered","source","updatedChannels","_collectionRef$curren","channels","current","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT","SYNC_CHANNEL_BACKGROUND","SYNC_CHANNEL_CHANGELOGS","init","uid","_collectionRef$curren2","dispose","_collectionRef$curren3","_collectionRef$curren4","setGroupChannelCollectionHandler","onChannelsAdded","context","onChannelsUpdated","onChannelsDeleted","hasMore","_collectionRef$curren5","loadMore","_collectionRef$curren6","onUserBanned","channel","user","isMe","url","refresh","next","_collectionRef$curren7","_collectionRef$curren8"],"sources":["useGroupChannelListWithCollection.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { GroupChannelEventSource, GroupChannelFilter, GroupChannelListOrder } from '@sendbird/chat/groupChannel';\nimport type { SendbirdBaseChannel, SendbirdChatSDK, SendbirdGroupChannelCollection } from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelList, UseGroupChannelListOptions } from '../../types';\nimport { useGroupChannelListReducer } from './reducer';\n\nconst createGroupChannelListCollection = (\n sdk: SendbirdChatSDK,\n collectionCreator: UseGroupChannelListOptions['collectionCreator'],\n) => {\n const passedCollection = collectionCreator?.();\n if (passedCollection) return passedCollection;\n\n const filter = new GroupChannelFilter();\n filter.includeEmpty = false;\n\n return sdk.groupChannel.createGroupChannelCollection({\n filter,\n limit: 20,\n order: GroupChannelListOrder.LATEST_LAST_MESSAGE,\n });\n};\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the '@sendbird/uikit-tools' package.\n * */\nexport const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, userId, options) => {\n const handlerId = useUniqHandlerId('useGroupChannelListWithCollection');\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const collectionRef = useRef<SendbirdGroupChannelCollection | undefined>(undefined);\n\n const { loading, groupChannels, refreshing, appendChannels, deleteChannels, updateRefreshing, updateLoading } =\n useGroupChannelListReducer();\n\n const updateChannelsAndMarkAsDelivered = (\n markAsDelivered: boolean,\n source?: GroupChannelEventSource,\n updatedChannels?: SendbirdBaseChannel[],\n ) => {\n const channels = collectionRef.current?.channels ?? [];\n appendChannels(channels, true);\n if (markAsDelivered && deliveryReceiptEnabled) {\n switch (source) {\n case GroupChannelEventSource.EVENT_MESSAGE_RECEIVED:\n case GroupChannelEventSource.EVENT_MESSAGE_SENT:\n case GroupChannelEventSource.SYNC_CHANNEL_BACKGROUND:\n case GroupChannelEventSource.SYNC_CHANNEL_CHANGELOGS:\n case undefined:\n confirmAndMarkAsDelivered(updatedChannels ?? channels);\n break;\n }\n }\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createGroupChannelListCollection(sdk, options?.collectionCreator);\n\n collectionRef.current?.setGroupChannelCollectionHandler({\n onChannelsAdded: (context, channels) => {\n updateChannelsAndMarkAsDelivered(true, context.source, channels);\n },\n onChannelsUpdated: (context, channels) => {\n updateChannelsAndMarkAsDelivered(true, context.source, channels);\n },\n onChannelsDeleted: () => {\n updateChannelsAndMarkAsDelivered(false);\n },\n });\n\n if (collectionRef.current?.hasMore) {\n await collectionRef.current?.loadMore();\n updateChannelsAndMarkAsDelivered(true);\n }\n }\n });\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [userId]);\n\n useChannelHandler(sdk, handlerId, {\n onUserBanned: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannelsAndMarkAsDelivered(false);\n },\n });\n\n const refresh = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const next = useFreshCallback(async () => {\n if (collectionRef.current?.hasMore) {\n await collectionRef.current?.loadMore();\n updateChannelsAndMarkAsDelivered(true);\n }\n });\n\n return {\n loading,\n groupChannels,\n refresh,\n refreshing,\n next,\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -21,7 +21,7 @@ export const useGroupChannelListWithQuery = (sdk, userId, options) => {
|
|
|
21
21
|
const {
|
|
22
22
|
deliveryReceiptEnabled
|
|
23
23
|
} = useAppFeatures(sdk);
|
|
24
|
-
const queryRef = useRef();
|
|
24
|
+
const queryRef = useRef(undefined);
|
|
25
25
|
const handlerId = useUniqHandlerId('useGroupChannelListWithQuery');
|
|
26
26
|
const {
|
|
27
27
|
loading,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useRef","GroupChannelListOrder","confirmAndMarkAsDelivered","useAsyncEffect","useFreshCallback","useUniqHandlerId","useAppFeatures","useChannelHandler","useGroupChannelListReducer","createGroupChannelListQuery","sdk","queryCreator","passedQuery","groupChannel","createMyGroupChannelListQuery","includeEmpty","limit","order","LATEST_LAST_MESSAGE","useGroupChannelListWithQuery","userId","options","deliveryReceiptEnabled","queryRef","handlerId","loading","groupChannels","refreshing","updateChannels","appendChannels","deleteChannels","updateRefreshing","updateLoading","updateOrder","updateChannelsAndMarkAsDelivered","channels","init","uid","_queryRef$current","_queryRef$current2","current","hasNext","next","onChannelChanged","channel","onChannelFrozen","onChannelUnfrozen","onChannelMemberCountChanged","onChannelDeleted","url","onUserJoined","onUserLeft","user","isMe","onUserBanned","onMessageReceived","refresh","_queryRef$current3"],"sources":["useGroupChannelListWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport { GroupChannelListOrder } from '@sendbird/chat/groupChannel';\nimport type { SendbirdChannel, SendbirdChatSDK, SendbirdGroupChannelListQuery } from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelList, UseGroupChannelListOptions } from '../../types';\nimport { useGroupChannelListReducer } from './reducer';\n\nconst createGroupChannelListQuery = (\n sdk: SendbirdChatSDK,\n queryCreator: UseGroupChannelListOptions['queryCreator'],\n) => {\n const passedQuery = queryCreator?.();\n if (passedQuery) return passedQuery;\n\n return sdk.groupChannel.createMyGroupChannelListQuery({\n includeEmpty: false,\n limit: 20,\n order: GroupChannelListOrder.LATEST_LAST_MESSAGE,\n });\n};\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the '@sendbird/uikit-tools' package.\n * */\nexport const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, options) => {\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n const queryRef = useRef<SendbirdGroupChannelListQuery>();\n const handlerId = useUniqHandlerId('useGroupChannelListWithQuery');\n\n const {\n loading,\n groupChannels,\n refreshing,\n updateChannels,\n appendChannels,\n deleteChannels,\n updateRefreshing,\n updateLoading,\n updateOrder,\n } = useGroupChannelListReducer();\n\n const updateChannelsAndMarkAsDelivered = (channels: SendbirdChannel[]) => {\n updateChannels(channels);\n if (deliveryReceiptEnabled) confirmAndMarkAsDelivered(channels);\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createGroupChannelListQuery(sdk, options?.queryCreator);\n updateOrder(queryRef.current?.order);\n\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n\n appendChannels(channels, true);\n if (deliveryReceiptEnabled) confirmAndMarkAsDelivered(channels);\n }\n }\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [userId]);\n\n useChannelHandler(sdk, handlerId, {\n onChannelChanged: (channel) => updateChannels([channel]),\n onChannelFrozen: (channel) => updateChannels([channel]),\n onChannelUnfrozen: (channel) => updateChannels([channel]),\n onChannelMemberCountChanged: (channels) => updateChannels(channels),\n onChannelDeleted: (url) => deleteChannels([url]),\n onUserJoined: (channel) => updateChannels([channel]),\n onUserLeft: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannels([channel]);\n },\n onUserBanned(channel, user) {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannels([channel]);\n },\n onMessageReceived(channel) {\n updateChannelsAndMarkAsDelivered([channel]);\n },\n });\n\n const refresh = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const next = useFreshCallback(async () => {\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n appendChannels(channels, false);\n if (deliveryReceiptEnabled) confirmAndMarkAsDelivered(channels);\n }\n });\n\n return {\n loading,\n groupChannels,\n refresh,\n refreshing,\n next,\n };\n};\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,OAAO;AAE9B,SAASC,qBAAqB,QAAQ,6BAA6B;AAEnE,SAASC,yBAAyB,EAAEC,cAAc,EAAEC,gBAAgB,EAAEC,gBAAgB,QAAQ,uBAAuB;AAErH,SAASC,cAAc,QAAQ,6BAA6B;AAC5D,SAASC,iBAAiB,QAAQ,iCAAiC;AAEnE,SAASC,0BAA0B,QAAQ,WAAW;AAEtD,MAAMC,2BAA2B,GAAGA,CAClCC,GAAoB,EACpBC,YAAwD,KACrD;EACH,MAAMC,WAAW,GAAGD,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAG,CAAC;EACpC,IAAIC,WAAW,EAAE,OAAOA,WAAW;EAEnC,OAAOF,GAAG,CAACG,YAAY,CAACC,6BAA6B,CAAC;IACpDC,YAAY,EAAE,KAAK;IACnBC,KAAK,EAAE,EAAE;IACTC,KAAK,EAAEhB,qBAAqB,CAACiB;EAC/B,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,4BAAiD,GAAGA,CAACT,GAAG,EAAEU,MAAM,EAAEC,OAAO,KAAK;EACzF,MAAM;IAAEC;EAAuB,CAAC,GAAGhB,cAAc,CAACI,GAAG,CAAC;EACtD,MAAMa,QAAQ,GAAGvB,MAAM,
|
|
1
|
+
{"version":3,"names":["useRef","GroupChannelListOrder","confirmAndMarkAsDelivered","useAsyncEffect","useFreshCallback","useUniqHandlerId","useAppFeatures","useChannelHandler","useGroupChannelListReducer","createGroupChannelListQuery","sdk","queryCreator","passedQuery","groupChannel","createMyGroupChannelListQuery","includeEmpty","limit","order","LATEST_LAST_MESSAGE","useGroupChannelListWithQuery","userId","options","deliveryReceiptEnabled","queryRef","undefined","handlerId","loading","groupChannels","refreshing","updateChannels","appendChannels","deleteChannels","updateRefreshing","updateLoading","updateOrder","updateChannelsAndMarkAsDelivered","channels","init","uid","_queryRef$current","_queryRef$current2","current","hasNext","next","onChannelChanged","channel","onChannelFrozen","onChannelUnfrozen","onChannelMemberCountChanged","onChannelDeleted","url","onUserJoined","onUserLeft","user","isMe","onUserBanned","onMessageReceived","refresh","_queryRef$current3"],"sources":["useGroupChannelListWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport { GroupChannelListOrder } from '@sendbird/chat/groupChannel';\nimport type { SendbirdChannel, SendbirdChatSDK, SendbirdGroupChannelListQuery } from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelList, UseGroupChannelListOptions } from '../../types';\nimport { useGroupChannelListReducer } from './reducer';\n\nconst createGroupChannelListQuery = (\n sdk: SendbirdChatSDK,\n queryCreator: UseGroupChannelListOptions['queryCreator'],\n) => {\n const passedQuery = queryCreator?.();\n if (passedQuery) return passedQuery;\n\n return sdk.groupChannel.createMyGroupChannelListQuery({\n includeEmpty: false,\n limit: 20,\n order: GroupChannelListOrder.LATEST_LAST_MESSAGE,\n });\n};\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the '@sendbird/uikit-tools' package.\n * */\nexport const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, options) => {\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n const queryRef = useRef<SendbirdGroupChannelListQuery | undefined>(undefined);\n const handlerId = useUniqHandlerId('useGroupChannelListWithQuery');\n\n const {\n loading,\n groupChannels,\n refreshing,\n updateChannels,\n appendChannels,\n deleteChannels,\n updateRefreshing,\n updateLoading,\n updateOrder,\n } = useGroupChannelListReducer();\n\n const updateChannelsAndMarkAsDelivered = (channels: SendbirdChannel[]) => {\n updateChannels(channels);\n if (deliveryReceiptEnabled) confirmAndMarkAsDelivered(channels);\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createGroupChannelListQuery(sdk, options?.queryCreator);\n updateOrder(queryRef.current?.order);\n\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n\n appendChannels(channels, true);\n if (deliveryReceiptEnabled) confirmAndMarkAsDelivered(channels);\n }\n }\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [userId]);\n\n useChannelHandler(sdk, handlerId, {\n onChannelChanged: (channel) => updateChannels([channel]),\n onChannelFrozen: (channel) => updateChannels([channel]),\n onChannelUnfrozen: (channel) => updateChannels([channel]),\n onChannelMemberCountChanged: (channels) => updateChannels(channels),\n onChannelDeleted: (url) => deleteChannels([url]),\n onUserJoined: (channel) => updateChannels([channel]),\n onUserLeft: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannels([channel]);\n },\n onUserBanned(channel, user) {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannels([channel]);\n },\n onMessageReceived(channel) {\n updateChannelsAndMarkAsDelivered([channel]);\n },\n });\n\n const refresh = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const next = useFreshCallback(async () => {\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n appendChannels(channels, false);\n if (deliveryReceiptEnabled) confirmAndMarkAsDelivered(channels);\n }\n });\n\n return {\n loading,\n groupChannels,\n refresh,\n refreshing,\n next,\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -35,7 +35,7 @@ export const useGroupChannelMessagesWithCollection = (sdk, channel, userId, opti
|
|
|
35
35
|
const initialStartingPoint = (options === null || options === void 0 ? void 0 : options.startingPoint) ?? Number.MAX_SAFE_INTEGER;
|
|
36
36
|
const initialLimit = shouldUseSearchLimit(initialStartingPoint) ? MESSAGE_LIMIT.SEARCH : MESSAGE_LIMIT.DEFAULT;
|
|
37
37
|
const forceUpdate = useForceUpdate();
|
|
38
|
-
const collectionRef = useRef();
|
|
38
|
+
const collectionRef = useRef(undefined);
|
|
39
39
|
const collectionInitializedRef = useRef(false);
|
|
40
40
|
const handlerId = useUniqHandlerId('useGroupChannelMessagesWithCollection');
|
|
41
41
|
const {
|
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","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$currentUser0","_options$onChannelDel2","setTimeout","url","_collectionRef$curren3","refresh","prev","_collectionRef$curren4","hasPrevious","_collectionRef$curren5","_sdk$currentUser1","list","loadPrevious","hasPrev","next","_collectionRef$curren6","hasNext","_collectionRef$curren7","_sdk$currentUser10","fetchedList","loadNext","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser11","onSucceeded","sentMessage","_sdk$currentUser12","onFailed","failedMessage","_sdk$currentUser13","sendFileMessage","isFileMessage","_sdk$currentUser14","_sdk$currentUser15","_sdk$currentUser16","updateUserMessage","_sdk$currentUser17","updatedMessage","updateFileMessage","_sdk$currentUser18","resendMessage","_sdk$currentUser19","resentMessage","resendUserMessage","resendFileMessage","deleteMessage","message","sendingStatus","_collectionRef$curren8","removeFailedMessage","resetNewMessages","_sdk$currentUser20","resetWithStartingPoint","_sdk$currentUser21"],"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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","ignoreList":[]}
|
|
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","undefined","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","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$currentUser0","_options$onChannelDel2","setTimeout","url","_collectionRef$curren3","refresh","prev","_collectionRef$curren4","hasPrevious","_collectionRef$curren5","_sdk$currentUser1","list","loadPrevious","hasPrev","next","_collectionRef$curren6","hasNext","_collectionRef$curren7","_sdk$currentUser10","fetchedList","loadNext","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser11","onSucceeded","sentMessage","_sdk$currentUser12","onFailed","failedMessage","_sdk$currentUser13","sendFileMessage","isFileMessage","_sdk$currentUser14","_sdk$currentUser15","_sdk$currentUser16","updateUserMessage","_sdk$currentUser17","updatedMessage","updateFileMessage","_sdk$currentUser18","resendMessage","_sdk$currentUser19","resentMessage","resendUserMessage","resendFileMessage","deleteMessage","message","sendingStatus","_collectionRef$curren8","removeFailedMessage","resetNewMessages","_sdk$currentUser20","resetWithStartingPoint","_sdk$currentUser21"],"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 | undefined>(undefined);\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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","ignoreList":[]}
|
|
@@ -16,7 +16,7 @@ const createMessageQuery = (channel, options) => {
|
|
|
16
16
|
* @deprecated This hook is deprecated and will be replaced by the '@sendbird/uikit-tools' package.
|
|
17
17
|
* */
|
|
18
18
|
export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
|
|
19
|
-
const queryRef = useRef();
|
|
19
|
+
const queryRef = useRef(undefined);
|
|
20
20
|
const handlerId = useUniqHandlerId('useGroupChannelMessagesWithQuery');
|
|
21
21
|
const forceUpdate = useForceUpdate();
|
|
22
22
|
const {
|