@sendbird/uikit-chat-hooks 2.5.0-rc.3 → 3.0.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/README.md +4 -0
- package/lib/commonjs/channel/useGroupChannel.js +21 -13
- package/lib/commonjs/channel/useGroupChannel.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelList/reducer.js +7 -6
- package/lib/commonjs/channel/useGroupChannelList/reducer.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js +2 -2
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js +3 -3
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/index.js +4 -1
- package/lib/commonjs/channel/useGroupChannelMessages/index.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +3 -4
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +8 -8
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannel.js +21 -13
- package/lib/commonjs/channel/useOpenChannel.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannelList/reducer.js +1 -1
- package/lib/commonjs/channel/useOpenChannelList/reducer.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +1 -3
- package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/channel/useGroupChannel.js +22 -14
- package/lib/module/channel/useGroupChannel.js.map +1 -1
- package/lib/module/channel/useGroupChannelList/reducer.js +8 -7
- package/lib/module/channel/useGroupChannelList/reducer.js.map +1 -1
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js +2 -2
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js +3 -3
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/index.js +4 -1
- package/lib/module/channel/useGroupChannelMessages/index.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +3 -4
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +8 -8
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
- package/lib/module/channel/useOpenChannel.js +22 -14
- package/lib/module/channel/useOpenChannel.js.map +1 -1
- package/lib/module/channel/useOpenChannelList/reducer.js +2 -2
- package/lib/module/channel/useOpenChannelList/reducer.js.map +1 -1
- package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +1 -3
- package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/src/channel/useGroupChannel.d.ts +2 -2
- package/lib/typescript/src/channel/useGroupChannelList/reducer.d.ts +1 -1
- package/lib/typescript/src/channel/useOpenChannel.d.ts +2 -2
- package/lib/typescript/src/types.d.ts +2 -8
- package/package.json +4 -4
- package/src/channel/useGroupChannel.ts +13 -10
- package/src/channel/useGroupChannelList/reducer.ts +9 -8
- package/src/channel/useGroupChannelList/useGroupChannelListWithCollection.ts +2 -2
- package/src/channel/useGroupChannelList/useGroupChannelListWithQuery.ts +3 -3
- package/src/channel/useGroupChannelMessages/index.ts +8 -1
- package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +5 -4
- package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +9 -13
- package/src/channel/useOpenChannel.ts +13 -10
- package/src/channel/useOpenChannelList/reducer.ts +2 -2
- package/src/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.ts +0 -3
- package/src/types.ts +2 -10
package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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":"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"}
|
|
1
|
+
{"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_useChannelMessagesReducer","createMessageQuery","channel","options","queryCreator","params","limit","reverse","replyType","createPreviousMessageListQuery","useGroupChannelMessagesWithQuery","sdk","userId","queryRef","useRef","handlerId","useUniqHandlerId","forceUpdate","useForceUpdate","loading","refreshing","messages","newMessages","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","useChannelMessagesReducer","sortComparator","channelMarkAsRead","confirmAndMarkAsRead","e","Logger","warn","init","useFreshCallback","uid","_queryRef$current","currentUser","current","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","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","err","sendFileMessage","isFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","resetWithStartingPoint","exports"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { PreviousMessageListQueryParams } from '@sendbird/chat/message';\nimport type {\n SendbirdBaseChannel,\n SendbirdGroupChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n ASYNC_NOOP,\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n isMyMessage,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useChannelMessagesReducer } from '../useChannelMessagesReducer';\n\nconst createMessageQuery = (channel: SendbirdGroupChannel, options?: UseGroupChannelMessagesOptions) => {\n if (options?.queryCreator) return options.queryCreator();\n\n const params: PreviousMessageListQueryParams = { limit: 100, reverse: true };\n if (options?.replyType) params.replyType = options.replyType;\n\n return channel.createPreviousMessageListQuery(params);\n};\n\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithQuery');\n\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n deleteMessages,\n updateNewMessages,\n deleteNewMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const channelMarkAsRead = async () => {\n try {\n await confirmAndMarkAsRead([channel]);\n } catch (e) {\n Logger.warn('[useGroupChannelMessagesWithQuery/channelMarkAsRead]', e);\n }\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n channelMarkAsRead();\n updateNewMessages([], true, sdk.currentUser.userId);\n\n queryRef.current = createMessageQuery(channel, options);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser.userId);\n }\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, handlerId, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser.userId)) return;\n\n channelMarkAsRead();\n\n updateMessages([message], false, sdk.currentUser.userId);\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages([message], false, sdk.currentUser.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived([message]);\n }\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser.userId)) return;\n\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNewMessages([messageId], []);\n },\n async onReactionUpdated(eventChannel, reactionEvent) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n const message = await sdk.message.getMessage({\n messageId: reactionEvent.messageId,\n includeReactions: true,\n includeParentMessageInfo: true,\n includeThreadInfo: true,\n includeMetaArray: true,\n channelUrl: channel.url,\n channelType: channel.channelType,\n });\n 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};\n"],"mappings":"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"}
|
|
@@ -6,24 +6,32 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.useOpenChannel = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _uikitUtils = require("@sendbird/uikit-utils");
|
|
9
|
+
const initialState = {
|
|
10
|
+
loading: true,
|
|
11
|
+
error: undefined,
|
|
12
|
+
channel: undefined
|
|
13
|
+
};
|
|
14
|
+
const reducer = (state, nextState) => ({
|
|
15
|
+
...state,
|
|
16
|
+
...nextState
|
|
17
|
+
});
|
|
9
18
|
const useOpenChannel = (sdk, channelUrl) => {
|
|
10
|
-
const [
|
|
11
|
-
const [loading, setLoading] = (0, _react.useState)(true);
|
|
12
|
-
const [error, setError] = (0, _react.useState)();
|
|
19
|
+
const [state, setState] = (0, _react.useReducer)(reducer, initialState);
|
|
13
20
|
(0, _uikitUtils.useAsyncEffect)(async () => {
|
|
21
|
+
setState(initialState);
|
|
14
22
|
try {
|
|
15
|
-
|
|
23
|
+
setState({
|
|
24
|
+
channel: await sdk.openChannel.getChannel(channelUrl),
|
|
25
|
+
loading: false
|
|
26
|
+
});
|
|
16
27
|
} catch (e) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
28
|
+
setState({
|
|
29
|
+
error: e,
|
|
30
|
+
loading: false
|
|
31
|
+
});
|
|
20
32
|
}
|
|
21
|
-
}, []);
|
|
22
|
-
return
|
|
23
|
-
channel,
|
|
24
|
-
loading,
|
|
25
|
-
error
|
|
26
|
-
};
|
|
33
|
+
}, [channelUrl]);
|
|
34
|
+
return state;
|
|
27
35
|
};
|
|
28
36
|
exports.useOpenChannel = useOpenChannel;
|
|
29
37
|
//# sourceMappingURL=useOpenChannel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_uikitUtils","
|
|
1
|
+
{"version":3,"names":["_react","require","_uikitUtils","initialState","loading","error","undefined","channel","reducer","state","nextState","useOpenChannel","sdk","channelUrl","setState","useReducer","useAsyncEffect","openChannel","getChannel","e","exports"],"sources":["useOpenChannel.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport { SendbirdChatSDK, SendbirdOpenChannel, useAsyncEffect } from '@sendbird/uikit-utils';\n\ntype State = { loading: boolean; channel?: SendbirdOpenChannel; error?: unknown };\n\nconst initialState: State = { loading: true, error: undefined, channel: undefined };\nconst reducer = (state: State, nextState: Partial<State>) => ({ ...state, ...nextState });\n\nexport const useOpenChannel = (sdk: SendbirdChatSDK, channelUrl: string) => {\n const [state, setState] = useReducer(reducer, initialState);\n\n useAsyncEffect(async () => {\n setState(initialState);\n\n try {\n setState({ channel: await sdk.openChannel.getChannel(channelUrl), loading: false });\n } catch (e) {\n setState({ error: e, loading: false });\n }\n }, [channelUrl]);\n\n return state;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAIA,MAAME,YAAmB,GAAG;EAAEC,OAAO,EAAE,IAAI;EAAEC,KAAK,EAAEC,SAAS;EAAEC,OAAO,EAAED;AAAU,CAAC;AACnF,MAAME,OAAO,GAAGA,CAACC,KAAY,EAAEC,SAAyB,MAAM;EAAE,GAAGD,KAAK;EAAE,GAAGC;AAAU,CAAC,CAAC;AAElF,MAAMC,cAAc,GAAGA,CAACC,GAAoB,EAAEC,UAAkB,KAAK;EAC1E,MAAM,CAACJ,KAAK,EAAEK,QAAQ,CAAC,GAAG,IAAAC,iBAAU,EAACP,OAAO,EAAEL,YAAY,CAAC;EAE3D,IAAAa,0BAAc,EAAC,YAAY;IACzBF,QAAQ,CAACX,YAAY,CAAC;IAEtB,IAAI;MACFW,QAAQ,CAAC;QAAEP,OAAO,EAAE,MAAMK,GAAG,CAACK,WAAW,CAACC,UAAU,CAACL,UAAU,CAAC;QAAET,OAAO,EAAE;MAAM,CAAC,CAAC;IACrF,CAAC,CAAC,OAAOe,CAAC,EAAE;MACVL,QAAQ,CAAC;QAAET,KAAK,EAAEc,CAAC;QAAEf,OAAO,EAAE;MAAM,CAAC,CAAC;IACxC;EACF,CAAC,EAAE,CAACS,UAAU,CAAC,CAAC;EAEhB,OAAOJ,KAAK;AACd,CAAC;AAACW,OAAA,CAAAT,cAAA,GAAAA,cAAA"}
|
|
@@ -45,7 +45,7 @@ const defaultReducer = (_ref, action) => {
|
|
|
45
45
|
if (action.value.clearBeforeAction) {
|
|
46
46
|
draft.openChannels = openChannels;
|
|
47
47
|
} else {
|
|
48
|
-
draft.openChannels =
|
|
48
|
+
draft.openChannels = (0, _uikitUtils.mergeObjectArrays)(draft.openChannels, openChannels, 'url');
|
|
49
49
|
}
|
|
50
50
|
break;
|
|
51
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_uikitUtils","defaultReducer","_ref","action","draft","type","error","value","key","status","getOpenChannels","channels","forEach","freshChannel","idx","openChannels","findIndex","staleChannel","url","channelUrls","c","splice","clearBeforeAction","useOpenChannelListReducer","loading","refreshing","dispatch","useReducer","updateChannels","deleteChannels","appendChannels","updateLoading","updateRefreshing","updateError","exports"],"sources":["reducer.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport type { SendbirdChannel, SendbirdOpenChannel } from '@sendbird/uikit-utils';\nimport { getOpenChannels } from '@sendbird/uikit-utils';\n\ntype Action =\n | {\n type: 'update_error';\n value: { error: unknown | null };\n }\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_channels';\n value: { channels: SendbirdChannel[] };\n }\n | {\n type: 'delete_channels';\n value: { channelUrls: string[] };\n }\n | {\n type: 'append_channels';\n value: { channels: SendbirdChannel[]; clearBeforeAction: boolean };\n };\n\ntype State = {\n error: unknown | null;\n loading: boolean;\n refreshing: boolean;\n openChannels: SendbirdOpenChannel[];\n};\n\nconst defaultReducer = ({ ...draft }: State, action: Action) => {\n switch (action.type) {\n case 'update_error': {\n draft.error = action.value.error;\n break;\n }\n case 'update_refreshing':\n case 'update_loading': {\n const key = action.type === 'update_loading' ? 'loading' : 'refreshing';\n draft[key] = action.value.status;\n break;\n }\n case 'update_channels': {\n getOpenChannels(action.value.channels).forEach((freshChannel) => {\n const idx = draft.openChannels.findIndex((staleChannel) => staleChannel.url === freshChannel.url);\n if (idx > -1) draft.openChannels[idx] = freshChannel;\n });\n break;\n }\n case 'delete_channels': {\n action.value.channelUrls.forEach((url) => {\n const idx = draft.openChannels.findIndex((c) => c.url === url);\n if (idx > -1) draft.openChannels.splice(idx, 1);\n });\n break;\n }\n case 'append_channels': {\n const openChannels = getOpenChannels(action.value.channels);\n if (action.value.clearBeforeAction) {\n draft.openChannels = openChannels;\n } else {\n draft.openChannels =
|
|
1
|
+
{"version":3,"names":["_react","require","_uikitUtils","defaultReducer","_ref","action","draft","type","error","value","key","status","getOpenChannels","channels","forEach","freshChannel","idx","openChannels","findIndex","staleChannel","url","channelUrls","c","splice","clearBeforeAction","mergeObjectArrays","useOpenChannelListReducer","loading","refreshing","dispatch","useReducer","updateChannels","deleteChannels","appendChannels","updateLoading","updateRefreshing","updateError","exports"],"sources":["reducer.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport type { SendbirdChannel, SendbirdOpenChannel } from '@sendbird/uikit-utils';\nimport { getOpenChannels, mergeObjectArrays } from '@sendbird/uikit-utils';\n\ntype Action =\n | {\n type: 'update_error';\n value: { error: unknown | null };\n }\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_channels';\n value: { channels: SendbirdChannel[] };\n }\n | {\n type: 'delete_channels';\n value: { channelUrls: string[] };\n }\n | {\n type: 'append_channels';\n value: { channels: SendbirdChannel[]; clearBeforeAction: boolean };\n };\n\ntype State = {\n error: unknown | null;\n loading: boolean;\n refreshing: boolean;\n openChannels: SendbirdOpenChannel[];\n};\n\nconst defaultReducer = ({ ...draft }: State, action: Action) => {\n switch (action.type) {\n case 'update_error': {\n draft.error = action.value.error;\n break;\n }\n case 'update_refreshing':\n case 'update_loading': {\n const key = action.type === 'update_loading' ? 'loading' : 'refreshing';\n draft[key] = action.value.status;\n break;\n }\n case 'update_channels': {\n getOpenChannels(action.value.channels).forEach((freshChannel) => {\n const idx = draft.openChannels.findIndex((staleChannel) => staleChannel.url === freshChannel.url);\n if (idx > -1) draft.openChannels[idx] = freshChannel;\n });\n break;\n }\n case 'delete_channels': {\n action.value.channelUrls.forEach((url) => {\n const idx = draft.openChannels.findIndex((c) => c.url === url);\n if (idx > -1) draft.openChannels.splice(idx, 1);\n });\n break;\n }\n case 'append_channels': {\n const openChannels = getOpenChannels(action.value.channels);\n if (action.value.clearBeforeAction) {\n draft.openChannels = openChannels;\n } else {\n draft.openChannels = mergeObjectArrays(draft.openChannels, openChannels, 'url');\n }\n break;\n }\n }\n return draft;\n};\n\nexport const useOpenChannelListReducer = () => {\n const [{ error, loading, refreshing, openChannels }, dispatch] = useReducer(defaultReducer, {\n loading: true,\n refreshing: false,\n openChannels: [],\n error: null,\n });\n\n const updateChannels = (channels: SendbirdChannel[]) => {\n dispatch({ type: 'update_channels', value: { channels } });\n };\n const deleteChannels = (channelUrls: string[]) => {\n dispatch({ type: 'delete_channels', value: { channelUrls } });\n };\n const appendChannels = (channels: SendbirdChannel[], clearBeforeAction: boolean) => {\n dispatch({ type: 'append_channels', value: { channels, clearBeforeAction } });\n };\n const updateLoading = (status: boolean) => {\n dispatch({ type: 'update_loading', value: { status } });\n };\n const updateRefreshing = (status: boolean) => {\n dispatch({ type: 'update_refreshing', value: { status } });\n };\n\n const updateError = (error: unknown | null) => {\n dispatch({ type: 'update_error', value: { error } });\n };\n\n return {\n updateError,\n updateLoading,\n updateRefreshing,\n updateChannels,\n deleteChannels,\n appendChannels,\n\n error,\n loading,\n refreshing,\n openChannels,\n };\n};\n"],"mappings":"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"}
|
|
@@ -302,9 +302,7 @@ const useOpenChannelMessagesWithQuery = (sdk, channel, userId, options) => {
|
|
|
302
302
|
updateFileMessage,
|
|
303
303
|
resendMessage,
|
|
304
304
|
deleteMessage,
|
|
305
|
-
resetNewMessages
|
|
306
|
-
nextMessages: newMessages,
|
|
307
|
-
newMessagesFromMembers: newMessages
|
|
305
|
+
resetNewMessages
|
|
308
306
|
};
|
|
309
307
|
};
|
|
310
308
|
exports.useOpenChannelMessagesWithQuery = useOpenChannelMessagesWithQuery;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_useConnectionHandler","_useChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useOpenChannelMessagesWithQuery","sdk","userId","options","queryRef","useRef","forceUpdate","useForceUpdate","handlerId","useUniqHandlerId","loading","refreshing","messages","newMessages","updateMessages","updateNewMessages","deleteNewMessages","deleteMessages","updateLoading","updateRefreshing","useChannelMessagesReducer","sortComparator","init","useFreshCallback","uid","_queryRef$current","current","queryCreator","hasNext","_queryRef$current2","list","load","currentUser","channelUpdater","isOpenChannel","isDifferentChannel","useConnectionHandler","onReconnectSucceeded","_queryRef$current3","_queryRef$current4","_queryRef$current5","_queryRef$current6","_queryRef$current7","_queryRef$current8","_queryRef$current9","_queryRef$current10","_queryRef$current11","_queryRef$current12","_queryRef$current13","_queryRef$current14","_queryRef$current15","_queryRef$current16","_queryRef$current17","_queryRef$current18","lastMessage","messageContext","updatedMessages","addedMessages","deletedMessageIds","changeLogsContext","hasMore","token","messageQueryContext","timestamp","createdAt","changelogsParams","replyType","includeMetaArray","includeReactions","includeThreadInfo","includeParentMessageInfo","changeLogsByTS","getMessageChangeLogsSinceTimestamp","push","changeLogsByToken","getMessageChangeLogsSinceToken","messageQueryParams","prevResultSize","nextResultSize","customTypesFilter","messageTypeFilter","senderUserIdsFilter","showSubchannelMessagesOnly","queriedMessages","getMessagesByTimestamp","length","unshift","_options$shouldCountN","shouldCountNewMessages","call","onMessagesReceived","useChannelHandler","onMessageReceived","eventChannel","message","_options$shouldCountN2","isMyMessage","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelParticipantCountChanged","onChannelDeleted","channelUrl","type","url","_options$onChannelDel","onOperatorUpdated","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_options$onChannelDel2","useAsyncEffect","enter","error","_options$onError","_options$onChannelDel3","onError","exit","catch","NOOP","refresh","prev","_queryRef$current19","_queryRef$current20","hasPrev","_queryRef$current21","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","nextMessages","newMessagesFromMembers","exports"],"sources":["useOpenChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type {\n SendbirdBaseChannel,\n SendbirdBaseMessage,\n SendbirdOpenChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n ASYNC_NOOP,\n NOOP,\n isDifferentChannel,\n isMyMessage,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport { useConnectionHandler } from '../../handler/useConnectionHandler';\nimport type { UseOpenChannelMessages, UseOpenChannelMessagesOptions } from '../../types';\nimport { useChannelMessagesReducer } from '../useChannelMessagesReducer';\n\nconst createMessageQuery = (channel: SendbirdOpenChannel, creator?: UseOpenChannelMessagesOptions['queryCreator']) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nexport const useOpenChannelMessagesWithQuery: UseOpenChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const forceUpdate = useForceUpdate();\n const handlerId = useUniqHandlerId('useOpenChannelMessagesWithQuery');\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n updateNewMessages,\n deleteNewMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n\n updateMessages(list, true, sdk.currentUser.userId);\n }\n updateNewMessages([], true, sdk.currentUser.userId);\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isOpenChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useConnectionHandler(sdk, handlerId, {\n async onReconnectSucceeded() {\n const lastMessage = messages[0];\n if (!lastMessage) return;\n\n const messageContext = {\n updatedMessages: [] as SendbirdBaseMessage[],\n addedMessages: [] as SendbirdBaseMessage[],\n deletedMessageIds: [] as number[],\n };\n const changeLogsContext = {\n hasMore: false,\n token: '',\n };\n const messageQueryContext = {\n hasMore: false,\n timestamp: lastMessage.createdAt,\n };\n\n // Updated & Deleted messages\n const changelogsParams = {\n replyType: queryRef.current?.replyType,\n includeMetaArray: queryRef.current?.includeMetaArray,\n includeReactions: queryRef.current?.includeReactions,\n includeThreadInfo: queryRef.current?.includeThreadInfo,\n includeParentMessageInfo: queryRef.current?.includeParentMessageInfo,\n };\n\n const changeLogsByTS = await channel.getMessageChangeLogsSinceTimestamp(lastMessage.createdAt);\n changeLogsContext.token = changeLogsByTS.token;\n changeLogsContext.hasMore = changeLogsByTS.hasMore;\n messageContext.updatedMessages.push(...changeLogsByTS.updatedMessages);\n messageContext.deletedMessageIds.push(...changeLogsByTS.deletedMessageIds);\n\n while (changeLogsContext.hasMore) {\n const changeLogsByToken = await channel.getMessageChangeLogsSinceToken(changeLogsByTS.token, changelogsParams);\n changeLogsContext.token = changeLogsByToken.token;\n changeLogsContext.hasMore = changeLogsByToken.hasMore;\n messageContext.updatedMessages.push(...changeLogsByToken.updatedMessages);\n messageContext.deletedMessageIds.push(...changeLogsByToken.deletedMessageIds);\n }\n\n // Added messages\n const messageQueryParams = {\n prevResultSize: 0,\n nextResultSize: queryRef.current?.limit ?? 100,\n reverse: queryRef.current?.reverse,\n includeParentMessageInfo: queryRef.current?.includeParentMessageInfo,\n includeThreadInfo: queryRef.current?.includeThreadInfo,\n includeReactions: queryRef.current?.includeReactions,\n includeMetaArray: queryRef.current?.includeMetaArray,\n replyType: queryRef.current?.replyType,\n customTypesFilter: queryRef.current?.customTypesFilter,\n messageTypeFilter: queryRef.current?.messageTypeFilter,\n senderUserIdsFilter: queryRef.current?.senderUserIdsFilter,\n showSubchannelMessagesOnly: queryRef.current?.showSubchannelMessagesOnly,\n };\n\n const queriedMessages = await channel.getMessagesByTimestamp(lastMessage.createdAt, messageQueryParams);\n messageQueryContext.hasMore = queriedMessages.length > 0;\n if (messageQueryContext.hasMore) {\n messageQueryContext.timestamp = queriedMessages[0].createdAt;\n messageContext.addedMessages.unshift(...queriedMessages);\n }\n\n while (messageQueryContext.hasMore) {\n const queriedMessages = await channel.getMessagesByTimestamp(messageQueryContext.timestamp, messageQueryParams);\n messageQueryContext.hasMore = queriedMessages.length > 0;\n if (messageQueryContext.hasMore) {\n messageQueryContext.timestamp = queriedMessages[0].createdAt;\n messageContext.addedMessages.unshift(...queriedMessages);\n }\n }\n\n // Update to View\n updateMessages(\n [...messageContext.addedMessages, ...messageContext.updatedMessages],\n false,\n sdk.currentUser.userId,\n );\n deleteMessages(messageContext.deletedMessageIds, []);\n\n if (messageContext.addedMessages.length > 0) {\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages(messageContext.addedMessages, false, sdk.currentUser.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived(messageContext.addedMessages);\n }\n }\n },\n });\n\n useChannelHandler(\n sdk,\n handlerId,\n {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser.userId)) return;\n\n updateMessages([message], false, sdk.currentUser.userId);\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages([message], false, sdk.currentUser.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived([message]);\n }\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser.userId)) return;\n\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNewMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelParticipantCountChanged(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n channelUpdater(eventChannel);\n },\n onChannelDeleted(channelUrl, type) {\n if (channel.url === channelUrl && type === 'open') {\n options?.onChannelDeleted?.();\n }\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n },\n 'open',\n );\n\n useAsyncEffect(async () => {\n updateLoading(true);\n\n try {\n await channel.enter();\n await init(userId);\n } catch (error) {\n options?.onError?.(error);\n options?.onChannelDeleted?.();\n } finally {\n updateLoading(false);\n }\n\n return () => {\n channel.exit().catch(NOOP);\n };\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseOpenChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseOpenChannelMessages>['prev'] = useFreshCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser.userId);\n }\n });\n const hasPrev: ReturnType<UseOpenChannelMessages>['hasPrev'] = useFreshCallback(\n () => queryRef.current?.hasNext ?? false,\n );\n\n const next: ReturnType<UseOpenChannelMessages>['next'] = useFreshCallback(ASYNC_NOOP);\n const hasNext: ReturnType<UseOpenChannelMessages>['hasNext'] = useFreshCallback(() => false);\n\n const sendUserMessage: ReturnType<UseOpenChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, sentMessage) => {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n\n const sendFileMessage: ReturnType<UseOpenChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, sentMessage) => {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n\n const updateUserMessage: ReturnType<UseOpenChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseOpenChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseOpenChannelMessages>['resendMessage'] = useFreshCallback(async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser.userId);\n });\n const deleteMessage: ReturnType<UseOpenChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n });\n const resetNewMessages: ReturnType<UseOpenChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser.userId);\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n newMessages,\n next,\n hasNext,\n prev,\n hasPrev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetNewMessages,\n\n nextMessages: newMessages,\n newMessagesFromMembers: newMessages,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_useConnectionHandler","_useChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useOpenChannelMessagesWithQuery","sdk","userId","options","queryRef","useRef","forceUpdate","useForceUpdate","handlerId","useUniqHandlerId","loading","refreshing","messages","newMessages","updateMessages","updateNewMessages","deleteNewMessages","deleteMessages","updateLoading","updateRefreshing","useChannelMessagesReducer","sortComparator","init","useFreshCallback","uid","_queryRef$current","current","queryCreator","hasNext","_queryRef$current2","list","load","currentUser","channelUpdater","isOpenChannel","isDifferentChannel","useConnectionHandler","onReconnectSucceeded","_queryRef$current3","_queryRef$current4","_queryRef$current5","_queryRef$current6","_queryRef$current7","_queryRef$current8","_queryRef$current9","_queryRef$current10","_queryRef$current11","_queryRef$current12","_queryRef$current13","_queryRef$current14","_queryRef$current15","_queryRef$current16","_queryRef$current17","_queryRef$current18","lastMessage","messageContext","updatedMessages","addedMessages","deletedMessageIds","changeLogsContext","hasMore","token","messageQueryContext","timestamp","createdAt","changelogsParams","replyType","includeMetaArray","includeReactions","includeThreadInfo","includeParentMessageInfo","changeLogsByTS","getMessageChangeLogsSinceTimestamp","push","changeLogsByToken","getMessageChangeLogsSinceToken","messageQueryParams","prevResultSize","nextResultSize","customTypesFilter","messageTypeFilter","senderUserIdsFilter","showSubchannelMessagesOnly","queriedMessages","getMessagesByTimestamp","length","unshift","_options$shouldCountN","shouldCountNewMessages","call","onMessagesReceived","useChannelHandler","onMessageReceived","eventChannel","message","_options$shouldCountN2","isMyMessage","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelParticipantCountChanged","onChannelDeleted","channelUrl","type","url","_options$onChannelDel","onOperatorUpdated","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_options$onChannelDel2","useAsyncEffect","enter","error","_options$onError","_options$onChannelDel3","onError","exit","catch","NOOP","refresh","prev","_queryRef$current19","_queryRef$current20","hasPrev","_queryRef$current21","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","exports"],"sources":["useOpenChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type {\n SendbirdBaseChannel,\n SendbirdBaseMessage,\n SendbirdOpenChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n ASYNC_NOOP,\n NOOP,\n isDifferentChannel,\n isMyMessage,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport { useConnectionHandler } from '../../handler/useConnectionHandler';\nimport type { UseOpenChannelMessages, UseOpenChannelMessagesOptions } from '../../types';\nimport { useChannelMessagesReducer } from '../useChannelMessagesReducer';\n\nconst createMessageQuery = (channel: SendbirdOpenChannel, creator?: UseOpenChannelMessagesOptions['queryCreator']) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nexport const useOpenChannelMessagesWithQuery: UseOpenChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const forceUpdate = useForceUpdate();\n const handlerId = useUniqHandlerId('useOpenChannelMessagesWithQuery');\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n updateNewMessages,\n deleteNewMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n\n updateMessages(list, true, sdk.currentUser.userId);\n }\n updateNewMessages([], true, sdk.currentUser.userId);\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isOpenChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useConnectionHandler(sdk, handlerId, {\n async onReconnectSucceeded() {\n const lastMessage = messages[0];\n if (!lastMessage) return;\n\n const messageContext = {\n updatedMessages: [] as SendbirdBaseMessage[],\n addedMessages: [] as SendbirdBaseMessage[],\n deletedMessageIds: [] as number[],\n };\n const changeLogsContext = {\n hasMore: false,\n token: '',\n };\n const messageQueryContext = {\n hasMore: false,\n timestamp: lastMessage.createdAt,\n };\n\n // Updated & Deleted messages\n const changelogsParams = {\n replyType: queryRef.current?.replyType,\n includeMetaArray: queryRef.current?.includeMetaArray,\n includeReactions: queryRef.current?.includeReactions,\n includeThreadInfo: queryRef.current?.includeThreadInfo,\n includeParentMessageInfo: queryRef.current?.includeParentMessageInfo,\n };\n\n const changeLogsByTS = await channel.getMessageChangeLogsSinceTimestamp(lastMessage.createdAt);\n changeLogsContext.token = changeLogsByTS.token;\n changeLogsContext.hasMore = changeLogsByTS.hasMore;\n messageContext.updatedMessages.push(...changeLogsByTS.updatedMessages);\n messageContext.deletedMessageIds.push(...changeLogsByTS.deletedMessageIds);\n\n while (changeLogsContext.hasMore) {\n const changeLogsByToken = await channel.getMessageChangeLogsSinceToken(changeLogsByTS.token, changelogsParams);\n changeLogsContext.token = changeLogsByToken.token;\n changeLogsContext.hasMore = changeLogsByToken.hasMore;\n messageContext.updatedMessages.push(...changeLogsByToken.updatedMessages);\n messageContext.deletedMessageIds.push(...changeLogsByToken.deletedMessageIds);\n }\n\n // Added messages\n const messageQueryParams = {\n prevResultSize: 0,\n nextResultSize: queryRef.current?.limit ?? 100,\n reverse: queryRef.current?.reverse,\n includeParentMessageInfo: queryRef.current?.includeParentMessageInfo,\n includeThreadInfo: queryRef.current?.includeThreadInfo,\n includeReactions: queryRef.current?.includeReactions,\n includeMetaArray: queryRef.current?.includeMetaArray,\n replyType: queryRef.current?.replyType,\n customTypesFilter: queryRef.current?.customTypesFilter,\n messageTypeFilter: queryRef.current?.messageTypeFilter,\n senderUserIdsFilter: queryRef.current?.senderUserIdsFilter,\n showSubchannelMessagesOnly: queryRef.current?.showSubchannelMessagesOnly,\n };\n\n const queriedMessages = await channel.getMessagesByTimestamp(lastMessage.createdAt, messageQueryParams);\n messageQueryContext.hasMore = queriedMessages.length > 0;\n if (messageQueryContext.hasMore) {\n messageQueryContext.timestamp = queriedMessages[0].createdAt;\n messageContext.addedMessages.unshift(...queriedMessages);\n }\n\n while (messageQueryContext.hasMore) {\n const queriedMessages = await channel.getMessagesByTimestamp(messageQueryContext.timestamp, messageQueryParams);\n messageQueryContext.hasMore = queriedMessages.length > 0;\n if (messageQueryContext.hasMore) {\n messageQueryContext.timestamp = queriedMessages[0].createdAt;\n messageContext.addedMessages.unshift(...queriedMessages);\n }\n }\n\n // Update to View\n updateMessages(\n [...messageContext.addedMessages, ...messageContext.updatedMessages],\n false,\n sdk.currentUser.userId,\n );\n deleteMessages(messageContext.deletedMessageIds, []);\n\n if (messageContext.addedMessages.length > 0) {\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages(messageContext.addedMessages, false, sdk.currentUser.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived(messageContext.addedMessages);\n }\n }\n },\n });\n\n useChannelHandler(\n sdk,\n handlerId,\n {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser.userId)) return;\n\n updateMessages([message], false, sdk.currentUser.userId);\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages([message], false, sdk.currentUser.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived([message]);\n }\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser.userId)) return;\n\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNewMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelParticipantCountChanged(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n channelUpdater(eventChannel);\n },\n onChannelDeleted(channelUrl, type) {\n if (channel.url === channelUrl && type === 'open') {\n options?.onChannelDeleted?.();\n }\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n },\n 'open',\n );\n\n useAsyncEffect(async () => {\n updateLoading(true);\n\n try {\n await channel.enter();\n await init(userId);\n } catch (error) {\n options?.onError?.(error);\n options?.onChannelDeleted?.();\n } finally {\n updateLoading(false);\n }\n\n return () => {\n channel.exit().catch(NOOP);\n };\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseOpenChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseOpenChannelMessages>['prev'] = useFreshCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser.userId);\n }\n });\n const hasPrev: ReturnType<UseOpenChannelMessages>['hasPrev'] = useFreshCallback(\n () => queryRef.current?.hasNext ?? false,\n );\n\n const next: ReturnType<UseOpenChannelMessages>['next'] = useFreshCallback(ASYNC_NOOP);\n const hasNext: ReturnType<UseOpenChannelMessages>['hasNext'] = useFreshCallback(() => false);\n\n const sendUserMessage: ReturnType<UseOpenChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, sentMessage) => {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n\n const sendFileMessage: ReturnType<UseOpenChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, sentMessage) => {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n\n const updateUserMessage: ReturnType<UseOpenChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseOpenChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseOpenChannelMessages>['resendMessage'] = useFreshCallback(async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser.userId);\n });\n const deleteMessage: ReturnType<UseOpenChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n });\n const resetNewMessages: ReturnType<UseOpenChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser.userId);\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n newMessages,\n next,\n hasNext,\n prev,\n hasPrev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetNewMessages,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type {\n SendbirdChatSDK,\n SendbirdError,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n SendbirdGroupChannelListQuery,\n SendbirdMessage,\n SendbirdMessageCollection,\n SendbirdOpenChannel,\n SendbirdOpenChannelListQuery,\n SendbirdPreviousMessageListQuery,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n UserStruct,\n} from '@sendbird/uikit-utils';\n\nexport interface CustomQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: boolean;\n}\nexport interface CustomBidirectionalQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: () => boolean;\n prev: () => Promise<Data[]>;\n hasPrev: () => boolean;\n}\n\n/**\n * @interface UseGroupChannelList\n * @description interface for group channel list hook\n * */\nexport interface UseGroupChannelList {\n (sdk: SendbirdChatSDK, userId?: string, options?: UseGroupChannelListOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get group channels state\n * */\n groupChannels: SendbirdGroupChannel[];\n\n /**\n * Fetch next channels to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n };\n}\nexport type UseGroupChannelListOptions = {\n queryCreator?: () => SendbirdGroupChannelListQuery;\n collectionCreator?: () => SendbirdGroupChannelCollection;\n enableCollectionWithoutLocalCache?: boolean;\n};\n\n/**\n * @interface UseGroupChannelMessages\n * @description interface for group channel messages hook\n * - Receive new messages from other users & should count new messages -> append to state(newMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> next() -> fetch next messages and append to state(messages)\n * */\nexport interface UseGroupChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdGroupChannel, userId?: string, options?: UseGroupChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Check if there are more prev messages to fetch\n * @return {boolean}\n * */\n hasPrev: () => boolean;\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Check if there are more next messages to fetch\n * @return {boolean}\n * */\n hasNext: () => boolean;\n\n /**\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessages: SendbirdMessage[];\n\n /**\n * reset message list with starting point\n * */\n resetWithStartingPoint: (startingPoint: number, callback?: () => void) => void;\n\n /**\n * Reset new messages\n * */\n resetNewMessages: () => void;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageCreateParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageCreateParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageUpdateParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageUpdateParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /** @deprecated Please use `newMessages` instead **/\n newMessagesFromMembers: SendbirdMessage[];\n /** @deprecated Please use `newMessages` instead **/\n nextMessages: SendbirdMessage[];\n };\n}\n\nexport type UseGroupChannelMessagesOptions = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n collectionCreator?: (options?: Pick<UseGroupChannelMessagesOptions, 'startingPoint'>) => SendbirdMessageCollection;\n enableCollectionWithoutLocalCache?: boolean;\n onChannelDeleted?: () => void;\n shouldCountNewMessages?: () => boolean;\n startingPoint?: number;\n onMessagesReceived?: (messages: SendbirdMessage[]) => void;\n};\n\n/**\n * @interface UseOpenChannelList\n * @description interface for open channel list hook\n * */\nexport interface UseOpenChannelList {\n (sdk: SendbirdChatSDK, userId?: string, options?: UseOpenChannelListOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Get open channels state\n * */\n openChannels: SendbirdOpenChannel[];\n\n /**\n * Fetch next channels to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n };\n}\nexport type UseOpenChannelListOptions = {\n queryCreator?: () => SendbirdOpenChannelListQuery;\n};\n\n/**\n * @interface UseOpenChannelMessages\n * @description interface for open channel messages hook\n * - Receive new messages from other users & should count new messages -> append to state(newMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> noop\n * */\nexport interface UseOpenChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdOpenChannel, userId?: string, options?: UseOpenChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Check if there are more prev messages to fetch\n * @return {boolean}\n * */\n hasPrev: () => boolean;\n\n /**\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessages: SendbirdMessage[];\n\n /**\n * Reset new messages\n * */\n resetNewMessages: () => void;\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Check if there are more next messages to fetch\n * @return {boolean}\n * */\n hasNext: () => boolean;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageCreateParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageCreateParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageUpdateParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageUpdateParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /** @deprecated Please use `newMessages` instead **/\n newMessagesFromMembers: SendbirdMessage[];\n /** @deprecated Please use `newMessages` instead **/\n nextMessages: SendbirdMessage[];\n };\n}\n\nexport type UseOpenChannelMessagesOptions = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n onChannelDeleted?: () => void;\n onError?: (error?: unknown) => void;\n shouldCountNewMessages?: () => boolean;\n onMessagesReceived?: (messages: SendbirdMessage[]) => void;\n};\n\n/**\n * @interface UseUserListReturn\n * @description interface for user list hook return value\n * */\nexport interface UseUserListReturn<User extends UserStruct> {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get users state\n * */\n users: User[];\n\n /**\n * Update or Insert user to list\n * */\n upsertUser: (user: User) => void;\n\n /**\n * Delete user from list\n * */\n deleteUser: (userId: User['userId']) => void;\n\n /**\n * Fetch next users to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n}\n\nexport type UseUserListOptions<User extends UserStruct> = {\n sortComparator?: (a: User, b: User) => number;\n queryCreator?: () => CustomQueryInterface<User>;\n};\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ReplyType } from '@sendbird/chat/message';\nimport type {\n SendbirdChatSDK,\n SendbirdError,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n SendbirdGroupChannelListQuery,\n SendbirdMessage,\n SendbirdMessageCollection,\n SendbirdOpenChannel,\n SendbirdOpenChannelListQuery,\n SendbirdPreviousMessageListQuery,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n UserStruct,\n} from '@sendbird/uikit-utils';\n\nexport interface CustomQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: boolean;\n}\nexport interface CustomBidirectionalQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: () => boolean;\n prev: () => Promise<Data[]>;\n hasPrev: () => boolean;\n}\n\n/**\n * @interface UseGroupChannelList\n * @description interface for group channel list hook\n * */\nexport interface UseGroupChannelList {\n (sdk: SendbirdChatSDK, userId?: string, options?: UseGroupChannelListOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get group channels state\n * */\n groupChannels: SendbirdGroupChannel[];\n\n /**\n * Fetch next channels to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n };\n}\nexport type UseGroupChannelListOptions = {\n queryCreator?: () => SendbirdGroupChannelListQuery;\n collectionCreator?: () => SendbirdGroupChannelCollection;\n enableCollectionWithoutLocalCache?: boolean;\n};\n\n/**\n * @interface UseGroupChannelMessages\n * @description interface for group channel messages hook\n * - Receive new messages from other users & should count new messages -> append to state(newMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> next() -> fetch next messages and append to state(messages)\n * */\nexport interface UseGroupChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdGroupChannel, userId?: string, options?: UseGroupChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Check if there are more prev messages to fetch\n * @return {boolean}\n * */\n hasPrev: () => boolean;\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Check if there are more next messages to fetch\n * @return {boolean}\n * */\n hasNext: () => boolean;\n\n /**\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessages: SendbirdMessage[];\n\n /**\n * reset message list with starting point\n * */\n resetWithStartingPoint: (startingPoint: number, callback?: () => void) => void;\n\n /**\n * Reset new messages\n * */\n resetNewMessages: () => void;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageCreateParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageCreateParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageUpdateParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageUpdateParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n };\n}\n\nexport type UseGroupChannelMessagesOptions = {\n replyType?: ReplyType;\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n collectionCreator?: (options?: Pick<UseGroupChannelMessagesOptions, 'startingPoint'>) => SendbirdMessageCollection;\n enableCollectionWithoutLocalCache?: boolean;\n onChannelDeleted?: () => void;\n shouldCountNewMessages?: () => boolean;\n startingPoint?: number;\n onMessagesReceived?: (messages: SendbirdMessage[]) => void;\n};\n\n/**\n * @interface UseOpenChannelList\n * @description interface for open channel list hook\n * */\nexport interface UseOpenChannelList {\n (sdk: SendbirdChatSDK, userId?: string, options?: UseOpenChannelListOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Get open channels state\n * */\n openChannels: SendbirdOpenChannel[];\n\n /**\n * Fetch next channels to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n };\n}\nexport type UseOpenChannelListOptions = {\n queryCreator?: () => SendbirdOpenChannelListQuery;\n};\n\n/**\n * @interface UseOpenChannelMessages\n * @description interface for open channel messages hook\n * - Receive new messages from other users & should count new messages -> append to state(newMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> noop\n * */\nexport interface UseOpenChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdOpenChannel, userId?: string, options?: UseOpenChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Check if there are more prev messages to fetch\n * @return {boolean}\n * */\n hasPrev: () => boolean;\n\n /**\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessages: SendbirdMessage[];\n\n /**\n * Reset new messages\n * */\n resetNewMessages: () => void;\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Check if there are more next messages to fetch\n * @return {boolean}\n * */\n hasNext: () => boolean;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageCreateParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageCreateParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageUpdateParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageUpdateParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n };\n}\n\nexport type UseOpenChannelMessagesOptions = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n onChannelDeleted?: () => void;\n onError?: (error?: unknown) => void;\n shouldCountNewMessages?: () => boolean;\n onMessagesReceived?: (messages: SendbirdMessage[]) => void;\n};\n\n/**\n * @interface UseUserListReturn\n * @description interface for user list hook return value\n * */\nexport interface UseUserListReturn<User extends UserStruct> {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get users state\n * */\n users: User[];\n\n /**\n * Update or Insert user to list\n * */\n upsertUser: (user: User) => void;\n\n /**\n * Delete user from list\n * */\n deleteUser: (userId: User['userId']) => void;\n\n /**\n * Fetch next users to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n}\n\nexport type UseUserListOptions<User extends UserStruct> = {\n sortComparator?: (a: User, b: User) => number;\n queryCreator?: () => CustomQueryInterface<User>;\n};\n"],"mappings":""}
|
|
@@ -1,22 +1,30 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useReducer } from 'react';
|
|
2
2
|
import { useAsyncEffect } from '@sendbird/uikit-utils';
|
|
3
|
+
const initialState = {
|
|
4
|
+
loading: true,
|
|
5
|
+
error: undefined,
|
|
6
|
+
channel: undefined
|
|
7
|
+
};
|
|
8
|
+
const reducer = (state, nextState) => ({
|
|
9
|
+
...state,
|
|
10
|
+
...nextState
|
|
11
|
+
});
|
|
3
12
|
export const useGroupChannel = (sdk, channelUrl) => {
|
|
4
|
-
const [
|
|
5
|
-
const [loading, setLoading] = useState(true);
|
|
6
|
-
const [error, setError] = useState();
|
|
13
|
+
const [state, setState] = useReducer(reducer, initialState);
|
|
7
14
|
useAsyncEffect(async () => {
|
|
15
|
+
setState(initialState);
|
|
8
16
|
try {
|
|
9
|
-
|
|
17
|
+
setState({
|
|
18
|
+
channel: await sdk.groupChannel.getChannel(channelUrl),
|
|
19
|
+
loading: false
|
|
20
|
+
});
|
|
10
21
|
} catch (e) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
22
|
+
setState({
|
|
23
|
+
error: e,
|
|
24
|
+
loading: false
|
|
25
|
+
});
|
|
14
26
|
}
|
|
15
|
-
}, []);
|
|
16
|
-
return
|
|
17
|
-
channel,
|
|
18
|
-
loading,
|
|
19
|
-
error
|
|
20
|
-
};
|
|
27
|
+
}, [channelUrl]);
|
|
28
|
+
return state;
|
|
21
29
|
};
|
|
22
30
|
//# sourceMappingURL=useGroupChannel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["useReducer","useAsyncEffect","initialState","loading","error","undefined","channel","reducer","state","nextState","useGroupChannel","sdk","channelUrl","setState","groupChannel","getChannel","e"],"sources":["useGroupChannel.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport { SendbirdChatSDK, SendbirdGroupChannel, useAsyncEffect } from '@sendbird/uikit-utils';\n\ntype State = { loading: boolean; channel?: SendbirdGroupChannel; error?: unknown };\n\nconst initialState: State = { loading: true, error: undefined, channel: undefined };\nconst reducer = (state: State, nextState: Partial<State>) => ({ ...state, ...nextState });\n\nexport const useGroupChannel = (sdk: SendbirdChatSDK, channelUrl: string) => {\n const [state, setState] = useReducer(reducer, initialState);\n\n useAsyncEffect(async () => {\n setState(initialState);\n\n try {\n setState({ channel: await sdk.groupChannel.getChannel(channelUrl), loading: false });\n } catch (e) {\n setState({ error: e, loading: false });\n }\n }, [channelUrl]);\n\n return state;\n};\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,OAAO;AAElC,SAAgDC,cAAc,QAAQ,uBAAuB;AAI7F,MAAMC,YAAmB,GAAG;EAAEC,OAAO,EAAE,IAAI;EAAEC,KAAK,EAAEC,SAAS;EAAEC,OAAO,EAAED;AAAU,CAAC;AACnF,MAAME,OAAO,GAAGA,CAACC,KAAY,EAAEC,SAAyB,MAAM;EAAE,GAAGD,KAAK;EAAE,GAAGC;AAAU,CAAC,CAAC;AAEzF,OAAO,MAAMC,eAAe,GAAGA,CAACC,GAAoB,EAAEC,UAAkB,KAAK;EAC3E,MAAM,CAACJ,KAAK,EAAEK,QAAQ,CAAC,GAAGb,UAAU,CAACO,OAAO,EAAEL,YAAY,CAAC;EAE3DD,cAAc,CAAC,YAAY;IACzBY,QAAQ,CAACX,YAAY,CAAC;IAEtB,IAAI;MACFW,QAAQ,CAAC;QAAEP,OAAO,EAAE,MAAMK,GAAG,CAACG,YAAY,CAACC,UAAU,CAACH,UAAU,CAAC;QAAET,OAAO,EAAE;MAAM,CAAC,CAAC;IACtF,CAAC,CAAC,OAAOa,CAAC,EAAE;MACVH,QAAQ,CAAC;QAAET,KAAK,EAAEY,CAAC;QAAEb,OAAO,EAAE;MAAM,CAAC,CAAC;IACxC;EACF,CAAC,EAAE,CAACS,UAAU,CAAC,CAAC;EAEhB,OAAOJ,KAAK;AACd,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useReducer } from 'react';
|
|
2
|
-
import { getGroupChannels } from '@sendbird/uikit-utils';
|
|
2
|
+
import { getGroupChannels, mergeObjectArrays } from '@sendbird/uikit-utils';
|
|
3
3
|
const defaultReducer = (_ref, action) => {
|
|
4
4
|
let {
|
|
5
5
|
...draft
|
|
@@ -34,12 +34,13 @@ const defaultReducer = (_ref, action) => {
|
|
|
34
34
|
compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));
|
|
35
35
|
break;
|
|
36
36
|
}
|
|
37
|
-
case '
|
|
37
|
+
case 'append_channels':
|
|
38
38
|
{
|
|
39
|
+
const groupChannels = getGroupChannels(action.value.channels);
|
|
39
40
|
if (action.value.clearBeforeAction) {
|
|
40
|
-
draft.groupChannels =
|
|
41
|
+
draft.groupChannels = groupChannels;
|
|
41
42
|
} else {
|
|
42
|
-
draft.groupChannels =
|
|
43
|
+
draft.groupChannels = mergeObjectArrays(draft.groupChannels, groupChannels, 'url');
|
|
43
44
|
}
|
|
44
45
|
compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));
|
|
45
46
|
break;
|
|
@@ -81,9 +82,9 @@ export const useGroupChannelListReducer = order => {
|
|
|
81
82
|
}
|
|
82
83
|
});
|
|
83
84
|
};
|
|
84
|
-
const
|
|
85
|
+
const appendChannels = (channels, clearBeforeAction) => {
|
|
85
86
|
dispatch({
|
|
86
|
-
type: '
|
|
87
|
+
type: 'append_channels',
|
|
87
88
|
value: {
|
|
88
89
|
channels,
|
|
89
90
|
clearBeforeAction
|
|
@@ -119,7 +120,7 @@ export const useGroupChannelListReducer = order => {
|
|
|
119
120
|
updateRefreshing,
|
|
120
121
|
updateChannels,
|
|
121
122
|
deleteChannels,
|
|
122
|
-
|
|
123
|
+
appendChannels,
|
|
123
124
|
updateOrder,
|
|
124
125
|
loading,
|
|
125
126
|
refreshing,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useReducer","getGroupChannels","defaultReducer","_ref","action","draft","compareByOrder","createCompareByOrder","order","type","refreshing","value","status","loading","channels","forEach","freshChannel","idx","groupChannels","findIndex","staleChannel","url","sort","channelUrls","c","splice","clearBeforeAction","useGroupChannelListReducer","dispatch","updateChannels","deleteChannels","
|
|
1
|
+
{"version":3,"names":["useReducer","getGroupChannels","mergeObjectArrays","defaultReducer","_ref","action","draft","compareByOrder","createCompareByOrder","order","type","refreshing","value","status","loading","channels","forEach","freshChannel","idx","groupChannels","findIndex","staleChannel","url","sort","channelUrls","c","splice","clearBeforeAction","useGroupChannelListReducer","dispatch","updateChannels","deleteChannels","appendChannels","updateLoading","updateRefreshing","updateOrder","undefined","channel1","channel2","lastMessage","createdAt","name","localeCompare"],"sources":["reducer.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport type { SendbirdChannel } from '@sendbird/uikit-utils';\nimport { SendbirdGroupChannel, getGroupChannels, mergeObjectArrays } from '@sendbird/uikit-utils';\n\ntype Order = 'latest_last_message' | 'chronological' | 'channel_name_alphabetical' | 'metadata_value_alphabetical';\n\ntype Action =\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_channels';\n value: { channels: SendbirdChannel[] };\n }\n | {\n type: 'delete_channels';\n value: { channelUrls: string[] };\n }\n | {\n type: 'append_channels';\n value: { channels: SendbirdChannel[]; clearBeforeAction: boolean };\n }\n | {\n type: 'update_order';\n value: { order?: Order };\n };\n\ntype State = {\n loading: boolean;\n refreshing: boolean;\n groupChannels: SendbirdGroupChannel[];\n order?: Order;\n};\n\nconst defaultReducer = ({ ...draft }: State, action: Action) => {\n const compareByOrder = createCompareByOrder(draft.order);\n\n switch (action.type) {\n case 'update_refreshing': {\n draft.refreshing = action.value.status;\n break;\n }\n case 'update_loading': {\n draft.loading = action.value.status;\n break;\n }\n case 'update_channels': {\n getGroupChannels(action.value.channels).forEach((freshChannel) => {\n const idx = draft.groupChannels.findIndex((staleChannel) => staleChannel.url === freshChannel.url);\n if (idx > -1) draft.groupChannels[idx] = freshChannel;\n });\n\n compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));\n break;\n }\n case 'delete_channels': {\n action.value.channelUrls.forEach((url) => {\n const idx = draft.groupChannels.findIndex((c) => c.url === url);\n if (idx > -1) draft.groupChannels.splice(idx, 1);\n });\n\n compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));\n break;\n }\n case 'append_channels': {\n const groupChannels = getGroupChannels(action.value.channels);\n if (action.value.clearBeforeAction) {\n draft.groupChannels = groupChannels;\n } else {\n draft.groupChannels = mergeObjectArrays(draft.groupChannels, groupChannels, 'url');\n }\n\n compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));\n break;\n }\n case 'update_order': {\n draft.order = action.value.order;\n const compareByOrder = createCompareByOrder(draft.order);\n compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));\n break;\n }\n }\n return draft;\n};\n\nexport const useGroupChannelListReducer = (order?: Order) => {\n const [{ loading, refreshing, groupChannels }, dispatch] = useReducer(defaultReducer, {\n loading: true,\n refreshing: false,\n groupChannels: [],\n order,\n });\n\n const updateChannels = (channels: SendbirdChannel[]) => {\n dispatch({ type: 'update_channels', value: { channels } });\n };\n const deleteChannels = (channelUrls: string[]) => {\n dispatch({ type: 'delete_channels', value: { channelUrls } });\n };\n const appendChannels = (channels: SendbirdChannel[], clearBeforeAction: boolean) => {\n dispatch({ type: 'append_channels', value: { channels, clearBeforeAction } });\n };\n const updateLoading = (status: boolean) => {\n dispatch({ type: 'update_loading', value: { status } });\n };\n const updateRefreshing = (status: boolean) => {\n dispatch({ type: 'update_refreshing', value: { status } });\n };\n const updateOrder = (order?: Order) => {\n dispatch({ type: 'update_order', value: { order } });\n };\n\n return {\n updateLoading,\n updateRefreshing,\n updateChannels,\n deleteChannels,\n appendChannels,\n\n updateOrder,\n\n loading,\n refreshing,\n groupChannels,\n };\n};\n\nconst createCompareByOrder = (order?: Order) => {\n if (!order) return undefined;\n\n return (channel1: SendbirdGroupChannel, channel2: SendbirdGroupChannel): number => {\n switch (order) {\n case 'latest_last_message': {\n if (channel1.lastMessage && channel2.lastMessage) {\n return channel2.lastMessage.createdAt - channel1.lastMessage.createdAt;\n } else if (channel1.lastMessage) {\n return -1;\n } else if (channel2.lastMessage) {\n return 1;\n } else {\n return channel2.createdAt - channel1.createdAt;\n }\n }\n\n case 'chronological': {\n return channel2.createdAt - channel1.createdAt;\n }\n\n case 'channel_name_alphabetical': {\n return channel1.name.localeCompare(channel2.name);\n }\n default: {\n return 0;\n }\n }\n };\n};\n"],"mappings":"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"}
|