@sendbird/uikit-chat-hooks 2.4.2 → 2.5.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/lib/commonjs/channel/{useGroupChannelMessages/reducer.js → useChannelMessagesReducer.js} +39 -30
  2. package/lib/commonjs/channel/useChannelMessagesReducer.js.map +1 -0
  3. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +169 -99
  4. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  5. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +56 -25
  6. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  7. package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js +0 -4
  8. package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -1
  9. package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +128 -28
  10. package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
  11. package/lib/commonjs/common/useUserList.js +2 -2
  12. package/lib/commonjs/common/useUserList.js.map +1 -1
  13. package/lib/commonjs/types.js.map +1 -1
  14. package/lib/module/channel/{useGroupChannelMessages/reducer.js → useChannelMessagesReducer.js} +38 -29
  15. package/lib/module/channel/useChannelMessagesReducer.js.map +1 -0
  16. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +170 -100
  17. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  18. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +57 -26
  19. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  20. package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js +0 -4
  21. package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -1
  22. package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +129 -29
  23. package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
  24. package/lib/module/common/useUserList.js +2 -2
  25. package/lib/module/common/useUserList.js.map +1 -1
  26. package/lib/module/types.js.map +1 -1
  27. package/lib/typescript/src/channel/useChannelMessagesReducer.d.ts +18 -0
  28. package/lib/typescript/src/types.d.ts +51 -20
  29. package/package.json +4 -5
  30. package/src/channel/useChannelMessagesReducer.ts +143 -0
  31. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +168 -96
  32. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +62 -25
  33. package/src/channel/useOpenChannelList/useOpenChannelListWithQuery.ts +0 -4
  34. package/src/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.ts +142 -25
  35. package/src/common/useUserList.ts +2 -2
  36. package/src/types.ts +58 -20
  37. package/lib/commonjs/channel/useGroupChannelMessages/reducer.js.map +0 -1
  38. package/lib/commonjs/channel/useOpenChannelMessages/reducer.js +0 -144
  39. package/lib/commonjs/channel/useOpenChannelMessages/reducer.js.map +0 -1
  40. package/lib/module/channel/useGroupChannelMessages/reducer.js.map +0 -1
  41. package/lib/module/channel/useOpenChannelMessages/reducer.js +0 -137
  42. package/lib/module/channel/useOpenChannelMessages/reducer.js.map +0 -1
  43. package/lib/typescript/src/channel/useGroupChannelMessages/reducer.d.ts +0 -15
  44. package/lib/typescript/src/channel/useOpenChannelMessages/reducer.d.ts +0 -15
  45. package/src/channel/useGroupChannelMessages/reducer.ts +0 -126
  46. package/src/channel/useOpenChannelMessages/reducer.ts +0 -126
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_groupChannel","_uikitUtils","_useChannelHandler","_reducer","createMessageCollection","channel","creator","filter","MessageFilter","limit","useGroupChannelMessagesWithCollection","sdk","userId","options","forceUpdate","useForceUpdate","collectionRef","useRef","handlerId","useUniqHandlerId","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useGroupChannelMessagesReducer","sortComparator","channelMarkAsRead","source","MessageEventSource","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT_SUCCESS","SYNC_MESSAGE_FILL","undefined","confirmAndMarkAsRead","e","Logger","warn","init","useFreshCallback","uid","callback","_collectionRef$curren","current","dispose","_collectionRef$curren2","collectionCreator","currentUser","setMessageCollectionHandler","onMessagesAdded","_","__","onMessagesUpdated","nextMessageIds","map","it","messageId","nonAddedMessagesFromReceivedEvent","indexOf","onMessagesDeleted","messageIds","onChannelDeleted","_options$onChannelDel","call","onChannelUpdated","eventChannel","isGroupChannel","isDifferentChannel","onHugeGapDetected","initialize","MessageCollectionInitPolicy","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","error","_collectionRef$curren3","_collectionRef$curren4","debug","length","pendingMessages","failedMessages","onApiResult","_collectionRef$curren5","_collectionRef$curren6","useChannelHandler","onUserBanned","bannedUser","_options$onChannelDel2","useEffect","setTimeout","url","_collectionRef$curren7","refresh","prev","_collectionRef$curren8","hasPrevious","_collectionRef$curren9","list","loadPrevious","next","_collectionRef$curren10","messageCandidates","hasNext","_collectionRef$curren11","fetchedList","loadNext","push","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","_failedMessage","sendFileMessage","isFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","resentMessage","resendUserMessage","resendFileMessage","deleteMessage","message","sendingStatus","_collectionRef$curren12","removeFailedMessage","reqId","exports"],"sources":["useGroupChannelMessagesWithCollection.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { MessageCollectionInitPolicy, MessageEventSource, MessageFilter } from '@sendbird/chat/groupChannel';\nimport type {\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessageCollection,\n} from '@sendbird/uikit-utils';\nimport {\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageCollection = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['collectionCreator'],\n) => {\n if (creator) return creator();\n const filter = new MessageFilter();\n return channel.createMessageCollection({ filter, limit: 100 });\n};\n\nexport const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const forceUpdate = useForceUpdate();\n const collectionRef = useRef<SendbirdMessageCollection>();\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithCollection');\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAsRead = async (source?: MessageEventSource) => {\n try {\n switch (source) {\n case MessageEventSource.EVENT_MESSAGE_RECEIVED:\n case MessageEventSource.EVENT_MESSAGE_SENT_SUCCESS:\n case MessageEventSource.SYNC_MESSAGE_FILL:\n case undefined:\n await confirmAndMarkAsRead([channel]);\n break;\n }\n } catch (e) {\n Logger.warn('[useGroupChannelMessagesWithCollection/channelMarkAsRead]', e);\n }\n };\n\n const init = useFreshCallback(async (uid?: string, callback?: () => void) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createMessageCollection(channel, options?.collectionCreator);\n updateNextMessages([], true, sdk.currentUser.userId);\n channelMarkAsRead();\n\n collectionRef.current?.setMessageCollectionHandler({\n onMessagesAdded: (_, __, messages) => {\n channelMarkAsRead(_.source);\n updateNextMessages(messages, false, sdk.currentUser.userId);\n },\n onMessagesUpdated: (_, __, messages) => {\n channelMarkAsRead(_.source);\n\n // NOTE: admin message is not added via onMessagesAdded handler, not checked yet is this a bug.\n if (_.source === MessageEventSource.EVENT_MESSAGE_RECEIVED) {\n const nextMessageIds = nextMessages.map((it) => it.messageId);\n const nonAddedMessagesFromReceivedEvent = messages.filter(\n (it) => nextMessageIds.indexOf(it.messageId) === -1,\n );\n updateNextMessages(nonAddedMessagesFromReceivedEvent, false, sdk.currentUser.userId);\n }\n\n // NOTE: v4 MESSAGE_RECEIVED is called twice from onMessagesAdded and onMessagesUpdated when receiving new message.\n // This is not intended behavior but not bugs.\n if (_.source !== MessageEventSource.EVENT_MESSAGE_RECEIVED) {\n updateMessages(messages, false, sdk.currentUser.userId);\n }\n },\n onMessagesDeleted: (_, __, messageIds) => {\n deleteMessages(messageIds, []);\n deleteNextMessages(messageIds, []);\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(uid);\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 {\n Logger.debug('[useGroupChannelMessagesWithCollection/onCacheResult]', 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n }\n callback?.();\n })\n .onApiResult((err, messages) => {\n if (err) Logger.warn('[useGroupChannelMessagesWithCollection/onApiResult]', err);\n else {\n Logger.debug('[useGroupChannelMessagesWithCollection/onApiResult]', 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser.userId);\n if (sdk.isCacheEnabled) {\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n }\n }\n callback?.();\n });\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(userId, () => updateLoading(false));\n }, 0);\n }, [channel.url, userId]);\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(userId, () => 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 next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(async () => {\n const messageCandidates: SendbirdBaseMessage[] = [];\n\n if (collectionRef.current && collectionRef.current?.hasNext) {\n try {\n const fetchedList = await collectionRef.current?.loadNext();\n messageCandidates.push(...fetchedList);\n } catch {}\n }\n\n if (nextMessages.length > 0) {\n messageCandidates.push(...nextMessages);\n }\n\n if (messageCandidates.length > 0) {\n updateMessages(messageCandidates, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\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 // updateMessages([failedMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage as SendbirdFileMessage);\n }\n })\n .onFailed((err, _failedMessage) => {\n // updateMessages([failedMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useFreshCallback(\n async (failedMessage) => {\n const 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\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","require","_groupChannel","_uikitUtils","_useChannelHandler","_useChannelMessagesReducer","MESSAGE_LIMIT","DEFAULT","SEARCH","createMessageCollection","channel","limit","options","collectionCreator","startingPoint","filter","MessageFilter","isNotEmpty","arr","length","useGroupChannelMessagesWithCollection","sdk","userId","initialStartingPoint","Number","MAX_SAFE_INTEGER","initialLimit","forceUpdate","useForceUpdate","collectionRef","useRef","collectionInitializedRef","handlerId","useUniqHandlerId","loading","refreshing","messages","newMessages","updateMessages","updateNewMessages","deleteNewMessages","deleteMessages","updateLoading","updateRefreshing","useChannelMessagesReducer","sortComparator","channelMarkAsRead","source","MessageEventSource","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT_SUCCESS","SYNC_MESSAGE_FILL","undefined","confirmAndMarkAsRead","e","Logger","warn","updateUnsendMessages","pendingMessages","failedMessages","current","currentUser","init","useFreshCallback","callback","_collectionRef$curren","_collectionRef$curren2","dispose","setMessageCollectionHandler","onMessagesAdded","_","__","incomingMessages","it","EVENT_MESSAGE_SENT_PENDING","EVENT_MESSAGE_SENT_FAILED","isMyMessage","_options$shouldCountN","shouldCountNewMessages","call","_options$onMessagesRe","onMessagesReceived","onMessagesUpdated","EVENT_MESSAGE_UPDATED","_options$shouldCountN2","onMessagesDeleted","messageIds","onChannelDeleted","_options$onChannelDel","onChannelUpdated","eventChannel","isGroupChannel","isDifferentChannel","onHugeGapDetected","initialize","MessageCollectionInitPolicy","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","error","debug","onApiResult","_options$onMessagesRe2","useChannelHandler","onUserBanned","bannedUser","_options$onChannelDel2","useEffect","setTimeout","url","_collectionRef$curren3","refresh","prev","_collectionRef$curren4","hasPrevious","_collectionRef$curren5","list","loadPrevious","hasPrev","next","_collectionRef$curren6","hasNext","_collectionRef$curren7","fetchedList","loadNext","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","failedMessage","sendFileMessage","isFileMessage","updateUserMessage","messageId","updatedMessage","updateFileMessage","resendMessage","resentMessage","resendUserMessage","resendFileMessage","deleteMessage","message","sendingStatus","_collectionRef$curren8","removeFailedMessage","reqId","resetNewMessages","resetWithStartingPoint","nextMessages","newMessagesFromMembers","exports"],"sources":["useGroupChannelMessagesWithCollection.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { MessageCollectionInitPolicy, MessageEventSource, MessageFilter } from '@sendbird/chat/groupChannel';\nimport type { SendbirdFileMessage, SendbirdGroupChannel, SendbirdMessageCollection } from '@sendbird/uikit-utils';\nimport {\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n isMyMessage,\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 const filter = new MessageFilter();\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\nexport const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const initialStartingPoint = options?.startingPoint ?? Number.MAX_SAFE_INTEGER;\n const initialLimit = typeof options?.startingPoint === 'number' ? MESSAGE_LIMIT.SEARCH : MESSAGE_LIMIT.DEFAULT;\n\n const forceUpdate = useForceUpdate();\n const collectionRef = useRef<SendbirdMessageCollection>();\n const collectionInitializedRef = useRef(false);\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithCollection');\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n updateNewMessages,\n deleteNewMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const channelMarkAsRead = async (source?: MessageEventSource) => {\n try {\n switch (source) {\n case MessageEventSource.EVENT_MESSAGE_RECEIVED:\n case MessageEventSource.EVENT_MESSAGE_SENT_SUCCESS:\n case MessageEventSource.SYNC_MESSAGE_FILL:\n case undefined:\n await confirmAndMarkAsRead([channel]);\n break;\n }\n } catch (e) {\n Logger.warn('[useGroupChannelMessagesWithCollection/channelMarkAsRead]', e);\n }\n };\n\n const updateUnsendMessages = () => {\n const { pendingMessages, failedMessages } = collectionRef.current ?? {};\n if (isNotEmpty(pendingMessages)) updateMessages(pendingMessages, false, sdk.currentUser.userId);\n if (isNotEmpty(failedMessages)) updateMessages(failedMessages, false, sdk.currentUser.userId);\n };\n\n const init = useFreshCallback(async (startingPoint: number, limit: number, callback?: () => void) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n channelMarkAsRead();\n updateNewMessages([], true, sdk.currentUser.userId);\n\n collectionInitializedRef.current = false;\n collectionRef.current = createMessageCollection(channel, limit, {\n collectionCreator: options?.collectionCreator,\n startingPoint,\n });\n\n collectionRef.current?.setMessageCollectionHandler({\n onMessagesAdded: (_, __, messages) => {\n channelMarkAsRead(_.source);\n\n const incomingMessages = messages.filter((it) => {\n switch (_.source) {\n case MessageEventSource.EVENT_MESSAGE_SENT_PENDING:\n case MessageEventSource.EVENT_MESSAGE_SENT_SUCCESS:\n case MessageEventSource.EVENT_MESSAGE_SENT_FAILED:\n return !isMyMessage(it, sdk.currentUser.userId);\n default:\n return true;\n }\n });\n\n if (incomingMessages.length > 0) {\n updateMessages(incomingMessages, false, sdk.currentUser.userId);\n\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages(incomingMessages, false, sdk.currentUser.userId);\n }\n\n switch (_.source) {\n case MessageEventSource.EVENT_MESSAGE_RECEIVED:\n case MessageEventSource.SYNC_MESSAGE_FILL: {\n options?.onMessagesReceived?.(incomingMessages);\n }\n }\n }\n },\n onMessagesUpdated: (_, __, messages) => {\n channelMarkAsRead(_.source);\n\n const incomingMessages = messages.filter((it) => {\n switch (_.source) {\n case MessageEventSource.EVENT_MESSAGE_UPDATED:\n return !isMyMessage(it, sdk.currentUser.userId);\n default:\n return true;\n }\n });\n\n if (incomingMessages.length > 0) {\n // NOTE: admin message is not added via onMessagesAdded handler, not checked yet is this a bug.\n updateMessages(messages, false, sdk.currentUser.userId);\n\n if (options?.shouldCountNewMessages?.()) {\n if (_.source === MessageEventSource.EVENT_MESSAGE_RECEIVED) {\n updateNewMessages(messages, false, sdk.currentUser.userId);\n }\n }\n }\n },\n onMessagesDeleted: (_, __, messageIds) => {\n deleteMessages(messageIds, []);\n deleteNewMessages(messageIds, []);\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 {\n Logger.debug('[useGroupChannelMessagesWithCollection/onCacheResult]', 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser.userId);\n updateUnsendMessages();\n }\n\n callback?.();\n })\n .onApiResult((err, messages) => {\n if (err) Logger.warn('[useGroupChannelMessagesWithCollection/onApiResult]', err);\n else {\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) updateUnsendMessages();\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]);\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 updateMessages([failedMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage as SendbirdFileMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n updateMessages([failedMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useFreshCallback(\n async (failedMessage) => {\n const 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 updateLoading(true);\n updateMessages([], true, sdk.currentUser.userId);\n init(startingPoint, MESSAGE_LIMIT.DEFAULT, () => {\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 nextMessages: newMessages,\n newMessagesFromMembers: newMessages,\n };\n};\n"],"mappings":"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"}
@@ -7,7 +7,7 @@ exports.useGroupChannelMessagesWithQuery = void 0;
7
7
  var _react = require("react");
8
8
  var _uikitUtils = require("@sendbird/uikit-utils");
9
9
  var _useChannelHandler = require("../../handler/useChannelHandler");
10
- var _reducer = require("./reducer");
10
+ var _useChannelMessagesReducer = require("../useChannelMessagesReducer");
11
11
  const createMessageQuery = (channel, creator) => {
12
12
  if (creator) return creator();
13
13
  return channel.createPreviousMessageListQuery({
@@ -23,15 +23,14 @@ const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
23
23
  loading,
24
24
  refreshing,
25
25
  messages,
26
- nextMessages,
27
- newMessagesFromMembers,
26
+ newMessages,
28
27
  updateMessages,
29
- updateNextMessages,
30
- deleteNextMessages,
31
28
  deleteMessages,
29
+ updateNewMessages,
30
+ deleteNewMessages,
32
31
  updateLoading,
33
32
  updateRefreshing
34
- } = (0, _reducer.useGroupChannelMessagesReducer)(userId, options === null || options === void 0 ? void 0 : options.sortComparator);
33
+ } = (0, _useChannelMessagesReducer.useChannelMessagesReducer)(options === null || options === void 0 ? void 0 : options.sortComparator);
35
34
  const channelMarkAsRead = async () => {
36
35
  try {
37
36
  await (0, _uikitUtils.confirmAndMarkAsRead)([channel]);
@@ -42,14 +41,14 @@ const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
42
41
  const init = (0, _uikitUtils.useFreshCallback)(async uid => {
43
42
  if (uid) {
44
43
  var _queryRef$current;
45
- queryRef.current = createMessageQuery(channel, options === null || options === void 0 ? void 0 : options.queryCreator);
46
44
  channelMarkAsRead();
45
+ updateNewMessages([], true, sdk.currentUser.userId);
46
+ queryRef.current = createMessageQuery(channel, options === null || options === void 0 ? void 0 : options.queryCreator);
47
47
  if ((_queryRef$current = queryRef.current) !== null && _queryRef$current !== void 0 && _queryRef$current.hasNext) {
48
48
  var _queryRef$current2;
49
49
  const list = await ((_queryRef$current2 = queryRef.current) === null || _queryRef$current2 === void 0 ? void 0 : _queryRef$current2.load());
50
50
  updateMessages(list, true, sdk.currentUser.userId);
51
51
  }
52
- updateNextMessages([], true, sdk.currentUser.userId);
53
52
  }
54
53
  });
55
54
  const channelUpdater = channel => {
@@ -60,18 +59,40 @@ const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
60
59
  (0, _useChannelHandler.useChannelHandler)(sdk, handlerId, {
61
60
  // Messages
62
61
  onMessageReceived(eventChannel, message) {
62
+ var _options$shouldCountN;
63
63
  if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
64
+ if ((0, _uikitUtils.isMyMessage)(message, sdk.currentUser.userId)) return;
64
65
  channelMarkAsRead();
65
- updateNextMessages([message], false, sdk.currentUser.userId);
66
+ updateMessages([message], false, sdk.currentUser.userId);
67
+ if (options !== null && options !== void 0 && (_options$shouldCountN = options.shouldCountNewMessages) !== null && _options$shouldCountN !== void 0 && _options$shouldCountN.call(options)) {
68
+ updateNewMessages([message], false, sdk.currentUser.userId);
69
+ }
70
+ if (options !== null && options !== void 0 && options.onMessagesReceived) {
71
+ options.onMessagesReceived([message]);
72
+ }
66
73
  },
67
74
  onMessageUpdated(eventChannel, message) {
68
75
  if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
76
+ if ((0, _uikitUtils.isMyMessage)(message, sdk.currentUser.userId)) return;
69
77
  updateMessages([message], false, sdk.currentUser.userId);
70
78
  },
71
79
  onMessageDeleted(eventChannel, messageId) {
72
80
  if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
73
81
  deleteMessages([messageId], []);
74
- deleteNextMessages([messageId], []);
82
+ deleteNewMessages([messageId], []);
83
+ },
84
+ async onReactionUpdated(eventChannel, reactionEvent) {
85
+ if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
86
+ const message = await sdk.message.getMessage({
87
+ messageId: reactionEvent.messageId,
88
+ includeReactions: true,
89
+ includeParentMessageInfo: true,
90
+ includeThreadInfo: true,
91
+ includeMetaArray: true,
92
+ channelUrl: channel.url,
93
+ channelType: channel.channelType
94
+ });
95
+ updateMessages([message], false, sdk.currentUser.userId);
75
96
  },
76
97
  // Channels
77
98
  onChannelChanged: channelUpdater,
@@ -123,26 +144,26 @@ const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
123
144
  updateMessages(list, false, sdk.currentUser.userId);
124
145
  }
125
146
  });
126
- const next = (0, _uikitUtils.useFreshCallback)(async () => {
127
- if (nextMessages.length > 0) {
128
- updateMessages(nextMessages, false, sdk.currentUser.userId);
129
- updateNextMessages([], true, sdk.currentUser.userId);
130
- }
147
+ const hasPrev = (0, _uikitUtils.useFreshCallback)(() => {
148
+ var _queryRef$current5;
149
+ return ((_queryRef$current5 = queryRef.current) === null || _queryRef$current5 === void 0 ? void 0 : _queryRef$current5.hasNext) ?? false;
131
150
  });
151
+ const next = (0, _uikitUtils.useFreshCallback)(_uikitUtils.ASYNC_NOOP);
152
+ const hasNext = (0, _uikitUtils.useFreshCallback)(() => false);
132
153
  const sendUserMessage = (0, _uikitUtils.useFreshCallback)((params, onPending) => {
133
154
  return new Promise((resolve, reject) => {
134
155
  channel.sendUserMessage(params).onPending(pendingMessage => {
135
156
  if (pendingMessage.isUserMessage()) {
136
- updateNextMessages([pendingMessage], false, sdk.currentUser.userId);
157
+ updateMessages([pendingMessage], false, sdk.currentUser.userId);
137
158
  onPending === null || onPending === void 0 ? void 0 : onPending(pendingMessage);
138
159
  }
139
160
  }).onSucceeded(sentMessage => {
140
161
  if (sentMessage.isUserMessage()) {
141
- updateNextMessages([sentMessage], false, sdk.currentUser.userId);
162
+ updateMessages([sentMessage], false, sdk.currentUser.userId);
142
163
  resolve(sentMessage);
143
164
  }
144
165
  }).onFailed((err, sentMessage) => {
145
- updateNextMessages([sentMessage], false, sdk.currentUser.userId);
166
+ updateMessages([sentMessage], false, sdk.currentUser.userId);
146
167
  reject(err);
147
168
  });
148
169
  });
@@ -151,16 +172,16 @@ const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
151
172
  return new Promise((resolve, reject) => {
152
173
  channel.sendFileMessage(params).onPending(pendingMessage => {
153
174
  if (pendingMessage.isFileMessage()) {
154
- updateNextMessages([pendingMessage], false, sdk.currentUser.userId);
175
+ updateMessages([pendingMessage], false, sdk.currentUser.userId);
155
176
  onPending === null || onPending === void 0 ? void 0 : onPending(pendingMessage);
156
177
  }
157
178
  }).onSucceeded(sentMessage => {
158
179
  if (sentMessage.isFileMessage()) {
159
- updateNextMessages([sentMessage], false, sdk.currentUser.userId);
180
+ updateMessages([sentMessage], false, sdk.currentUser.userId);
160
181
  resolve(sentMessage);
161
182
  }
162
183
  }).onFailed((err, sentMessage) => {
163
- updateNextMessages([sentMessage], false, sdk.currentUser.userId);
184
+ updateMessages([sentMessage], false, sdk.currentUser.userId);
164
185
  reject(err);
165
186
  });
166
187
  });
@@ -181,7 +202,7 @@ const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
181
202
  if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);
182
203
  return null;
183
204
  })();
184
- if (message) updateNextMessages([message], false, sdk.currentUser.userId);
205
+ if (message) updateMessages([message], false, sdk.currentUser.userId);
185
206
  });
186
207
  const deleteMessage = (0, _uikitUtils.useFreshCallback)(async message => {
187
208
  if (message.sendingStatus === 'succeeded') {
@@ -191,21 +212,31 @@ const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
191
212
  deleteMessages([message.messageId], [message.reqId]);
192
213
  }
193
214
  });
215
+ const resetNewMessages = (0, _uikitUtils.useFreshCallback)(() => {
216
+ updateNewMessages([], true, sdk.currentUser.userId);
217
+ });
194
218
  return {
195
219
  loading,
196
220
  refreshing,
197
221
  refresh,
198
222
  messages,
199
- nextMessages,
200
- newMessagesFromMembers,
223
+ newMessages,
224
+ resetNewMessages,
201
225
  next,
226
+ hasNext,
202
227
  prev,
228
+ hasPrev,
203
229
  sendUserMessage,
204
230
  sendFileMessage,
205
231
  updateUserMessage,
206
232
  updateFileMessage,
207
233
  resendMessage,
208
- deleteMessage
234
+ deleteMessage,
235
+ resetWithStartingPoint() {
236
+ _uikitUtils.Logger.warn('resetWithStartingPoint is not supported in Query, please use Collection instead.');
237
+ },
238
+ nextMessages: newMessages,
239
+ newMessagesFromMembers: newMessages
209
240
  };
210
241
  };
211
242
  exports.useGroupChannelMessagesWithQuery = useGroupChannelMessagesWithQuery;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_reducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useGroupChannelMessagesWithQuery","sdk","userId","options","queryRef","useRef","handlerId","useUniqHandlerId","forceUpdate","useForceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useGroupChannelMessagesReducer","sortComparator","channelMarkAsRead","confirmAndMarkAsRead","e","Logger","warn","init","useFreshCallback","uid","_queryRef$current","current","queryCreator","hasNext","_queryRef$current2","list","load","currentUser","channelUpdater","isGroupChannel","isDifferentChannel","useChannelHandler","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","foundChannel","find","c","onChannelDeleted","channelUrl","_options$onChannelDel","url","call","onOperatorUpdated","onUserLeft","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_options$onChannelDel2","useAsyncEffect","refresh","prev","_queryRef$current3","_queryRef$current4","next","length","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","err","sendFileMessage","isFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","exports"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type {\n SendbirdBaseChannel,\n SendbirdGroupChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageQuery = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['queryCreator'],\n) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithQuery');\n\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAsRead = async () => {\n try {\n await confirmAndMarkAsRead([channel]);\n } catch (e) {\n Logger.warn('[useGroupChannelMessagesWithQuery/channelMarkAsRead]', e);\n }\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n channelMarkAsRead();\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser.userId);\n }\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, handlerId, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n channelMarkAsRead();\n updateNextMessages([message], false, sdk.currentUser.userId);\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNextMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const foundChannel = channels.find((c) => !isDifferentChannel(c, channel));\n if (foundChannel) channelUpdater(foundChannel);\n },\n onChannelDeleted(channelUrl: string) {\n if (channel.url === channelUrl) options?.onChannelDeleted?.();\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserLeft: channelUpdater,\n // onUserEntered: channelUpdater,\n // onUserExited: channelUpdater,\n onUserJoined: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useFreshCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser.userId);\n }\n });\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(async () => {\n if (nextMessages.length > 0) {\n updateMessages(nextMessages, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\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 updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, sentMessage) => {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\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 updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, sentMessage) => {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useFreshCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateNextMessages([message], false, sdk.currentUser.userId);\n },\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_useChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useGroupChannelMessagesWithQuery","sdk","userId","options","queryRef","useRef","handlerId","useUniqHandlerId","forceUpdate","useForceUpdate","loading","refreshing","messages","newMessages","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","useChannelMessagesReducer","sortComparator","channelMarkAsRead","confirmAndMarkAsRead","e","Logger","warn","init","useFreshCallback","uid","_queryRef$current","currentUser","current","queryCreator","hasNext","_queryRef$current2","list","load","channelUpdater","isGroupChannel","isDifferentChannel","useChannelHandler","onMessageReceived","eventChannel","message","_options$shouldCountN","isMyMessage","shouldCountNewMessages","call","onMessagesReceived","onMessageUpdated","onMessageDeleted","messageId","onReactionUpdated","reactionEvent","getMessage","includeReactions","includeParentMessageInfo","includeThreadInfo","includeMetaArray","channelUrl","url","channelType","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","foundChannel","find","c","onChannelDeleted","_options$onChannelDel","onOperatorUpdated","onUserLeft","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_options$onChannelDel2","useAsyncEffect","refresh","prev","_queryRef$current3","_queryRef$current4","hasPrev","_queryRef$current5","next","ASYNC_NOOP","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","err","sendFileMessage","isFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","resetWithStartingPoint","nextMessages","newMessagesFromMembers","exports"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type {\n SendbirdBaseChannel,\n SendbirdGroupChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n ASYNC_NOOP,\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n isMyMessage,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useChannelMessagesReducer } from '../useChannelMessagesReducer';\n\nconst createMessageQuery = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['queryCreator'],\n) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithQuery');\n\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n deleteMessages,\n updateNewMessages,\n deleteNewMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const channelMarkAsRead = async () => {\n try {\n await confirmAndMarkAsRead([channel]);\n } catch (e) {\n Logger.warn('[useGroupChannelMessagesWithQuery/channelMarkAsRead]', e);\n }\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n channelMarkAsRead();\n updateNewMessages([], true, sdk.currentUser.userId);\n\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser.userId);\n }\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, handlerId, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser.userId)) return;\n\n channelMarkAsRead();\n\n updateMessages([message], false, sdk.currentUser.userId);\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages([message], false, sdk.currentUser.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived([message]);\n }\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser.userId)) return;\n\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNewMessages([messageId], []);\n },\n async onReactionUpdated(eventChannel, reactionEvent) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n const message = await sdk.message.getMessage({\n messageId: reactionEvent.messageId,\n includeReactions: true,\n includeParentMessageInfo: true,\n includeThreadInfo: true,\n includeMetaArray: true,\n channelUrl: channel.url,\n channelType: channel.channelType,\n });\n updateMessages([message], false, sdk.currentUser.userId);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const foundChannel = channels.find((c) => !isDifferentChannel(c, channel));\n if (foundChannel) channelUpdater(foundChannel);\n },\n onChannelDeleted(channelUrl: string) {\n if (channel.url === channelUrl) options?.onChannelDeleted?.();\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserLeft: channelUpdater,\n // onUserEntered: channelUpdater,\n // onUserExited: channelUpdater,\n onUserJoined: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useFreshCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser.userId);\n }\n });\n const hasPrev: ReturnType<UseGroupChannelMessages>['hasPrev'] = useFreshCallback(\n () => queryRef.current?.hasNext ?? false,\n );\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(ASYNC_NOOP);\n const hasNext: ReturnType<UseGroupChannelMessages>['hasNext'] = useFreshCallback(() => false);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, sentMessage) => {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, sentMessage) => {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useFreshCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser.userId);\n },\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n });\n const resetNewMessages: ReturnType<UseGroupChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser.userId);\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n newMessages,\n resetNewMessages,\n next,\n hasNext,\n prev,\n hasPrev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint() {\n Logger.warn('resetWithStartingPoint is not supported in Query, please use Collection instead.');\n },\n\n nextMessages: newMessages,\n newMessagesFromMembers: newMessages,\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAOA,IAAAC,WAAA,GAAAD,OAAA;AAYA,IAAAE,kBAAA,GAAAF,OAAA;AAEA,IAAAG,0BAAA,GAAAH,OAAA;AAEA,MAAMI,kBAAkB,GAAGA,CACzBC,OAA6B,EAC7BC,OAAwD,KACrD;EACH,IAAIA,OAAO,EAAE,OAAOA,OAAO,EAAE;EAC7B,OAAOD,OAAO,CAACE,8BAA8B,CAAC;IAC5CC,KAAK,EAAE,GAAG;IACVC,OAAO,EAAE;EACX,CAAC,CAAC;AACJ,CAAC;AAEM,MAAMC,gCAAyD,GAAGA,CAACC,GAAG,EAAEN,OAAO,EAAEO,MAAM,EAAEC,OAAO,KAAK;EAC1G,MAAMC,QAAQ,GAAG,IAAAC,aAAM,GAAoC;EAC3D,MAAMC,SAAS,GAAG,IAAAC,4BAAgB,EAAC,kCAAkC,CAAC;EAEtE,MAAMC,WAAW,GAAG,IAAAC,0BAAc,GAAE;EAEpC,MAAM;IACJC,OAAO;IACPC,UAAU;IACVC,QAAQ;IACRC,WAAW;IACXC,cAAc;IACdC,cAAc;IACdC,iBAAiB;IACjBC,iBAAiB;IACjBC,aAAa;IACbC;EACF,CAAC,GAAG,IAAAC,oDAAyB,EAACjB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEkB,cAAc,CAAC;EAEtD,MAAMC,iBAAiB,GAAG,MAAAA,CAAA,KAAY;IACpC,IAAI;MACF,MAAM,IAAAC,gCAAoB,EAAC,CAAC5B,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,OAAO6B,CAAC,EAAE;MACVC,kBAAM,CAACC,IAAI,CAAC,sDAAsD,EAAEF,CAAC,CAAC;IACxE;EACF,CAAC;EAED,MAAMG,IAAI,GAAG,IAAAC,4BAAgB,EAAC,MAAOC,GAAY,IAAK;IACpD,IAAIA,GAAG,EAAE;MAAA,IAAAC,iBAAA;MACPR,iBAAiB,EAAE;MACnBN,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAEf,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;MAEnDE,QAAQ,CAAC4B,OAAO,GAAGtC,kBAAkB,CAACC,OAAO,EAAEQ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE8B,YAAY,CAAC;MACrE,KAAAH,iBAAA,GAAI1B,QAAQ,CAAC4B,OAAO,cAAAF,iBAAA,eAAhBA,iBAAA,CAAkBI,OAAO,EAAE;QAAA,IAAAC,kBAAA;QAC7B,MAAMC,IAAI,GAAG,QAAAD,kBAAA,GAAM/B,QAAQ,CAAC4B,OAAO,cAAAG,kBAAA,uBAAhBA,kBAAA,CAAkBE,IAAI,EAAE;QAC3CvB,cAAc,CAACsB,IAAI,EAAE,IAAI,EAAEnC,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;MACpD;IACF;EACF,CAAC,CAAC;EAEF,MAAMoC,cAAc,GAAI3C,OAA4B,IAAK;IACvD,IAAIA,OAAO,CAAC4C,cAAc,EAAE,IAAI,CAAC,IAAAC,8BAAkB,EAAC7C,OAAO,EAAEA,OAAO,CAAC,EAAE;MACrEa,WAAW,EAAE;IACf;EACF,CAAC;EAED,IAAAiC,oCAAiB,EAACxC,GAAG,EAAEK,SAAS,EAAE;IAChC;IACAoC,iBAAiBA,CAACC,YAAY,EAAEC,OAAO,EAAE;MAAA,IAAAC,qBAAA;MACvC,IAAI,IAAAL,8BAAkB,EAAC7C,OAAO,EAAEgD,YAAY,CAAC,EAAE;MAC/C,IAAI,IAAAG,uBAAW,EAACF,OAAO,EAAE3C,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC,EAAE;MAElDoB,iBAAiB,EAAE;MAEnBR,cAAc,CAAC,CAAC8B,OAAO,CAAC,EAAE,KAAK,EAAE3C,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;MACxD,IAAIC,OAAO,aAAPA,OAAO,gBAAA0C,qBAAA,GAAP1C,OAAO,CAAE4C,sBAAsB,cAAAF,qBAAA,eAA/BA,qBAAA,CAAAG,IAAA,CAAA7C,OAAO,CAA4B,EAAE;QACvCa,iBAAiB,CAAC,CAAC4B,OAAO,CAAC,EAAE,KAAK,EAAE3C,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;MAC7D;MACA,IAAIC,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE8C,kBAAkB,EAAE;QAC/B9C,OAAO,CAAC8C,kBAAkB,CAAC,CAACL,OAAO,CAAC,CAAC;MACvC;IACF,CAAC;IACDM,gBAAgBA,CAACP,YAAY,EAAEC,OAAO,EAAE;MACtC,IAAI,IAAAJ,8BAAkB,EAAC7C,OAAO,EAAEgD,YAAY,CAAC,EAAE;MAC/C,IAAI,IAAAG,uBAAW,EAACF,OAAO,EAAE3C,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC,EAAE;MAElDY,cAAc,CAAC,CAAC8B,OAAO,CAAC,EAAE,KAAK,EAAE3C,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;IAC1D,CAAC;IACDiD,gBAAgBA,CAACR,YAAY,EAAES,SAAS,EAAE;MACxC,IAAI,IAAAZ,8BAAkB,EAAC7C,OAAO,EAAEgD,YAAY,CAAC,EAAE;MAC/C5B,cAAc,CAAC,CAACqC,SAAS,CAAC,EAAE,EAAE,CAAC;MAC/BnC,iBAAiB,CAAC,CAACmC,SAAS,CAAC,EAAE,EAAE,CAAC;IACpC,CAAC;IACD,MAAMC,iBAAiBA,CAACV,YAAY,EAAEW,aAAa,EAAE;MACnD,IAAI,IAAAd,8BAAkB,EAAC7C,OAAO,EAAEgD,YAAY,CAAC,EAAE;MAE/C,MAAMC,OAAO,GAAG,MAAM3C,GAAG,CAAC2C,OAAO,CAACW,UAAU,CAAC;QAC3CH,SAAS,EAAEE,aAAa,CAACF,SAAS;QAClCI,gBAAgB,EAAE,IAAI;QACtBC,wBAAwB,EAAE,IAAI;QAC9BC,iBAAiB,EAAE,IAAI;QACvBC,gBAAgB,EAAE,IAAI;QACtBC,UAAU,EAAEjE,OAAO,CAACkE,GAAG;QACvBC,WAAW,EAAEnE,OAAO,CAACmE;MACvB,CAAC,CAAC;MACFhD,cAAc,CAAC,CAAC8B,OAAO,CAAC,EAAE,KAAK,EAAE3C,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;IAC1D,CAAC;IACD;IACA6D,gBAAgB,EAAEzB,cAAc;IAChC0B,eAAe,EAAE1B,cAAc;IAC/B2B,iBAAiB,EAAE3B,cAAc;IACjC4B,eAAe,EAAE5B,cAAc;IAC/B6B,2BAA2BA,CAACC,QAAQ,EAAE;MACpC,MAAMC,YAAY,GAAGD,QAAQ,CAACE,IAAI,CAAEC,CAAC,IAAK,CAAC,IAAA/B,8BAAkB,EAAC+B,CAAC,EAAE5E,OAAO,CAAC,CAAC;MAC1E,IAAI0E,YAAY,EAAE/B,cAAc,CAAC+B,YAAY,CAAC;IAChD,CAAC;IACDG,gBAAgBA,CAACZ,UAAkB,EAAE;MAAA,IAAAa,qBAAA;MACnC,IAAI9E,OAAO,CAACkE,GAAG,KAAKD,UAAU,EAAEzD,OAAO,aAAPA,OAAO,wBAAAsE,qBAAA,GAAPtE,OAAO,CAAEqE,gBAAgB,cAAAC,qBAAA,uBAAzBA,qBAAA,CAAAzB,IAAA,CAAA7C,OAAO,CAAsB;IAC/D,CAAC;IACD;IACAuE,iBAAiB,EAAEpC,cAAc;IACjCqC,UAAU,EAAErC,cAAc;IAC1B;IACA;IACAsC,YAAY,EAAEtC,cAAc;IAC5BuC,cAAc,EAAEvC,cAAc;IAC9BwC,WAAW,EAAExC,cAAc;IAC3ByC,aAAa,EAAEzC,cAAc;IAC7B0C,YAAYA,CAACrC,YAAY,EAAEsC,UAAU,EAAE;MACrC,IAAI,IAAAzC,8BAAkB,EAAC7C,OAAO,EAAEgD,YAAY,CAAC,EAAE;MAE/C,IAAIsC,UAAU,CAAC/E,MAAM,KAAKD,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,EAAE;QAAA,IAAAgF,sBAAA;QAChD/E,OAAO,aAAPA,OAAO,wBAAA+E,sBAAA,GAAP/E,OAAO,CAAEqE,gBAAgB,cAAAU,sBAAA,uBAAzBA,sBAAA,CAAAlC,IAAA,CAAA7C,OAAO,CAAsB;MAC/B,CAAC,MAAM;QACLmC,cAAc,CAACK,YAAY,CAAC;MAC9B;IACF;EACF,CAAC,CAAC;EAEF,IAAAwC,0BAAc,EAAC,YAAY;IACzBjE,aAAa,CAAC,IAAI,CAAC;IACnB,MAAMS,IAAI,CAACzB,MAAM,CAAC;IAClBgB,aAAa,CAAC,KAAK,CAAC;EACtB,CAAC,EAAE,CAACvB,OAAO,CAACkE,GAAG,EAAE3D,MAAM,CAAC,CAAC;EAEzB,MAAMkF,OAAuD,GAAG,IAAAxD,4BAAgB,EAAC,YAAY;IAC3FT,gBAAgB,CAAC,IAAI,CAAC;IACtB,MAAMQ,IAAI,CAACzB,MAAM,CAAC;IAClBiB,gBAAgB,CAAC,KAAK,CAAC;EACzB,CAAC,CAAC;EAEF,MAAMkE,IAAiD,GAAG,IAAAzD,4BAAgB,EAAC,YAAY;IAAA,IAAA0D,kBAAA;IACrF,IAAIlF,QAAQ,CAAC4B,OAAO,KAAAsD,kBAAA,GAAIlF,QAAQ,CAAC4B,OAAO,cAAAsD,kBAAA,eAAhBA,kBAAA,CAAkBpD,OAAO,EAAE;MAAA,IAAAqD,kBAAA;MACjD,MAAMnD,IAAI,GAAG,QAAAmD,kBAAA,GAAMnF,QAAQ,CAAC4B,OAAO,cAAAuD,kBAAA,uBAAhBA,kBAAA,CAAkBlD,IAAI,EAAE;MAC3CvB,cAAc,CAACsB,IAAI,EAAE,KAAK,EAAEnC,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;IACrD;EACF,CAAC,CAAC;EACF,MAAMsF,OAAuD,GAAG,IAAA5D,4BAAgB,EAC9E;IAAA,IAAA6D,kBAAA;IAAA,OAAM,EAAAA,kBAAA,GAAArF,QAAQ,CAAC4B,OAAO,cAAAyD,kBAAA,uBAAhBA,kBAAA,CAAkBvD,OAAO,KAAI,KAAK;EAAA,EACzC;EAED,MAAMwD,IAAiD,GAAG,IAAA9D,4BAAgB,EAAC+D,sBAAU,CAAC;EACtF,MAAMzD,OAAuD,GAAG,IAAAN,4BAAgB,EAAC,MAAM,KAAK,CAAC;EAE7F,MAAMgE,eAAuE,GAAG,IAAAhE,4BAAgB,EAC9F,CAACiE,MAAM,EAAEC,SAAS,KAAK;IACrB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCtG,OAAO,CACJiG,eAAe,CAACC,MAAM,CAAC,CACvBC,SAAS,CAAEI,cAAc,IAAK;QAC7B,IAAIA,cAAc,CAACC,aAAa,EAAE,EAAE;UAClCrF,cAAc,CAAC,CAACoF,cAAc,CAAC,EAAE,KAAK,EAAEjG,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;UAC/D4F,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAGI,cAAc,CAAC;QAC7B;MACF,CAAC,CAAC,CACDE,WAAW,CAAEC,WAAW,IAAK;QAC5B,IAAIA,WAAW,CAACF,aAAa,EAAE,EAAE;UAC/BrF,cAAc,CAAC,CAACuF,WAAW,CAAC,EAAE,KAAK,EAAEpG,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;UAC5D8F,OAAO,CAACK,WAAW,CAAC;QACtB;MACF,CAAC,CAAC,CACDC,QAAQ,CAAC,CAACC,GAAG,EAAEF,WAAW,KAAK;QAC9BvF,cAAc,CAAC,CAACuF,WAAW,CAAC,EAAE,KAAK,EAAEpG,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;QAC5D+F,MAAM,CAACM,GAAG,CAAC;MACb,CAAC,CAAC;IACN,CAAC,CAAC;EACJ,CAAC,CACF;EACD,MAAMC,eAAuE,GAAG,IAAA5E,4BAAgB,EAC9F,CAACiE,MAAM,EAAEC,SAAS,KAAK;IACrB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCtG,OAAO,CACJ6G,eAAe,CAACX,MAAM,CAAC,CACvBC,SAAS,CAAEI,cAAc,IAAK;QAC7B,IAAIA,cAAc,CAACO,aAAa,EAAE,EAAE;UAClC3F,cAAc,CAAC,CAACoF,cAAc,CAAC,EAAE,KAAK,EAAEjG,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;UAC/D4F,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAGI,cAAc,CAAC;QAC7B;MACF,CAAC,CAAC,CACDE,WAAW,CAAEC,WAAW,IAAK;QAC5B,IAAIA,WAAW,CAACI,aAAa,EAAE,EAAE;UAC/B3F,cAAc,CAAC,CAACuF,WAAW,CAAC,EAAE,KAAK,EAAEpG,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;UAC5D8F,OAAO,CAACK,WAAW,CAAC;QACtB;MACF,CAAC,CAAC,CACDC,QAAQ,CAAC,CAACC,GAAG,EAAEF,WAAW,KAAK;QAC9BvF,cAAc,CAAC,CAACuF,WAAW,CAAC,EAAE,KAAK,EAAEpG,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;QAC5D+F,MAAM,CAACM,GAAG,CAAC;MACb,CAAC,CAAC;IACN,CAAC,CAAC;EACJ,CAAC,CACF;EACD,MAAMG,iBAA2E,GAAG,IAAA9E,4BAAgB,EAClG,OAAOwB,SAAS,EAAEyC,MAAM,KAAK;IAC3B,MAAMc,cAAc,GAAG,MAAMhH,OAAO,CAAC+G,iBAAiB,CAACtD,SAAS,EAAEyC,MAAM,CAAC;IACzE/E,cAAc,CAAC,CAAC6F,cAAc,CAAC,EAAE,KAAK,EAAE1G,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;IAC/D,OAAOyG,cAAc;EACvB,CAAC,CACF;EACD,MAAMC,iBAA2E,GAAG,IAAAhF,4BAAgB,EAClG,OAAOwB,SAAS,EAAEyC,MAAM,KAAK;IAC3B,MAAMc,cAAc,GAAG,MAAMhH,OAAO,CAACiH,iBAAiB,CAACxD,SAAS,EAAEyC,MAAM,CAAC;IACzE/E,cAAc,CAAC,CAAC6F,cAAc,CAAC,EAAE,KAAK,EAAE1G,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;IAC/D,OAAOyG,cAAc;EACvB,CAAC,CACF;EACD,MAAME,aAAmE,GAAG,IAAAjF,4BAAgB,EAC1F,MAAOkF,aAAa,IAAK;IACvB,MAAMlE,OAAO,GAAG,MAAM,CAAC,MAAM;MAC3B,IAAIkE,aAAa,CAACX,aAAa,EAAE,EAAE,OAAOxG,OAAO,CAACoH,iBAAiB,CAACD,aAAa,CAAC;MAClF,IAAIA,aAAa,CAACL,aAAa,EAAE,EAAE,OAAO9G,OAAO,CAACqH,iBAAiB,CAACF,aAAa,CAAC;MAClF,OAAO,IAAI;IACb,CAAC,GAAG;IAEJ,IAAIlE,OAAO,EAAE9B,cAAc,CAAC,CAAC8B,OAAO,CAAC,EAAE,KAAK,EAAE3C,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;EACvE,CAAC,CACF;EACD,MAAM+G,aAAmE,GAAG,IAAArF,4BAAgB,EAAC,MAAOgB,OAAO,IAAK;IAC9G,IAAIA,OAAO,CAACsE,aAAa,KAAK,WAAW,EAAE;MACzC,IAAItE,OAAO,CAACuD,aAAa,EAAE,EAAE,MAAMxG,OAAO,CAACsH,aAAa,CAACrE,OAAO,CAAC;MACjE,IAAIA,OAAO,CAAC6D,aAAa,EAAE,EAAE,MAAM9G,OAAO,CAACsH,aAAa,CAACrE,OAAO,CAAC;IACnE,CAAC,MAAM;MACL7B,cAAc,CAAC,CAAC6B,OAAO,CAACQ,SAAS,CAAC,EAAE,CAACR,OAAO,CAACuE,KAAK,CAAC,CAAC;IACtD;EACF,CAAC,CAAC;EACF,MAAMC,gBAAyE,GAAG,IAAAxF,4BAAgB,EAAC,MAAM;IACvGZ,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAEf,GAAG,CAAC8B,WAAW,CAAC7B,MAAM,CAAC;EACrD,CAAC,CAAC;EAEF,OAAO;IACLQ,OAAO;IACPC,UAAU;IACVyE,OAAO;IACPxE,QAAQ;IACRC,WAAW;IACXuG,gBAAgB;IAChB1B,IAAI;IACJxD,OAAO;IACPmD,IAAI;IACJG,OAAO;IACPI,eAAe;IACfY,eAAe;IACfE,iBAAiB;IACjBE,iBAAiB;IACjBC,aAAa;IACbI,aAAa;IACbI,sBAAsBA,CAAA,EAAG;MACvB5F,kBAAM,CAACC,IAAI,CAAC,kFAAkF,CAAC;IACjG,CAAC;IAED4F,YAAY,EAAEzG,WAAW;IACzB0G,sBAAsB,EAAE1G;EAC1B,CAAC;AACH,CAAC;AAAC2G,OAAA,CAAAxH,gCAAA,GAAAA,gCAAA"}
@@ -46,10 +46,6 @@ const useOpenChannelListWithQuery = (sdk, userId, options) => {
46
46
  onChannelFrozen: updateChannel,
47
47
  onChannelUnfrozen: updateChannel,
48
48
  onChannelDeleted: url => deleteChannels([url]),
49
- onUserBanned(channel, user) {
50
- const isMe = user.userId === userId;
51
- if (isMe && channel.isOpenChannel()) deleteChannels([channel.url]);
52
- },
53
49
  onUserEntered: (channel, user) => {
54
50
  const isMe = user.userId === userId;
55
51
  if (isMe && channel.isOpenChannel() && !openChannels.find(it => it.url === channel.url)) {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_reducer","createOpenChannelListQuery","sdk","queryCreator","passedQuery","openChannel","useOpenChannelListWithQuery","userId","options","queryRef","useRef","handlerId","useUniqHandlerId","error","loading","openChannels","refreshing","updateChannels","appendChannels","deleteChannels","updateRefreshing","updateLoading","updateError","useOpenChannelListReducer","init","useFreshCallback","uid","_queryRef$current","current","hasNext","channels","next","updateChannel","channel","isOpenChannel","useChannelHandler","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelDeleted","url","onUserBanned","user","isMe","onUserEntered","find","it","refresh","useAsyncEffect","e","_queryRef$current2","exports"],"sources":["useOpenChannelListWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { SendbirdBaseChannel, SendbirdChatSDK, SendbirdOpenChannelListQuery } from '@sendbird/uikit-utils';\nimport { useAsyncEffect, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseOpenChannelList, UseOpenChannelListOptions } from '../../types';\nimport { useOpenChannelListReducer } from './reducer';\n\nconst createOpenChannelListQuery = (sdk: SendbirdChatSDK, queryCreator: UseOpenChannelListOptions['queryCreator']) => {\n const passedQuery = queryCreator?.();\n if (passedQuery) return passedQuery;\n return sdk.openChannel.createOpenChannelListQuery({});\n};\n\nexport const useOpenChannelListWithQuery: UseOpenChannelList = (sdk, userId, options) => {\n const queryRef = useRef<SendbirdOpenChannelListQuery>();\n const handlerId = useUniqHandlerId('useOpenChannelListWithQuery');\n\n const {\n error,\n loading,\n openChannels,\n refreshing,\n updateChannels,\n appendChannels,\n deleteChannels,\n updateRefreshing,\n updateLoading,\n updateError,\n } = useOpenChannelListReducer();\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createOpenChannelListQuery(sdk, options?.queryCreator);\n\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n appendChannels(channels, true);\n }\n }\n });\n\n const updateChannel = (channel: SendbirdBaseChannel) => {\n if (channel.isOpenChannel()) updateChannels([channel]);\n };\n\n useChannelHandler(\n sdk,\n handlerId,\n {\n onChannelChanged: updateChannel,\n onChannelFrozen: updateChannel,\n onChannelUnfrozen: updateChannel,\n onChannelDeleted: (url) => deleteChannels([url]),\n onUserBanned(channel, user) {\n const isMe = user.userId === userId;\n if (isMe && channel.isOpenChannel()) deleteChannels([channel.url]);\n },\n onUserEntered: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe && channel.isOpenChannel() && !openChannels.find((it) => it.url === channel.url)) {\n appendChannels([], true);\n refresh();\n }\n },\n },\n 'open',\n );\n\n useAsyncEffect(async () => {\n updateLoading(true);\n updateError(null);\n try {\n await init(userId);\n } catch (e) {\n updateError(e);\n appendChannels([], true);\n } finally {\n updateLoading(false);\n }\n }, [userId]);\n\n const refresh = useFreshCallback(async () => {\n updateRefreshing(true);\n updateError(null);\n try {\n await init(userId);\n } catch (e) {\n updateError(e);\n appendChannels([], true);\n } finally {\n updateRefreshing(false);\n }\n });\n\n const next = useFreshCallback(async () => {\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n appendChannels(channels, false);\n }\n });\n\n return {\n error,\n loading,\n openChannels,\n refresh,\n refreshing,\n next,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_reducer","createOpenChannelListQuery","sdk","queryCreator","passedQuery","openChannel","useOpenChannelListWithQuery","userId","options","queryRef","useRef","handlerId","useUniqHandlerId","error","loading","openChannels","refreshing","updateChannels","appendChannels","deleteChannels","updateRefreshing","updateLoading","updateError","useOpenChannelListReducer","init","useFreshCallback","uid","_queryRef$current","current","hasNext","channels","next","updateChannel","channel","isOpenChannel","useChannelHandler","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelDeleted","url","onUserEntered","user","isMe","find","it","refresh","useAsyncEffect","e","_queryRef$current2","exports"],"sources":["useOpenChannelListWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { SendbirdBaseChannel, SendbirdChatSDK, SendbirdOpenChannelListQuery } from '@sendbird/uikit-utils';\nimport { useAsyncEffect, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseOpenChannelList, UseOpenChannelListOptions } from '../../types';\nimport { useOpenChannelListReducer } from './reducer';\n\nconst createOpenChannelListQuery = (sdk: SendbirdChatSDK, queryCreator: UseOpenChannelListOptions['queryCreator']) => {\n const passedQuery = queryCreator?.();\n if (passedQuery) return passedQuery;\n return sdk.openChannel.createOpenChannelListQuery({});\n};\n\nexport const useOpenChannelListWithQuery: UseOpenChannelList = (sdk, userId, options) => {\n const queryRef = useRef<SendbirdOpenChannelListQuery>();\n const handlerId = useUniqHandlerId('useOpenChannelListWithQuery');\n\n const {\n error,\n loading,\n openChannels,\n refreshing,\n updateChannels,\n appendChannels,\n deleteChannels,\n updateRefreshing,\n updateLoading,\n updateError,\n } = useOpenChannelListReducer();\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createOpenChannelListQuery(sdk, options?.queryCreator);\n\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n appendChannels(channels, true);\n }\n }\n });\n\n const updateChannel = (channel: SendbirdBaseChannel) => {\n if (channel.isOpenChannel()) updateChannels([channel]);\n };\n\n useChannelHandler(\n sdk,\n handlerId,\n {\n onChannelChanged: updateChannel,\n onChannelFrozen: updateChannel,\n onChannelUnfrozen: updateChannel,\n onChannelDeleted: (url) => deleteChannels([url]),\n onUserEntered: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe && channel.isOpenChannel() && !openChannels.find((it) => it.url === channel.url)) {\n appendChannels([], true);\n refresh();\n }\n },\n },\n 'open',\n );\n\n useAsyncEffect(async () => {\n updateLoading(true);\n updateError(null);\n try {\n await init(userId);\n } catch (e) {\n updateError(e);\n appendChannels([], true);\n } finally {\n updateLoading(false);\n }\n }, [userId]);\n\n const refresh = useFreshCallback(async () => {\n updateRefreshing(true);\n updateError(null);\n try {\n await init(userId);\n } catch (e) {\n updateError(e);\n appendChannels([], true);\n } finally {\n updateRefreshing(false);\n }\n });\n\n const next = useFreshCallback(async () => {\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n appendChannels(channels, false);\n }\n });\n\n return {\n error,\n loading,\n openChannels,\n refresh,\n refreshing,\n next,\n };\n};\n"],"mappings":"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"}