@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.
- package/lib/commonjs/channel/{useGroupChannelMessages/reducer.js → useChannelMessagesReducer.js} +39 -30
- package/lib/commonjs/channel/useChannelMessagesReducer.js.map +1 -0
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +169 -99
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +56 -25
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js +0 -4
- package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +128 -28
- package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
- package/lib/commonjs/common/useUserList.js +2 -2
- package/lib/commonjs/common/useUserList.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/channel/{useGroupChannelMessages/reducer.js → useChannelMessagesReducer.js} +38 -29
- package/lib/module/channel/useChannelMessagesReducer.js.map +1 -0
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +170 -100
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +57 -26
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
- package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js +0 -4
- package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -1
- package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +129 -29
- package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
- package/lib/module/common/useUserList.js +2 -2
- package/lib/module/common/useUserList.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/src/channel/useChannelMessagesReducer.d.ts +18 -0
- package/lib/typescript/src/types.d.ts +51 -20
- package/package.json +4 -5
- package/src/channel/useChannelMessagesReducer.ts +143 -0
- package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +168 -96
- package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +62 -25
- package/src/channel/useOpenChannelList/useOpenChannelListWithQuery.ts +0 -4
- package/src/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.ts +142 -25
- package/src/common/useUserList.ts +2 -2
- package/src/types.ts +58 -20
- package/lib/commonjs/channel/useGroupChannelMessages/reducer.js.map +0 -1
- package/lib/commonjs/channel/useOpenChannelMessages/reducer.js +0 -144
- package/lib/commonjs/channel/useOpenChannelMessages/reducer.js.map +0 -1
- package/lib/module/channel/useGroupChannelMessages/reducer.js.map +0 -1
- package/lib/module/channel/useOpenChannelMessages/reducer.js +0 -137
- package/lib/module/channel/useOpenChannelMessages/reducer.js.map +0 -1
- package/lib/typescript/src/channel/useGroupChannelMessages/reducer.d.ts +0 -15
- package/lib/typescript/src/channel/useOpenChannelMessages/reducer.d.ts +0 -15
- package/src/channel/useGroupChannelMessages/reducer.ts +0 -126
- package/src/channel/useOpenChannelMessages/reducer.ts +0 -126
package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","MessageCollectionInitPolicy","MessageEventSource","MessageFilter","Logger","confirmAndMarkAsRead","isDifferentChannel","useForceUpdate","useFreshCallback","useUniqHandlerId","useChannelHandler","useGroupChannelMessagesReducer","createMessageCollection","channel","creator","filter","limit","useGroupChannelMessagesWithCollection","sdk","userId","options","forceUpdate","collectionRef","handlerId","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAsRead","source","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT_SUCCESS","SYNC_MESSAGE_FILL","undefined","e","warn","init","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","onHugeGapDetected","initialize","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","error","_collectionRef$curren3","_collectionRef$curren4","debug","length","pendingMessages","failedMessages","onApiResult","_collectionRef$curren5","_collectionRef$curren6","onUserBanned","bannedUser","_options$onChannelDel2","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"],"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":["useEffect","useRef","MessageCollectionInitPolicy","MessageEventSource","MessageFilter","Logger","confirmAndMarkAsRead","isDifferentChannel","isMyMessage","useForceUpdate","useFreshCallback","useUniqHandlerId","useChannelHandler","useChannelMessagesReducer","MESSAGE_LIMIT","DEFAULT","SEARCH","createMessageCollection","channel","limit","options","collectionCreator","startingPoint","filter","isNotEmpty","arr","length","useGroupChannelMessagesWithCollection","sdk","userId","initialStartingPoint","Number","MAX_SAFE_INTEGER","initialLimit","forceUpdate","collectionRef","collectionInitializedRef","handlerId","loading","refreshing","messages","newMessages","updateMessages","updateNewMessages","deleteNewMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAsRead","source","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT_SUCCESS","SYNC_MESSAGE_FILL","undefined","e","warn","updateUnsendMessages","pendingMessages","failedMessages","current","currentUser","init","callback","_collectionRef$curren","_collectionRef$curren2","dispose","setMessageCollectionHandler","onMessagesAdded","_","__","incomingMessages","it","EVENT_MESSAGE_SENT_PENDING","EVENT_MESSAGE_SENT_FAILED","_options$shouldCountN","shouldCountNewMessages","call","_options$onMessagesRe","onMessagesReceived","onMessagesUpdated","EVENT_MESSAGE_UPDATED","_options$shouldCountN2","onMessagesDeleted","messageIds","onChannelDeleted","_options$onChannelDel","onChannelUpdated","eventChannel","isGroupChannel","onHugeGapDetected","initialize","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","error","debug","onApiResult","_options$onMessagesRe2","onUserBanned","bannedUser","_options$onChannelDel2","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"],"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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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useRef } from 'react';
|
|
2
|
-
import { Logger, confirmAndMarkAsRead, isDifferentChannel, useAsyncEffect, useForceUpdate, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';
|
|
2
|
+
import { ASYNC_NOOP, Logger, confirmAndMarkAsRead, isDifferentChannel, isMyMessage, useAsyncEffect, useForceUpdate, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';
|
|
3
3
|
import { useChannelHandler } from '../../handler/useChannelHandler';
|
|
4
|
-
import {
|
|
4
|
+
import { useChannelMessagesReducer } from '../useChannelMessagesReducer';
|
|
5
5
|
const createMessageQuery = (channel, creator) => {
|
|
6
6
|
if (creator) return creator();
|
|
7
7
|
return channel.createPreviousMessageListQuery({
|
|
@@ -17,15 +17,14 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
17
17
|
loading,
|
|
18
18
|
refreshing,
|
|
19
19
|
messages,
|
|
20
|
-
|
|
21
|
-
newMessagesFromMembers,
|
|
20
|
+
newMessages,
|
|
22
21
|
updateMessages,
|
|
23
|
-
updateNextMessages,
|
|
24
|
-
deleteNextMessages,
|
|
25
22
|
deleteMessages,
|
|
23
|
+
updateNewMessages,
|
|
24
|
+
deleteNewMessages,
|
|
26
25
|
updateLoading,
|
|
27
26
|
updateRefreshing
|
|
28
|
-
} =
|
|
27
|
+
} = useChannelMessagesReducer(options === null || options === void 0 ? void 0 : options.sortComparator);
|
|
29
28
|
const channelMarkAsRead = async () => {
|
|
30
29
|
try {
|
|
31
30
|
await confirmAndMarkAsRead([channel]);
|
|
@@ -36,14 +35,14 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
36
35
|
const init = useFreshCallback(async uid => {
|
|
37
36
|
if (uid) {
|
|
38
37
|
var _queryRef$current;
|
|
39
|
-
queryRef.current = createMessageQuery(channel, options === null || options === void 0 ? void 0 : options.queryCreator);
|
|
40
38
|
channelMarkAsRead();
|
|
39
|
+
updateNewMessages([], true, sdk.currentUser.userId);
|
|
40
|
+
queryRef.current = createMessageQuery(channel, options === null || options === void 0 ? void 0 : options.queryCreator);
|
|
41
41
|
if ((_queryRef$current = queryRef.current) !== null && _queryRef$current !== void 0 && _queryRef$current.hasNext) {
|
|
42
42
|
var _queryRef$current2;
|
|
43
43
|
const list = await ((_queryRef$current2 = queryRef.current) === null || _queryRef$current2 === void 0 ? void 0 : _queryRef$current2.load());
|
|
44
44
|
updateMessages(list, true, sdk.currentUser.userId);
|
|
45
45
|
}
|
|
46
|
-
updateNextMessages([], true, sdk.currentUser.userId);
|
|
47
46
|
}
|
|
48
47
|
});
|
|
49
48
|
const channelUpdater = channel => {
|
|
@@ -54,18 +53,40 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
54
53
|
useChannelHandler(sdk, handlerId, {
|
|
55
54
|
// Messages
|
|
56
55
|
onMessageReceived(eventChannel, message) {
|
|
56
|
+
var _options$shouldCountN;
|
|
57
57
|
if (isDifferentChannel(channel, eventChannel)) return;
|
|
58
|
+
if (isMyMessage(message, sdk.currentUser.userId)) return;
|
|
58
59
|
channelMarkAsRead();
|
|
59
|
-
|
|
60
|
+
updateMessages([message], false, sdk.currentUser.userId);
|
|
61
|
+
if (options !== null && options !== void 0 && (_options$shouldCountN = options.shouldCountNewMessages) !== null && _options$shouldCountN !== void 0 && _options$shouldCountN.call(options)) {
|
|
62
|
+
updateNewMessages([message], false, sdk.currentUser.userId);
|
|
63
|
+
}
|
|
64
|
+
if (options !== null && options !== void 0 && options.onMessagesReceived) {
|
|
65
|
+
options.onMessagesReceived([message]);
|
|
66
|
+
}
|
|
60
67
|
},
|
|
61
68
|
onMessageUpdated(eventChannel, message) {
|
|
62
69
|
if (isDifferentChannel(channel, eventChannel)) return;
|
|
70
|
+
if (isMyMessage(message, sdk.currentUser.userId)) return;
|
|
63
71
|
updateMessages([message], false, sdk.currentUser.userId);
|
|
64
72
|
},
|
|
65
73
|
onMessageDeleted(eventChannel, messageId) {
|
|
66
74
|
if (isDifferentChannel(channel, eventChannel)) return;
|
|
67
75
|
deleteMessages([messageId], []);
|
|
68
|
-
|
|
76
|
+
deleteNewMessages([messageId], []);
|
|
77
|
+
},
|
|
78
|
+
async onReactionUpdated(eventChannel, reactionEvent) {
|
|
79
|
+
if (isDifferentChannel(channel, eventChannel)) return;
|
|
80
|
+
const message = await sdk.message.getMessage({
|
|
81
|
+
messageId: reactionEvent.messageId,
|
|
82
|
+
includeReactions: true,
|
|
83
|
+
includeParentMessageInfo: true,
|
|
84
|
+
includeThreadInfo: true,
|
|
85
|
+
includeMetaArray: true,
|
|
86
|
+
channelUrl: channel.url,
|
|
87
|
+
channelType: channel.channelType
|
|
88
|
+
});
|
|
89
|
+
updateMessages([message], false, sdk.currentUser.userId);
|
|
69
90
|
},
|
|
70
91
|
// Channels
|
|
71
92
|
onChannelChanged: channelUpdater,
|
|
@@ -117,26 +138,26 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
117
138
|
updateMessages(list, false, sdk.currentUser.userId);
|
|
118
139
|
}
|
|
119
140
|
});
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
updateNextMessages([], true, sdk.currentUser.userId);
|
|
124
|
-
}
|
|
141
|
+
const hasPrev = useFreshCallback(() => {
|
|
142
|
+
var _queryRef$current5;
|
|
143
|
+
return ((_queryRef$current5 = queryRef.current) === null || _queryRef$current5 === void 0 ? void 0 : _queryRef$current5.hasNext) ?? false;
|
|
125
144
|
});
|
|
145
|
+
const next = useFreshCallback(ASYNC_NOOP);
|
|
146
|
+
const hasNext = useFreshCallback(() => false);
|
|
126
147
|
const sendUserMessage = useFreshCallback((params, onPending) => {
|
|
127
148
|
return new Promise((resolve, reject) => {
|
|
128
149
|
channel.sendUserMessage(params).onPending(pendingMessage => {
|
|
129
150
|
if (pendingMessage.isUserMessage()) {
|
|
130
|
-
|
|
151
|
+
updateMessages([pendingMessage], false, sdk.currentUser.userId);
|
|
131
152
|
onPending === null || onPending === void 0 ? void 0 : onPending(pendingMessage);
|
|
132
153
|
}
|
|
133
154
|
}).onSucceeded(sentMessage => {
|
|
134
155
|
if (sentMessage.isUserMessage()) {
|
|
135
|
-
|
|
156
|
+
updateMessages([sentMessage], false, sdk.currentUser.userId);
|
|
136
157
|
resolve(sentMessage);
|
|
137
158
|
}
|
|
138
159
|
}).onFailed((err, sentMessage) => {
|
|
139
|
-
|
|
160
|
+
updateMessages([sentMessage], false, sdk.currentUser.userId);
|
|
140
161
|
reject(err);
|
|
141
162
|
});
|
|
142
163
|
});
|
|
@@ -145,16 +166,16 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
145
166
|
return new Promise((resolve, reject) => {
|
|
146
167
|
channel.sendFileMessage(params).onPending(pendingMessage => {
|
|
147
168
|
if (pendingMessage.isFileMessage()) {
|
|
148
|
-
|
|
169
|
+
updateMessages([pendingMessage], false, sdk.currentUser.userId);
|
|
149
170
|
onPending === null || onPending === void 0 ? void 0 : onPending(pendingMessage);
|
|
150
171
|
}
|
|
151
172
|
}).onSucceeded(sentMessage => {
|
|
152
173
|
if (sentMessage.isFileMessage()) {
|
|
153
|
-
|
|
174
|
+
updateMessages([sentMessage], false, sdk.currentUser.userId);
|
|
154
175
|
resolve(sentMessage);
|
|
155
176
|
}
|
|
156
177
|
}).onFailed((err, sentMessage) => {
|
|
157
|
-
|
|
178
|
+
updateMessages([sentMessage], false, sdk.currentUser.userId);
|
|
158
179
|
reject(err);
|
|
159
180
|
});
|
|
160
181
|
});
|
|
@@ -175,7 +196,7 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
175
196
|
if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);
|
|
176
197
|
return null;
|
|
177
198
|
})();
|
|
178
|
-
if (message)
|
|
199
|
+
if (message) updateMessages([message], false, sdk.currentUser.userId);
|
|
179
200
|
});
|
|
180
201
|
const deleteMessage = useFreshCallback(async message => {
|
|
181
202
|
if (message.sendingStatus === 'succeeded') {
|
|
@@ -185,21 +206,31 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
|
|
|
185
206
|
deleteMessages([message.messageId], [message.reqId]);
|
|
186
207
|
}
|
|
187
208
|
});
|
|
209
|
+
const resetNewMessages = useFreshCallback(() => {
|
|
210
|
+
updateNewMessages([], true, sdk.currentUser.userId);
|
|
211
|
+
});
|
|
188
212
|
return {
|
|
189
213
|
loading,
|
|
190
214
|
refreshing,
|
|
191
215
|
refresh,
|
|
192
216
|
messages,
|
|
193
|
-
|
|
194
|
-
|
|
217
|
+
newMessages,
|
|
218
|
+
resetNewMessages,
|
|
195
219
|
next,
|
|
220
|
+
hasNext,
|
|
196
221
|
prev,
|
|
222
|
+
hasPrev,
|
|
197
223
|
sendUserMessage,
|
|
198
224
|
sendFileMessage,
|
|
199
225
|
updateUserMessage,
|
|
200
226
|
updateFileMessage,
|
|
201
227
|
resendMessage,
|
|
202
|
-
deleteMessage
|
|
228
|
+
deleteMessage,
|
|
229
|
+
resetWithStartingPoint() {
|
|
230
|
+
Logger.warn('resetWithStartingPoint is not supported in Query, please use Collection instead.');
|
|
231
|
+
},
|
|
232
|
+
nextMessages: newMessages,
|
|
233
|
+
newMessagesFromMembers: newMessages
|
|
203
234
|
};
|
|
204
235
|
};
|
|
205
236
|
//# sourceMappingURL=useGroupChannelMessagesWithQuery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useRef","Logger","confirmAndMarkAsRead","isDifferentChannel","useAsyncEffect","useForceUpdate","useFreshCallback","useUniqHandlerId","useChannelHandler","useGroupChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useGroupChannelMessagesWithQuery","sdk","userId","options","queryRef","handlerId","forceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAsRead","e","warn","init","uid","_queryRef$current","current","queryCreator","hasNext","_queryRef$current2","list","load","currentUser","channelUpdater","isGroupChannel","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","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"],"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":["useRef","ASYNC_NOOP","Logger","confirmAndMarkAsRead","isDifferentChannel","isMyMessage","useAsyncEffect","useForceUpdate","useFreshCallback","useUniqHandlerId","useChannelHandler","useChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useGroupChannelMessagesWithQuery","sdk","userId","options","queryRef","handlerId","forceUpdate","loading","refreshing","messages","newMessages","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAsRead","e","warn","init","uid","_queryRef$current","currentUser","current","queryCreator","hasNext","_queryRef$current2","list","load","channelUpdater","isGroupChannel","onMessageReceived","eventChannel","message","_options$shouldCountN","shouldCountNewMessages","call","onMessagesReceived","onMessageUpdated","onMessageDeleted","messageId","onReactionUpdated","reactionEvent","getMessage","includeReactions","includeParentMessageInfo","includeThreadInfo","includeMetaArray","channelUrl","url","channelType","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","foundChannel","find","c","onChannelDeleted","_options$onChannelDel","onOperatorUpdated","onUserLeft","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_options$onChannelDel2","refresh","prev","_queryRef$current3","_queryRef$current4","hasPrev","_queryRef$current5","next","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","err","sendFileMessage","isFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","resetWithStartingPoint","nextMessages","newMessagesFromMembers"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type {\n SendbirdBaseChannel,\n SendbirdGroupChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n ASYNC_NOOP,\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n isMyMessage,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useChannelMessagesReducer } from '../useChannelMessagesReducer';\n\nconst createMessageQuery = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['queryCreator'],\n) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithQuery');\n\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n deleteMessages,\n updateNewMessages,\n deleteNewMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const channelMarkAsRead = async () => {\n try {\n await confirmAndMarkAsRead([channel]);\n } catch (e) {\n Logger.warn('[useGroupChannelMessagesWithQuery/channelMarkAsRead]', e);\n }\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n channelMarkAsRead();\n updateNewMessages([], true, sdk.currentUser.userId);\n\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser.userId);\n }\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, handlerId, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser.userId)) return;\n\n channelMarkAsRead();\n\n updateMessages([message], false, sdk.currentUser.userId);\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages([message], false, sdk.currentUser.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived([message]);\n }\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser.userId)) return;\n\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNewMessages([messageId], []);\n },\n async onReactionUpdated(eventChannel, reactionEvent) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n const message = await sdk.message.getMessage({\n messageId: reactionEvent.messageId,\n includeReactions: true,\n includeParentMessageInfo: true,\n includeThreadInfo: true,\n includeMetaArray: true,\n channelUrl: channel.url,\n channelType: channel.channelType,\n });\n updateMessages([message], false, sdk.currentUser.userId);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const foundChannel = channels.find((c) => !isDifferentChannel(c, channel));\n if (foundChannel) channelUpdater(foundChannel);\n },\n onChannelDeleted(channelUrl: string) {\n if (channel.url === channelUrl) options?.onChannelDeleted?.();\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserLeft: channelUpdater,\n // onUserEntered: channelUpdater,\n // onUserExited: channelUpdater,\n onUserJoined: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useFreshCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser.userId);\n }\n });\n const hasPrev: ReturnType<UseGroupChannelMessages>['hasPrev'] = useFreshCallback(\n () => queryRef.current?.hasNext ?? false,\n );\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(ASYNC_NOOP);\n const hasNext: ReturnType<UseGroupChannelMessages>['hasNext'] = useFreshCallback(() => false);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, sentMessage) => {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, sentMessage) => {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useFreshCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser.userId);\n },\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n });\n const resetNewMessages: ReturnType<UseGroupChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser.userId);\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n newMessages,\n resetNewMessages,\n next,\n hasNext,\n prev,\n hasPrev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint() {\n Logger.warn('resetWithStartingPoint is not supported in Query, please use Collection instead.');\n },\n\n nextMessages: newMessages,\n newMessagesFromMembers: newMessages,\n };\n};\n"],"mappings":"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"}
|
|
@@ -40,10 +40,6 @@ export const useOpenChannelListWithQuery = (sdk, userId, options) => {
|
|
|
40
40
|
onChannelFrozen: updateChannel,
|
|
41
41
|
onChannelUnfrozen: updateChannel,
|
|
42
42
|
onChannelDeleted: url => deleteChannels([url]),
|
|
43
|
-
onUserBanned(channel, user) {
|
|
44
|
-
const isMe = user.userId === userId;
|
|
45
|
-
if (isMe && channel.isOpenChannel()) deleteChannels([channel.url]);
|
|
46
|
-
},
|
|
47
43
|
onUserEntered: (channel, user) => {
|
|
48
44
|
const isMe = user.userId === userId;
|
|
49
45
|
if (isMe && channel.isOpenChannel() && !openChannels.find(it => it.url === channel.url)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useRef","useAsyncEffect","useFreshCallback","useUniqHandlerId","useChannelHandler","useOpenChannelListReducer","createOpenChannelListQuery","sdk","queryCreator","passedQuery","openChannel","useOpenChannelListWithQuery","userId","options","queryRef","handlerId","error","loading","openChannels","refreshing","updateChannels","appendChannels","deleteChannels","updateRefreshing","updateLoading","updateError","init","uid","_queryRef$current","current","hasNext","channels","next","updateChannel","channel","isOpenChannel","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelDeleted","url","
|
|
1
|
+
{"version":3,"names":["useRef","useAsyncEffect","useFreshCallback","useUniqHandlerId","useChannelHandler","useOpenChannelListReducer","createOpenChannelListQuery","sdk","queryCreator","passedQuery","openChannel","useOpenChannelListWithQuery","userId","options","queryRef","handlerId","error","loading","openChannels","refreshing","updateChannels","appendChannels","deleteChannels","updateRefreshing","updateLoading","updateError","init","uid","_queryRef$current","current","hasNext","channels","next","updateChannel","channel","isOpenChannel","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelDeleted","url","onUserEntered","user","isMe","find","it","refresh","e","_queryRef$current2"],"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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"}
|