@sendbird/uikit-chat-hooks 2.1.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/lib/commonjs/channel/useGroupChannelMessages/reducer.js +0 -4
  2. package/lib/commonjs/channel/useGroupChannelMessages/reducer.js.map +1 -1
  3. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +21 -13
  4. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  5. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +5 -7
  6. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  7. package/lib/commonjs/common/useTotalUnreadChannelCount.js +1 -1
  8. package/lib/commonjs/common/useTotalUnreadChannelCount.js.map +1 -1
  9. package/lib/commonjs/common/useTotalUnreadMessageCount.js +1 -1
  10. package/lib/commonjs/common/useTotalUnreadMessageCount.js.map +1 -1
  11. package/lib/commonjs/common/useUserList.js +8 -8
  12. package/lib/commonjs/common/useUserList.js.map +1 -1
  13. package/lib/commonjs/index.js.map +1 -1
  14. package/lib/commonjs/types.js.map +1 -1
  15. package/lib/module/channel/useGroupChannelMessages/reducer.js +0 -4
  16. package/lib/module/channel/useGroupChannelMessages/reducer.js.map +1 -1
  17. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +21 -13
  18. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  19. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +5 -7
  20. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  21. package/lib/module/common/useTotalUnreadChannelCount.js +2 -2
  22. package/lib/module/common/useTotalUnreadChannelCount.js.map +1 -1
  23. package/lib/module/common/useTotalUnreadMessageCount.js +2 -2
  24. package/lib/module/common/useTotalUnreadMessageCount.js.map +1 -1
  25. package/lib/module/common/useUserList.js +8 -8
  26. package/lib/module/common/useUserList.js.map +1 -1
  27. package/lib/module/index.js.map +1 -1
  28. package/lib/module/types.js.map +1 -1
  29. package/lib/typescript/src/channel/useGroupChannelList/reducer.d.ts +1 -1
  30. package/lib/typescript/src/common/useMessageOutgoingStatus.d.ts +1 -1
  31. package/lib/typescript/src/common/useTotalUnreadChannelCount.d.ts +1 -1
  32. package/lib/typescript/src/common/useTotalUnreadMessageCount.d.ts +1 -1
  33. package/lib/typescript/src/common/useUserList.d.ts +2 -2
  34. package/lib/typescript/src/index.d.ts +1 -1
  35. package/lib/typescript/src/model/CustomQuery.d.ts +1 -1
  36. package/lib/typescript/src/types.d.ts +4 -7
  37. package/package.json +4 -4
  38. package/src/channel/useGroupChannelMessages/reducer.ts +0 -4
  39. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +23 -11
  40. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +4 -6
  41. package/src/common/useTotalUnreadChannelCount.ts +2 -2
  42. package/src/common/useTotalUnreadMessageCount.ts +2 -2
  43. package/src/common/useUserList.ts +10 -10
  44. package/src/index.ts +0 -1
  45. package/src/types.ts +1 -4
@@ -40,10 +40,6 @@ const defaultReducer = (_ref, action) => {
40
40
  }).forEach(m => delete draft[key][m.reqId]);
41
41
  }
42
42
 
43
- if (action.type === 'update_messages') {
44
- draft['nextMessageMap'] = {};
45
- }
46
-
47
43
  return draft;
48
44
  }
49
45
 
@@ -1 +1 @@
1
- {"version":3,"names":["defaultReducer","action","draft","type","key","value","status","receivedMessagesAsMap","arrayToMapWithGetter","messages","getMessageUniqId","clearPrev","filter","m","isFileMessage","isUserMessage","Boolean","reqId","sendingStatus","isMyMessage","currentUserId","forEach","messageIds","msgId","reqIds","useGroupChannelMessagesReducer","userId","sortComparator","loading","refreshing","messageMap","nextMessageMap","dispatch","useReducer","updateMessages","deleteMessages","updateNextMessages","deleteNextMessages","updateLoading","updateRefreshing","useIIFE","Object","values","sort","nextMessages","newMessagesFromMembers","msg","isNewMessage"],"sources":["reducer.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport type { SendbirdBaseMessage, SendbirdFileMessage, SendbirdUserMessage } from '@sendbird/uikit-utils';\nimport { arrayToMapWithGetter, getMessageUniqId, isMyMessage, isNewMessage, useIIFE } from '@sendbird/uikit-utils';\n\nimport type { UseGroupChannelMessagesOptions } from '../../types';\n\ntype Action =\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_messages' | 'update_next_messages';\n value: { messages: SendbirdBaseMessage[]; clearPrev: boolean; currentUserId?: string };\n }\n | {\n type: 'delete_messages' | 'delete_next_messages';\n value: { messageIds: number[]; reqIds: string[] };\n };\n\ntype State = {\n loading: boolean;\n refreshing: boolean;\n messageMap: Record<string, SendbirdBaseMessage>;\n nextMessageMap: Record<string, SendbirdBaseMessage>;\n};\n\nconst defaultReducer = ({ ...draft }: State, action: Action) => {\n switch (action.type) {\n case 'update_refreshing':\n case 'update_loading': {\n const key = action.type === 'update_loading' ? 'loading' : 'refreshing';\n draft[key] = action.value.status;\n\n return draft;\n }\n case 'update_messages':\n case 'update_next_messages': {\n const key = action.type === 'update_messages' ? 'messageMap' : 'nextMessageMap';\n const receivedMessagesAsMap = arrayToMapWithGetter(action.value.messages, getMessageUniqId);\n if (action.value.clearPrev) {\n draft[key] = receivedMessagesAsMap;\n } else {\n draft[key] = { ...draft[key], ...receivedMessagesAsMap };\n\n // NOTE: Replace pending message to succeeded message\n action.value.messages\n .filter((m): m is SendbirdUserMessage | SendbirdFileMessage => {\n return (\n (m.isFileMessage() || m.isUserMessage()) &&\n Boolean(draft[key][m.reqId]) &&\n m.sendingStatus === 'succeeded' &&\n isMyMessage(m, action.value.currentUserId)\n );\n })\n .forEach((m) => delete draft[key][m.reqId]);\n }\n\n if (action.type === 'update_messages') {\n draft['nextMessageMap'] = {};\n }\n\n return draft;\n }\n case 'delete_messages':\n case 'delete_next_messages': {\n const key = action.type === 'delete_messages' ? 'messageMap' : 'nextMessageMap';\n draft[key] = { ...draft[key] };\n action.value.messageIds.forEach((msgId) => delete draft[key][msgId]);\n action.value.reqIds.forEach((reqId) => delete draft[key][reqId]);\n\n return draft;\n }\n }\n};\n\nexport const useGroupChannelMessagesReducer = (\n userId?: string,\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'],\n) => {\n const [{ loading, refreshing, messageMap, nextMessageMap }, dispatch] = useReducer(defaultReducer, {\n loading: true,\n refreshing: false,\n messageMap: {},\n nextMessageMap: {},\n });\n\n const updateMessages = (messages: SendbirdBaseMessage[], clearPrev: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_messages', value: { messages, clearPrev, currentUserId } });\n };\n const deleteMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_messages', value: { messageIds, reqIds } });\n };\n const updateNextMessages = (messages: SendbirdBaseMessage[], clearPrev: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_next_messages', value: { messages, clearPrev, currentUserId } });\n };\n const deleteNextMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_next_messages', value: { messageIds, reqIds } });\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 messages = useIIFE(() => {\n if (sortComparator) return Object.values(messageMap).sort(sortComparator);\n return Object.values(messageMap);\n });\n const nextMessages = Object.values(nextMessageMap);\n const newMessagesFromMembers = nextMessages.filter((msg) => isNewMessage(msg, userId));\n\n return {\n updateLoading,\n updateRefreshing,\n updateMessages,\n updateNextMessages,\n deleteMessages,\n deleteNextMessages,\n\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["defaultReducer","action","draft","type","key","value","status","receivedMessagesAsMap","arrayToMapWithGetter","messages","getMessageUniqId","clearPrev","filter","m","isFileMessage","isUserMessage","Boolean","reqId","sendingStatus","isMyMessage","currentUserId","forEach","messageIds","msgId","reqIds","useGroupChannelMessagesReducer","userId","sortComparator","loading","refreshing","messageMap","nextMessageMap","dispatch","useReducer","updateMessages","deleteMessages","updateNextMessages","deleteNextMessages","updateLoading","updateRefreshing","useIIFE","Object","values","sort","nextMessages","newMessagesFromMembers","msg","isNewMessage"],"sources":["reducer.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport type { SendbirdBaseMessage, SendbirdFileMessage, SendbirdUserMessage } from '@sendbird/uikit-utils';\nimport { arrayToMapWithGetter, getMessageUniqId, isMyMessage, isNewMessage, useIIFE } from '@sendbird/uikit-utils';\n\nimport type { UseGroupChannelMessagesOptions } from '../../types';\n\ntype Action =\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_messages' | 'update_next_messages';\n value: { messages: SendbirdBaseMessage[]; clearPrev: boolean; currentUserId?: string };\n }\n | {\n type: 'delete_messages' | 'delete_next_messages';\n value: { messageIds: number[]; reqIds: string[] };\n };\n\ntype State = {\n loading: boolean;\n refreshing: boolean;\n messageMap: Record<string, SendbirdBaseMessage>;\n nextMessageMap: Record<string, SendbirdBaseMessage>;\n};\n\nconst defaultReducer = ({ ...draft }: State, action: Action) => {\n switch (action.type) {\n case 'update_refreshing':\n case 'update_loading': {\n const key = action.type === 'update_loading' ? 'loading' : 'refreshing';\n draft[key] = action.value.status;\n\n return draft;\n }\n case 'update_messages':\n case 'update_next_messages': {\n const key = action.type === 'update_messages' ? 'messageMap' : 'nextMessageMap';\n const receivedMessagesAsMap = arrayToMapWithGetter(action.value.messages, getMessageUniqId);\n if (action.value.clearPrev) {\n draft[key] = receivedMessagesAsMap;\n } else {\n draft[key] = { ...draft[key], ...receivedMessagesAsMap };\n\n // NOTE: Replace pending message to succeeded message\n action.value.messages\n .filter((m): m is SendbirdUserMessage | SendbirdFileMessage => {\n return (\n (m.isFileMessage() || m.isUserMessage()) &&\n Boolean(draft[key][m.reqId]) &&\n m.sendingStatus === 'succeeded' &&\n isMyMessage(m, action.value.currentUserId)\n );\n })\n .forEach((m) => delete draft[key][m.reqId]);\n }\n\n return draft;\n }\n case 'delete_messages':\n case 'delete_next_messages': {\n const key = action.type === 'delete_messages' ? 'messageMap' : 'nextMessageMap';\n draft[key] = { ...draft[key] };\n action.value.messageIds.forEach((msgId) => delete draft[key][msgId]);\n action.value.reqIds.forEach((reqId) => delete draft[key][reqId]);\n\n return draft;\n }\n }\n};\n\nexport const useGroupChannelMessagesReducer = (\n userId?: string,\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'],\n) => {\n const [{ loading, refreshing, messageMap, nextMessageMap }, dispatch] = useReducer(defaultReducer, {\n loading: true,\n refreshing: false,\n messageMap: {},\n nextMessageMap: {},\n });\n\n const updateMessages = (messages: SendbirdBaseMessage[], clearPrev: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_messages', value: { messages, clearPrev, currentUserId } });\n };\n const deleteMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_messages', value: { messageIds, reqIds } });\n };\n const updateNextMessages = (messages: SendbirdBaseMessage[], clearPrev: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_next_messages', value: { messages, clearPrev, currentUserId } });\n };\n const deleteNextMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_next_messages', value: { messageIds, reqIds } });\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 messages = useIIFE(() => {\n if (sortComparator) return Object.values(messageMap).sort(sortComparator);\n return Object.values(messageMap);\n });\n const nextMessages = Object.values(nextMessageMap);\n const newMessagesFromMembers = nextMessages.filter((msg) => isNewMessage(msg, userId));\n\n return {\n updateLoading,\n updateRefreshing,\n updateMessages,\n updateNextMessages,\n deleteMessages,\n deleteNextMessages,\n\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n };\n};\n"],"mappings":"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"}
@@ -43,11 +43,18 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
43
43
  updateRefreshing
44
44
  } = (0, _reducer.useGroupChannelMessagesReducer)(userId, options === null || options === void 0 ? void 0 : options.sortComparator);
45
45
 
46
- const channelMarkAs = async () => {
46
+ const channelMarkAsRead = async source => {
47
47
  try {
48
- await (0, _uikitUtils.confirmAndMarkAsRead)([channel]);
48
+ switch (source) {
49
+ case _groupChannel.MessageEventSource.EVENT_MESSAGE_RECEIVED:
50
+ case _groupChannel.MessageEventSource.EVENT_MESSAGE_SENT_SUCCESS:
51
+ case _groupChannel.MessageEventSource.SYNC_MESSAGE_FILL:
52
+ case undefined:
53
+ await (0, _uikitUtils.confirmAndMarkAsRead)([channel]);
54
+ break;
55
+ }
49
56
  } catch (e) {
50
- _uikitUtils.Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);
57
+ _uikitUtils.Logger.warn(`[${HOOK_NAME}/channelMarkAsRead]`, e);
51
58
  }
52
59
  };
53
60
 
@@ -61,22 +68,23 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
61
68
 
62
69
  collectionRef.current = createMessageCollection(channel, options === null || options === void 0 ? void 0 : options.collectionCreator);
63
70
  updateNextMessages([], true, sdk.currentUser.userId);
64
- channelMarkAs();
71
+ channelMarkAsRead();
65
72
  (_collectionRef$curren2 = collectionRef.current) === null || _collectionRef$curren2 === void 0 ? void 0 : _collectionRef$curren2.setMessageCollectionHandler({
66
73
  onMessagesAdded: (_, __, messages) => {
67
- switch (_.source) {
68
- case _groupChannel.MessageEventSource.EVENT_MESSAGE_RECEIVED:
69
- case _groupChannel.MessageEventSource.EVENT_MESSAGE_SENT_SUCCESS:
70
- case _groupChannel.MessageEventSource.SYNC_MESSAGE_FILL:
71
- channelMarkAs();
72
- break;
73
- }
74
-
74
+ channelMarkAsRead(_.source);
75
75
  updateNextMessages(messages, false, sdk.currentUser.userId);
76
76
  },
77
77
  onMessagesUpdated: (_, __, messages) => {
78
- // NOTE: v4 MESSAGE_RECEIVED is called twice from onMessagesAdded and onMessagesUpdated when receiving new message.
78
+ channelMarkAsRead(_.source); // NOTE: admin message is not added via onMessagesAdded handler, not checked yet is this a bug.
79
+
80
+ if (_.source === _groupChannel.MessageEventSource.EVENT_MESSAGE_RECEIVED) {
81
+ const nextMessageIds = nextMessages.map(it => it.messageId);
82
+ const nonAddedMessagesFromReceivedEvent = messages.filter(it => nextMessageIds.indexOf(it.messageId) === -1);
83
+ updateNextMessages(nonAddedMessagesFromReceivedEvent, false, sdk.currentUser.userId);
84
+ } // NOTE: v4 MESSAGE_RECEIVED is called twice from onMessagesAdded and onMessagesUpdated when receiving new message.
79
85
  // This is not intended behavior but not bugs.
86
+
87
+
80
88
  if (_.source !== _groupChannel.MessageEventSource.EVENT_MESSAGE_RECEIVED) {
81
89
  updateMessages(messages, false, sdk.currentUser.userId);
82
90
  }
@@ -1 +1 @@
1
- {"version":3,"names":["createMessageCollection","channel","creator","filter","MessageFilter","limit","HOOK_NAME","useGroupChannelMessagesWithCollection","sdk","userId","options","forceUpdate","useForceUpdate","collectionRef","useRef","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useGroupChannelMessagesReducer","sortComparator","channelMarkAs","confirmAndMarkAsRead","e","Logger","warn","init","useCallback","uid","callback","current","dispose","collectionCreator","currentUser","setMessageCollectionHandler","onMessagesAdded","_","__","source","MessageEventSource","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT_SUCCESS","SYNC_MESSAGE_FILL","onMessagesUpdated","onMessagesDeleted","messageIds","onChannelDeleted","onChannelUpdated","eventChannel","isGroupChannel","isDifferentChannel","onHugeGapDetected","initialize","MessageCollectionInitPolicy","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","error","debug","length","pendingMessages","failedMessages","onApiResult","url","useChannelHandler","onUserBanned","bannedUser","useEffect","setTimeout","refresh","useFreshCallback","prev","hasPrevious","list","loadPrevious","next","messageCandidates","hasNext","fetchedList","loadNext","push","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","_failedMessage","sendFileMessage","isFileMessage","updateUserMessage","messageId","updatedMessage","updateFileMessage","resendMessage","failedMessage","resentMessage","resendUserMessage","resendFileMessage","deleteMessage","message","sendingStatus","removeFailedMessage","reqId"],"sources":["useGroupChannelMessagesWithCollection.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nimport { MessageCollectionInitPolicy, MessageEventSource, MessageFilter } from '@sendbird/chat/groupChannel';\nimport type {\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessageCollection,\n} from '@sendbird/uikit-utils';\nimport {\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n useForceUpdate,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageCollection = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['collectionCreator'],\n) => {\n if (creator) return creator();\n const filter = new MessageFilter();\n return channel.createMessageCollection({ filter, limit: 100 });\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithCollection';\n\nexport const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const forceUpdate = useForceUpdate();\n const collectionRef = useRef<SendbirdMessageCollection>();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAs = async () => {\n try {\n await confirmAndMarkAsRead([channel]);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);\n }\n };\n\n const init = useCallback(\n async (uid?: string, callback?: () => void) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createMessageCollection(channel, options?.collectionCreator);\n updateNextMessages([], true, sdk.currentUser.userId);\n channelMarkAs();\n\n collectionRef.current?.setMessageCollectionHandler({\n onMessagesAdded: (_, __, messages) => {\n switch (_.source) {\n case MessageEventSource.EVENT_MESSAGE_RECEIVED:\n case MessageEventSource.EVENT_MESSAGE_SENT_SUCCESS:\n case MessageEventSource.SYNC_MESSAGE_FILL:\n channelMarkAs();\n break;\n }\n updateNextMessages(messages, false, sdk.currentUser.userId);\n },\n onMessagesUpdated: (_, __, messages) => {\n // NOTE: v4 MESSAGE_RECEIVED is called twice from onMessagesAdded and onMessagesUpdated when receiving new message.\n // This is not intended behavior but not bugs.\n if (_.source !== MessageEventSource.EVENT_MESSAGE_RECEIVED) {\n updateMessages(messages, false, sdk.currentUser.userId);\n }\n },\n onMessagesDeleted: (_, __, messageIds) => {\n deleteMessages(messageIds, []);\n deleteNextMessages(messageIds, []);\n },\n onChannelDeleted: () => {\n options?.onChannelDeleted?.();\n },\n onChannelUpdated: (_, eventChannel) => {\n if (eventChannel.isGroupChannel() && !isDifferentChannel(eventChannel, channel)) {\n forceUpdate();\n }\n },\n onHugeGapDetected: () => {\n init(uid);\n },\n });\n\n collectionRef.current\n .initialize(MessageCollectionInitPolicy.CACHE_AND_REPLACE_BY_API)\n .onCacheResult((err, messages) => {\n if (err) sdk.isCacheEnabled && Logger.error(`[${HOOK_NAME}/onCacheResult]`, err);\n else {\n Logger.debug(`[${HOOK_NAME}/onCacheResult]`, 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n }\n callback?.();\n })\n .onApiResult((err, messages) => {\n if (err) Logger.warn(`[${HOOK_NAME}/onApiResult]`, err);\n else {\n Logger.debug(`[${HOOK_NAME}/onApiResult]`, 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser.userId);\n if (sdk.isCacheEnabled) {\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n }\n }\n callback?.();\n });\n }\n },\n [sdk, channel.url, options?.collectionCreator],\n );\n\n useChannelHandler(sdk, HOOK_NAME, {\n onUserBanned(channel, bannedUser) {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n forceUpdate();\n }\n }\n },\n });\n\n useEffect(() => {\n // NOTE: Cache read is heavy task, and it prevents smooth ui transition\n setTimeout(async () => {\n updateLoading(true);\n init(userId, () => updateLoading(false));\n }, 0);\n }, [init, userId]);\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n init(userId, () => updateRefreshing(false));\n });\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useFreshCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasPrevious) {\n try {\n const list = await collectionRef.current?.loadPrevious();\n updateMessages(list, false, sdk.currentUser.userId);\n } catch {}\n }\n });\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(async () => {\n const messageCandidates: SendbirdBaseMessage[] = [];\n\n if (collectionRef.current && collectionRef.current?.hasNext) {\n try {\n const fetchedList = await collectionRef.current?.loadNext();\n messageCandidates.push(...fetchedList);\n } catch {}\n }\n\n if (nextMessages.length > 0) {\n messageCandidates.push(...nextMessages);\n }\n\n if (messageCandidates.length > 0) {\n updateMessages(messageCandidates, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n });\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n onPending?.(pendingMessage);\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, _failedMessage) => {\n // updateMessages([failedMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage as SendbirdFileMessage);\n }\n })\n .onFailed((err, _failedMessage) => {\n // updateMessages([failedMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useFreshCallback(\n async (failedMessage) => {\n const resentMessage = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (resentMessage) updateMessages([resentMessage], false, sdk.currentUser.userId);\n },\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n try {\n await collectionRef.current?.removeFailedMessage(message.reqId);\n } finally {\n deleteMessages([message.messageId], [message.reqId]);\n }\n }\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createMessageCollection","channel","creator","filter","MessageFilter","limit","HOOK_NAME","useGroupChannelMessagesWithCollection","sdk","userId","options","forceUpdate","useForceUpdate","collectionRef","useRef","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useGroupChannelMessagesReducer","sortComparator","channelMarkAsRead","source","MessageEventSource","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT_SUCCESS","SYNC_MESSAGE_FILL","undefined","confirmAndMarkAsRead","e","Logger","warn","init","useCallback","uid","callback","current","dispose","collectionCreator","currentUser","setMessageCollectionHandler","onMessagesAdded","_","__","onMessagesUpdated","nextMessageIds","map","it","messageId","nonAddedMessagesFromReceivedEvent","indexOf","onMessagesDeleted","messageIds","onChannelDeleted","onChannelUpdated","eventChannel","isGroupChannel","isDifferentChannel","onHugeGapDetected","initialize","MessageCollectionInitPolicy","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","error","debug","length","pendingMessages","failedMessages","onApiResult","url","useChannelHandler","onUserBanned","bannedUser","useEffect","setTimeout","refresh","useFreshCallback","prev","hasPrevious","list","loadPrevious","next","messageCandidates","hasNext","fetchedList","loadNext","push","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","_failedMessage","sendFileMessage","isFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","resentMessage","resendUserMessage","resendFileMessage","deleteMessage","message","sendingStatus","removeFailedMessage","reqId"],"sources":["useGroupChannelMessagesWithCollection.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nimport { MessageCollectionInitPolicy, MessageEventSource, MessageFilter } from '@sendbird/chat/groupChannel';\nimport type {\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessageCollection,\n} from '@sendbird/uikit-utils';\nimport {\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n useForceUpdate,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageCollection = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['collectionCreator'],\n) => {\n if (creator) return creator();\n const filter = new MessageFilter();\n return channel.createMessageCollection({ filter, limit: 100 });\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithCollection';\n\nexport const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const forceUpdate = useForceUpdate();\n const collectionRef = useRef<SendbirdMessageCollection>();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAsRead = async (source?: MessageEventSource) => {\n try {\n switch (source) {\n case MessageEventSource.EVENT_MESSAGE_RECEIVED:\n case MessageEventSource.EVENT_MESSAGE_SENT_SUCCESS:\n case MessageEventSource.SYNC_MESSAGE_FILL:\n case undefined:\n await confirmAndMarkAsRead([channel]);\n break;\n }\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAsRead]`, e);\n }\n };\n\n const init = useCallback(\n async (uid?: string, callback?: () => void) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createMessageCollection(channel, options?.collectionCreator);\n updateNextMessages([], true, sdk.currentUser.userId);\n channelMarkAsRead();\n\n collectionRef.current?.setMessageCollectionHandler({\n onMessagesAdded: (_, __, messages) => {\n channelMarkAsRead(_.source);\n updateNextMessages(messages, false, sdk.currentUser.userId);\n },\n onMessagesUpdated: (_, __, messages) => {\n channelMarkAsRead(_.source);\n\n // NOTE: admin message is not added via onMessagesAdded handler, not checked yet is this a bug.\n if (_.source === MessageEventSource.EVENT_MESSAGE_RECEIVED) {\n const nextMessageIds = nextMessages.map((it) => it.messageId);\n const nonAddedMessagesFromReceivedEvent = messages.filter(\n (it) => nextMessageIds.indexOf(it.messageId) === -1,\n );\n updateNextMessages(nonAddedMessagesFromReceivedEvent, false, sdk.currentUser.userId);\n }\n\n // NOTE: v4 MESSAGE_RECEIVED is called twice from onMessagesAdded and onMessagesUpdated when receiving new message.\n // This is not intended behavior but not bugs.\n if (_.source !== MessageEventSource.EVENT_MESSAGE_RECEIVED) {\n updateMessages(messages, false, sdk.currentUser.userId);\n }\n },\n onMessagesDeleted: (_, __, messageIds) => {\n deleteMessages(messageIds, []);\n deleteNextMessages(messageIds, []);\n },\n onChannelDeleted: () => {\n options?.onChannelDeleted?.();\n },\n onChannelUpdated: (_, eventChannel) => {\n if (eventChannel.isGroupChannel() && !isDifferentChannel(eventChannel, channel)) {\n forceUpdate();\n }\n },\n onHugeGapDetected: () => {\n init(uid);\n },\n });\n\n collectionRef.current\n .initialize(MessageCollectionInitPolicy.CACHE_AND_REPLACE_BY_API)\n .onCacheResult((err, messages) => {\n if (err) sdk.isCacheEnabled && Logger.error(`[${HOOK_NAME}/onCacheResult]`, err);\n else {\n Logger.debug(`[${HOOK_NAME}/onCacheResult]`, 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n }\n callback?.();\n })\n .onApiResult((err, messages) => {\n if (err) Logger.warn(`[${HOOK_NAME}/onApiResult]`, err);\n else {\n Logger.debug(`[${HOOK_NAME}/onApiResult]`, 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser.userId);\n if (sdk.isCacheEnabled) {\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n }\n }\n callback?.();\n });\n }\n },\n [sdk, channel.url, options?.collectionCreator],\n );\n\n useChannelHandler(sdk, HOOK_NAME, {\n onUserBanned(channel, bannedUser) {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n forceUpdate();\n }\n }\n },\n });\n\n useEffect(() => {\n // NOTE: Cache read is heavy task, and it prevents smooth ui transition\n setTimeout(async () => {\n updateLoading(true);\n init(userId, () => updateLoading(false));\n }, 0);\n }, [init, userId]);\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n init(userId, () => updateRefreshing(false));\n });\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useFreshCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasPrevious) {\n try {\n const list = await collectionRef.current?.loadPrevious();\n updateMessages(list, false, sdk.currentUser.userId);\n } catch {}\n }\n });\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(async () => {\n const messageCandidates: SendbirdBaseMessage[] = [];\n\n if (collectionRef.current && collectionRef.current?.hasNext) {\n try {\n const fetchedList = await collectionRef.current?.loadNext();\n messageCandidates.push(...fetchedList);\n } catch {}\n }\n\n if (nextMessages.length > 0) {\n messageCandidates.push(...nextMessages);\n }\n\n if (messageCandidates.length > 0) {\n updateMessages(messageCandidates, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n });\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n onPending?.(pendingMessage);\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, _failedMessage) => {\n // updateMessages([failedMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage as SendbirdFileMessage);\n }\n })\n .onFailed((err, _failedMessage) => {\n // updateMessages([failedMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useFreshCallback(\n async (failedMessage) => {\n const resentMessage = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (resentMessage) updateMessages([resentMessage], false, sdk.currentUser.userId);\n },\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n try {\n await collectionRef.current?.removeFailedMessage(message.reqId);\n } finally {\n deleteMessages([message.messageId], [message.reqId]);\n }\n }\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n };\n};\n"],"mappings":"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"}
@@ -40,11 +40,11 @@ const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
40
40
  updateRefreshing
41
41
  } = (0, _reducer.useGroupChannelMessagesReducer)(userId, options === null || options === void 0 ? void 0 : options.sortComparator);
42
42
 
43
- const channelMarkAs = async () => {
43
+ const channelMarkAsRead = async () => {
44
44
  try {
45
45
  await (0, _uikitUtils.confirmAndMarkAsRead)([channel]);
46
46
  } catch (e) {
47
- _uikitUtils.Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);
47
+ _uikitUtils.Logger.warn(`[${HOOK_NAME}/channelMarkAsRead]`, e);
48
48
  }
49
49
  };
50
50
 
@@ -53,7 +53,7 @@ const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
53
53
  var _queryRef$current;
54
54
 
55
55
  queryRef.current = createMessageQuery(channel, options === null || options === void 0 ? void 0 : options.queryCreator);
56
- channelMarkAs().catch();
56
+ channelMarkAsRead().catch();
57
57
 
58
58
  if ((_queryRef$current = queryRef.current) !== null && _queryRef$current !== void 0 && _queryRef$current.hasNext) {
59
59
  var _queryRef$current2;
@@ -76,7 +76,7 @@ const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
76
76
  // Messages
77
77
  onMessageReceived(eventChannel, message) {
78
78
  if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
79
- channelMarkAs();
79
+ channelMarkAsRead();
80
80
  updateNextMessages([message], false, sdk.currentUser.userId);
81
81
  },
82
82
 
@@ -203,9 +203,7 @@ const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
203
203
  }, [channel]);
204
204
  const resendMessage = (0, _react.useCallback)(async failedMessage => {
205
205
  const message = await (() => {
206
- if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage); // FIXME: v4 bugs
207
- // @ts-ignore
208
-
206
+ if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);
209
207
  if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);
210
208
  return null;
211
209
  })();
@@ -1 +1 @@
1
- {"version":3,"names":["createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","HOOK_NAME","useGroupChannelMessagesWithQuery","sdk","userId","options","queryRef","useRef","forceUpdate","useForceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useGroupChannelMessagesReducer","sortComparator","channelMarkAs","confirmAndMarkAsRead","e","Logger","warn","init","useCallback","uid","current","queryCreator","catch","hasNext","list","load","currentUser","url","channelUpdater","isGroupChannel","isDifferentChannel","useChannelHandler","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","foundChannel","find","c","onChannelDeleted","channelUrl","onOperatorUpdated","onUserLeft","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","useAsyncEffect","refresh","prev","next","length","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","err","sendFileMessage","isFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nimport type {\n SendbirdBaseChannel,\n SendbirdGroupChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n useAsyncEffect,\n useForceUpdate,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageQuery = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['queryCreator'],\n) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithQuery';\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAs = async () => {\n try {\n await confirmAndMarkAsRead([channel]);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);\n }\n };\n\n const init = useCallback(\n async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n channelMarkAs().catch();\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser.userId);\n }\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n },\n [sdk, channel.url, options?.queryCreator],\n );\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, HOOK_NAME, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n channelMarkAs();\n updateNextMessages([message], false, sdk.currentUser.userId);\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNextMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const foundChannel = channels.find((c) => !isDifferentChannel(c, channel));\n if (foundChannel) channelUpdater(foundChannel);\n },\n onChannelDeleted(channelUrl: string) {\n if (channel.url === channelUrl) options?.onChannelDeleted?.();\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserLeft: channelUpdater,\n // onUserEntered: channelUpdater,\n // onUserExited: channelUpdater,\n onUserJoined: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [init, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n }, [init, userId]);\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser.userId);\n }\n }, []);\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useCallback(async () => {\n if (nextMessages.length > 0) {\n updateMessages(nextMessages, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n }, [nextMessages.length]);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err) => {\n reject(err);\n });\n });\n },\n [channel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err) => {\n reject(err);\n });\n });\n },\n [channel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [channel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [channel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n // FIXME: v4 bugs\n // @ts-ignore\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateNextMessages([message], false, sdk.currentUser.userId);\n },\n [channel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n 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 [channel],\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","HOOK_NAME","useGroupChannelMessagesWithQuery","sdk","userId","options","queryRef","useRef","forceUpdate","useForceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useGroupChannelMessagesReducer","sortComparator","channelMarkAsRead","confirmAndMarkAsRead","e","Logger","warn","init","useCallback","uid","current","queryCreator","catch","hasNext","list","load","currentUser","url","channelUpdater","isGroupChannel","isDifferentChannel","useChannelHandler","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","foundChannel","find","c","onChannelDeleted","channelUrl","onOperatorUpdated","onUserLeft","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","useAsyncEffect","refresh","prev","next","length","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","err","sendFileMessage","isFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nimport type {\n SendbirdBaseChannel,\n SendbirdGroupChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n useAsyncEffect,\n useForceUpdate,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageQuery = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['queryCreator'],\n) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithQuery';\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAsRead = async () => {\n try {\n await confirmAndMarkAsRead([channel]);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAsRead]`, e);\n }\n };\n\n const init = useCallback(\n async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n channelMarkAsRead().catch();\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser.userId);\n }\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n },\n [sdk, channel.url, options?.queryCreator],\n );\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, HOOK_NAME, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n channelMarkAsRead();\n updateNextMessages([message], false, sdk.currentUser.userId);\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNextMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const foundChannel = channels.find((c) => !isDifferentChannel(c, channel));\n if (foundChannel) channelUpdater(foundChannel);\n },\n onChannelDeleted(channelUrl: string) {\n if (channel.url === channelUrl) options?.onChannelDeleted?.();\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserLeft: channelUpdater,\n // onUserEntered: channelUpdater,\n // onUserExited: channelUpdater,\n onUserJoined: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [init, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n }, [init, userId]);\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser.userId);\n }\n }, []);\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useCallback(async () => {\n if (nextMessages.length > 0) {\n updateMessages(nextMessages, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n }, [nextMessages.length]);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err) => {\n reject(err);\n });\n });\n },\n [channel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err) => {\n reject(err);\n });\n });\n },\n [channel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [channel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [channel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateNextMessages([message], false, sdk.currentUser.userId);\n },\n [channel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n 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 [channel],\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n };\n};\n"],"mappings":"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"}
@@ -24,7 +24,7 @@ const useTotalUnreadChannelCount = (sdk, params) => {
24
24
  setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());
25
25
  }
26
26
  });
27
- return (0, _uikitUtils.truncatedBadgeCount)(unreadChannelCount, params === null || params === void 0 ? void 0 : params.maxCount);
27
+ return (0, _uikitUtils.truncatedCount)(unreadChannelCount, params === null || params === void 0 ? void 0 : params.maxCount);
28
28
  };
29
29
 
30
30
  exports.useTotalUnreadChannelCount = useTotalUnreadChannelCount;
@@ -1 +1 @@
1
- {"version":3,"names":["HOOK_NAME","useTotalUnreadChannelCount","sdk","params","id","useUniqId","unreadChannelCount","setUnreadChannelCount","useState","useAsyncEffect","groupChannel","getTotalUnreadChannelCount","useUserEventHandler","onTotalUnreadMessageCountUpdated","truncatedBadgeCount","maxCount"],"sources":["useTotalUnreadChannelCount.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedBadgeCount, useAsyncEffect } from '@sendbird/uikit-utils';\nimport { useUniqId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Params = {\n maxCount?: number;\n};\nconst HOOK_NAME = 'useTotalUnreadChannelCount';\nexport const useTotalUnreadChannelCount = (sdk: SendbirdChatSDK, params?: Params) => {\n const id = useUniqId(HOOK_NAME);\n const [unreadChannelCount, setUnreadChannelCount] = useState(0);\n\n useAsyncEffect(async () => {\n setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());\n }, [sdk]);\n\n useUserEventHandler(sdk, HOOK_NAME + id, {\n onTotalUnreadMessageCountUpdated: async () => {\n setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());\n },\n });\n\n return truncatedBadgeCount(unreadChannelCount, params?.maxCount);\n};\n"],"mappings":";;;;;;;AAAA;;AAGA;;AAGA;;AAKA,MAAMA,SAAS,GAAG,4BAAlB;;AACO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,MAAvB,KAA2C;EACnF,MAAMC,EAAE,GAAG,IAAAC,qBAAA,EAAUL,SAAV,CAAX;EACA,MAAM,CAACM,kBAAD,EAAqBC,qBAArB,IAA8C,IAAAC,eAAA,EAAS,CAAT,CAApD;EAEA,IAAAC,0BAAA,EAAe,YAAY;IACzBF,qBAAqB,CAAC,MAAML,GAAG,CAACQ,YAAJ,CAAiBC,0BAAjB,EAAP,CAArB;EACD,CAFD,EAEG,CAACT,GAAD,CAFH;EAIA,IAAAU,wCAAA,EAAoBV,GAApB,EAAyBF,SAAS,GAAGI,EAArC,EAAyC;IACvCS,gCAAgC,EAAE,YAAY;MAC5CN,qBAAqB,CAAC,MAAML,GAAG,CAACQ,YAAJ,CAAiBC,0BAAjB,EAAP,CAArB;IACD;EAHsC,CAAzC;EAMA,OAAO,IAAAG,+BAAA,EAAoBR,kBAApB,EAAwCH,MAAxC,aAAwCA,MAAxC,uBAAwCA,MAAM,CAAEY,QAAhD,CAAP;AACD,CAfM"}
1
+ {"version":3,"names":["HOOK_NAME","useTotalUnreadChannelCount","sdk","params","id","useUniqId","unreadChannelCount","setUnreadChannelCount","useState","useAsyncEffect","groupChannel","getTotalUnreadChannelCount","useUserEventHandler","onTotalUnreadMessageCountUpdated","truncatedCount","maxCount"],"sources":["useTotalUnreadChannelCount.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedCount, useAsyncEffect } from '@sendbird/uikit-utils';\nimport { useUniqId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Params = {\n maxCount?: number;\n};\nconst HOOK_NAME = 'useTotalUnreadChannelCount';\nexport const useTotalUnreadChannelCount = (sdk: SendbirdChatSDK, params?: Params) => {\n const id = useUniqId(HOOK_NAME);\n const [unreadChannelCount, setUnreadChannelCount] = useState(0);\n\n useAsyncEffect(async () => {\n setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());\n }, [sdk]);\n\n useUserEventHandler(sdk, HOOK_NAME + id, {\n onTotalUnreadMessageCountUpdated: async () => {\n setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());\n },\n });\n\n return truncatedCount(unreadChannelCount, params?.maxCount);\n};\n"],"mappings":";;;;;;;AAAA;;AAGA;;AAGA;;AAKA,MAAMA,SAAS,GAAG,4BAAlB;;AACO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,MAAvB,KAA2C;EACnF,MAAMC,EAAE,GAAG,IAAAC,qBAAA,EAAUL,SAAV,CAAX;EACA,MAAM,CAACM,kBAAD,EAAqBC,qBAArB,IAA8C,IAAAC,eAAA,EAAS,CAAT,CAApD;EAEA,IAAAC,0BAAA,EAAe,YAAY;IACzBF,qBAAqB,CAAC,MAAML,GAAG,CAACQ,YAAJ,CAAiBC,0BAAjB,EAAP,CAArB;EACD,CAFD,EAEG,CAACT,GAAD,CAFH;EAIA,IAAAU,wCAAA,EAAoBV,GAApB,EAAyBF,SAAS,GAAGI,EAArC,EAAyC;IACvCS,gCAAgC,EAAE,YAAY;MAC5CN,qBAAqB,CAAC,MAAML,GAAG,CAACQ,YAAJ,CAAiBC,0BAAjB,EAAP,CAArB;IACD;EAHsC,CAAzC;EAMA,OAAO,IAAAG,0BAAA,EAAeR,kBAAf,EAAmCH,MAAnC,aAAmCA,MAAnC,uBAAmCA,MAAM,CAAEY,QAA3C,CAAP;AACD,CAfM"}
@@ -30,7 +30,7 @@ const useTotalUnreadMessageCount = (sdk, options) => {
30
30
  (0, _useUserEventHandler.useUserEventHandler)(sdk, `${HOOK_NAME}_${id}`, {
31
31
  onTotalUnreadMessageCountUpdated: totalCount => setUnreadMessageCount(totalCount)
32
32
  });
33
- return (0, _uikitUtils.truncatedBadgeCount)(unreadMessageCount, options === null || options === void 0 ? void 0 : options.maxCount);
33
+ return (0, _uikitUtils.truncatedCount)(unreadMessageCount, options === null || options === void 0 ? void 0 : options.maxCount);
34
34
  };
35
35
 
36
36
  exports.useTotalUnreadMessageCount = useTotalUnreadMessageCount;
@@ -1 +1 @@
1
- {"version":3,"names":["HOOK_NAME","useTotalUnreadMessageCount","sdk","options","id","useUniqId","unreadMessageCount","setUnreadMessageCount","useState","useAsyncEffect","unreadCount","groupChannel","getTotalUnreadMessageCount","superChannelFilter","SuperChannelFilter","ALL","params","channelCustomTypesFilter","useUserEventHandler","onTotalUnreadMessageCountUpdated","totalCount","truncatedBadgeCount","maxCount"],"sources":["useTotalUnreadMessageCount.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { SuperChannelFilter, TotalUnreadMessageCountParams } from '@sendbird/chat/groupChannel';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedBadgeCount, useAsyncEffect, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Options = {\n params?: TotalUnreadMessageCountParams;\n maxCount?: number;\n};\n\nconst HOOK_NAME = 'useTotalUnreadMessageCount';\nexport const useTotalUnreadMessageCount = (sdk: SendbirdChatSDK, options?: Options) => {\n const id = useUniqId(HOOK_NAME);\n const [unreadMessageCount, setUnreadMessageCount] = useState(0);\n\n useAsyncEffect(async () => {\n const unreadCount = await sdk.groupChannel.getTotalUnreadMessageCount({\n superChannelFilter: SuperChannelFilter.ALL,\n ...options?.params,\n });\n setUnreadMessageCount(unreadCount);\n }, [sdk, options?.params?.superChannelFilter, options?.params?.channelCustomTypesFilter]);\n\n useUserEventHandler(sdk, `${HOOK_NAME}_${id}`, {\n onTotalUnreadMessageCountUpdated: (totalCount: number) => setUnreadMessageCount(totalCount),\n });\n\n return truncatedBadgeCount(unreadMessageCount, options?.maxCount);\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAEA;;AAEA;;AAOA,MAAMA,SAAS,GAAG,4BAAlB;;AACO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,OAAvB,KAA6C;EAAA;;EACrF,MAAMC,EAAE,GAAG,IAAAC,qBAAA,EAAUL,SAAV,CAAX;EACA,MAAM,CAACM,kBAAD,EAAqBC,qBAArB,IAA8C,IAAAC,eAAA,EAAS,CAAT,CAApD;EAEA,IAAAC,0BAAA,EAAe,YAAY;IACzB,MAAMC,WAAW,GAAG,MAAMR,GAAG,CAACS,YAAJ,CAAiBC,0BAAjB,CAA4C;MACpEC,kBAAkB,EAAEC,gCAAA,CAAmBC,GAD6B;MAEpE,IAAGZ,OAAH,aAAGA,OAAH,uBAAGA,OAAO,CAAEa,MAAZ;IAFoE,CAA5C,CAA1B;IAIAT,qBAAqB,CAACG,WAAD,CAArB;EACD,CAND,EAMG,CAACR,GAAD,EAAMC,OAAN,aAAMA,OAAN,0CAAMA,OAAO,CAAEa,MAAf,oDAAM,gBAAiBH,kBAAvB,EAA2CV,OAA3C,aAA2CA,OAA3C,2CAA2CA,OAAO,CAAEa,MAApD,qDAA2C,iBAAiBC,wBAA5D,CANH;EAQA,IAAAC,wCAAA,EAAoBhB,GAApB,EAA0B,GAAEF,SAAU,IAAGI,EAAG,EAA5C,EAA+C;IAC7Ce,gCAAgC,EAAGC,UAAD,IAAwBb,qBAAqB,CAACa,UAAD;EADlC,CAA/C;EAIA,OAAO,IAAAC,+BAAA,EAAoBf,kBAApB,EAAwCH,OAAxC,aAAwCA,OAAxC,uBAAwCA,OAAO,CAAEmB,QAAjD,CAAP;AACD,CAjBM"}
1
+ {"version":3,"names":["HOOK_NAME","useTotalUnreadMessageCount","sdk","options","id","useUniqId","unreadMessageCount","setUnreadMessageCount","useState","useAsyncEffect","unreadCount","groupChannel","getTotalUnreadMessageCount","superChannelFilter","SuperChannelFilter","ALL","params","channelCustomTypesFilter","useUserEventHandler","onTotalUnreadMessageCountUpdated","totalCount","truncatedCount","maxCount"],"sources":["useTotalUnreadMessageCount.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { SuperChannelFilter, TotalUnreadMessageCountParams } from '@sendbird/chat/groupChannel';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedCount, useAsyncEffect, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Options = {\n params?: TotalUnreadMessageCountParams;\n maxCount?: number;\n};\n\nconst HOOK_NAME = 'useTotalUnreadMessageCount';\nexport const useTotalUnreadMessageCount = (sdk: SendbirdChatSDK, options?: Options) => {\n const id = useUniqId(HOOK_NAME);\n const [unreadMessageCount, setUnreadMessageCount] = useState(0);\n\n useAsyncEffect(async () => {\n const unreadCount = await sdk.groupChannel.getTotalUnreadMessageCount({\n superChannelFilter: SuperChannelFilter.ALL,\n ...options?.params,\n });\n setUnreadMessageCount(unreadCount);\n }, [sdk, options?.params?.superChannelFilter, options?.params?.channelCustomTypesFilter]);\n\n useUserEventHandler(sdk, `${HOOK_NAME}_${id}`, {\n onTotalUnreadMessageCountUpdated: (totalCount: number) => setUnreadMessageCount(totalCount),\n });\n\n return truncatedCount(unreadMessageCount, options?.maxCount);\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAEA;;AAEA;;AAOA,MAAMA,SAAS,GAAG,4BAAlB;;AACO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,OAAvB,KAA6C;EAAA;;EACrF,MAAMC,EAAE,GAAG,IAAAC,qBAAA,EAAUL,SAAV,CAAX;EACA,MAAM,CAACM,kBAAD,EAAqBC,qBAArB,IAA8C,IAAAC,eAAA,EAAS,CAAT,CAApD;EAEA,IAAAC,0BAAA,EAAe,YAAY;IACzB,MAAMC,WAAW,GAAG,MAAMR,GAAG,CAACS,YAAJ,CAAiBC,0BAAjB,CAA4C;MACpEC,kBAAkB,EAAEC,gCAAA,CAAmBC,GAD6B;MAEpE,IAAGZ,OAAH,aAAGA,OAAH,uBAAGA,OAAO,CAAEa,MAAZ;IAFoE,CAA5C,CAA1B;IAIAT,qBAAqB,CAACG,WAAD,CAArB;EACD,CAND,EAMG,CAACR,GAAD,EAAMC,OAAN,aAAMA,OAAN,0CAAMA,OAAO,CAAEa,MAAf,oDAAM,gBAAiBH,kBAAvB,EAA2CV,OAA3C,aAA2CA,OAA3C,2CAA2CA,OAAO,CAAEa,MAApD,qDAA2C,iBAAiBC,wBAA5D,CANH;EAQA,IAAAC,wCAAA,EAAoBhB,GAApB,EAA0B,GAAEF,SAAU,IAAGI,EAAG,EAA5C,EAA+C;IAC7Ce,gCAAgC,EAAGC,UAAD,IAAwBb,qBAAqB,CAACa,UAAD;EADlC,CAA/C;EAIA,OAAO,IAAAC,0BAAA,EAAef,kBAAf,EAAmCH,OAAnC,aAAmCA,OAAnC,uBAAmCA,OAAO,CAAEmB,QAA5C,CAAP;AACD,CAjBM"}
@@ -76,11 +76,11 @@ const useUserList = (sdk, options) => {
76
76
  if ((_query$current = query.current) !== null && _query$current !== void 0 && _query$current.hasNext) {
77
77
  var _query$current2;
78
78
 
79
- const users = await ((_query$current2 = query.current) === null || _query$current2 === void 0 ? void 0 : _query$current2.next().catch(err => {
80
- _uikitUtils.Logger.error(error);
79
+ const users = await ((_query$current2 = query.current) === null || _query$current2 === void 0 ? void 0 : _query$current2.next().catch(e => {
80
+ _uikitUtils.Logger.error(e);
81
81
 
82
- if (err.code === _uikitUtils.SBErrorCode.NON_AUTHORIZED) _uikitUtils.Logger.warn(_uikitUtils.SBErrorMessage.ACL);
83
- throw error;
82
+ if (e.code === _uikitUtils.SBErrorCode.NON_AUTHORIZED) _uikitUtils.Logger.warn(_uikitUtils.SBErrorMessage.ACL);
83
+ throw e;
84
84
  }));
85
85
  updateUsers(users, true);
86
86
  }
@@ -113,11 +113,11 @@ const useUserList = (sdk, options) => {
113
113
  var _query$current3;
114
114
 
115
115
  if (query.current && (_query$current3 = query.current) !== null && _query$current3 !== void 0 && _query$current3.hasNext) {
116
- const nextUsers = await query.current.next().catch(err => {
117
- _uikitUtils.Logger.error(error);
116
+ const nextUsers = await query.current.next().catch(e => {
117
+ _uikitUtils.Logger.error(e);
118
118
 
119
- if (err.code === _uikitUtils.SBErrorCode.NON_AUTHORIZED) _uikitUtils.Logger.warn(_uikitUtils.SBErrorMessage.ACL);
120
- throw error;
119
+ if (e.code === _uikitUtils.SBErrorCode.NON_AUTHORIZED) _uikitUtils.Logger.warn(_uikitUtils.SBErrorMessage.ACL);
120
+ throw e;
121
121
  });
122
122
  updateUsers(nextUsers, false);
123
123
  }
@@ -1 +1 @@
1
- {"version":3,"names":["createUserQuery","sdk","queryCreator","createApplicationUserListQuery","useUserList","options","query","useRef","error","setError","useState","loading","setLoading","refreshing","setRefreshing","users","setUsers","sortedUsers","useMemo","sortComparator","sort","upsertUser","useFreshCallback","user","draft","userIdx","findIndex","it","userId","push","deleteUser","splice","updateUsers","clearPrev","prev","concat","init","current","hasNext","next","catch","err","Logger","code","SBErrorCode","NON_AUTHORIZED","warn","SBErrorMessage","ACL","useAsyncEffect","e","refresh","nextUsers"],"sources":["useUserList.ts"],"sourcesContent":["import { useMemo, useRef, useState } from 'react';\n\nimport type { Optional, SendbirdChatSDK, SendbirdUser } from '@sendbird/uikit-utils';\nimport { Logger, SBErrorCode, SBErrorMessage, useAsyncEffect, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport type { CustomQueryInterface, UseUserListOptions, UseUserListReturn, UserStruct } from '../types';\n\nconst createUserQuery = <User extends UserStruct>(\n sdk: SendbirdChatSDK,\n queryCreator?: UseUserListOptions<User>['queryCreator'],\n) => {\n if (queryCreator) return queryCreator();\n // In order to use the API, the option must be turned on in the dashboard.\n return sdk.createApplicationUserListQuery() as unknown as CustomQueryInterface<User>;\n};\n\n/**\n * Get user list from query.\n * default query uses 'instance.createApplicationUserListQuery'\n * The response type of hook is depends on return type of 'query.next()'\n *\n * You can call hook with your custom query using {@link CustomQuery}\n * Or you can create your 'CustomQueryClass' implemented {@link CustomQueryInterface}'\n *\n * ```example\n * const { users } = useUserList(sdk, {\n * queryCreator: () => {\n * const friendQuery = sdk.createFriendListQuery();\n * return new CustomQuery({\n * next: () => friendQuery.next(),\n * isLoading: () => friendQuery.isLoading,\n * hasNext: () => friendQuery.hasMore,\n * });\n * }\n * })\n * ```\n * */\nexport const useUserList = <\n Options extends UseUserListOptions<QueriedUser>,\n QueriedUser extends UserStruct = Options['queryCreator'] extends Optional<\n () => CustomQueryInterface<infer User extends UserStruct>\n >\n ? User\n : SendbirdUser,\n>(\n sdk: SendbirdChatSDK,\n options?: Options,\n): UseUserListReturn<QueriedUser> => {\n const query = useRef<CustomQueryInterface<QueriedUser>>();\n\n const [error, setError] = useState<unknown>(null);\n const [loading, setLoading] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n\n const [users, setUsers] = useState<QueriedUser[]>([]);\n const sortedUsers = useMemo((): QueriedUser[] => {\n if (options?.sortComparator) return users.sort(options.sortComparator);\n return users;\n }, [users, options?.sortComparator]);\n\n const upsertUser = useFreshCallback((user: QueriedUser) => {\n setUsers(([...draft]) => {\n const userIdx = draft.findIndex((it) => it.userId === user.userId);\n if (userIdx > -1) draft[userIdx] = user;\n else draft.push(user);\n return draft;\n });\n });\n\n const deleteUser = useFreshCallback((userId: QueriedUser['userId']) => {\n setUsers(([...draft]) => {\n const userIdx = draft.findIndex((it) => it.userId === userId);\n if (userIdx > -1) draft.splice(userIdx, 1);\n return draft;\n });\n });\n\n const updateUsers = (users: QueriedUser[], clearPrev: boolean) => {\n if (clearPrev) setUsers(users);\n else setUsers((prev) => prev.concat(users));\n };\n\n const init = useFreshCallback(async () => {\n query.current = createUserQuery<QueriedUser>(sdk, options?.queryCreator);\n if (query.current?.hasNext) {\n const users = await query.current?.next().catch((err) => {\n Logger.error(error);\n if (err.code === SBErrorCode.NON_AUTHORIZED) Logger.warn(SBErrorMessage.ACL);\n throw error;\n });\n updateUsers(users, true);\n }\n });\n\n useAsyncEffect(async () => {\n setLoading(true);\n setError(null);\n try {\n await init();\n } catch (e) {\n setError(e);\n } finally {\n setLoading(false);\n }\n }, []);\n\n const refresh = useFreshCallback(async () => {\n setRefreshing(true);\n setError(null);\n try {\n await init();\n } catch (e) {\n setError(e);\n } finally {\n setRefreshing(false);\n }\n });\n\n const next = useFreshCallback(async () => {\n if (query.current && query.current?.hasNext) {\n const nextUsers = await query.current.next().catch((err) => {\n Logger.error(error);\n if (err.code === SBErrorCode.NON_AUTHORIZED) Logger.warn(SBErrorMessage.ACL);\n throw error;\n });\n updateUsers(nextUsers, false);\n }\n });\n\n return {\n loading,\n error,\n users: sortedUsers,\n upsertUser,\n deleteUser,\n next,\n refreshing,\n refresh,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createUserQuery","sdk","queryCreator","createApplicationUserListQuery","useUserList","options","query","useRef","error","setError","useState","loading","setLoading","refreshing","setRefreshing","users","setUsers","sortedUsers","useMemo","sortComparator","sort","upsertUser","useFreshCallback","user","draft","userIdx","findIndex","it","userId","push","deleteUser","splice","updateUsers","clearPrev","prev","concat","init","current","hasNext","next","catch","e","Logger","code","SBErrorCode","NON_AUTHORIZED","warn","SBErrorMessage","ACL","useAsyncEffect","refresh","nextUsers"],"sources":["useUserList.ts"],"sourcesContent":["import { useMemo, useRef, useState } from 'react';\n\nimport type { Optional, SendbirdChatSDK, SendbirdUser, UserStruct } from '@sendbird/uikit-utils';\nimport { Logger, SBErrorCode, SBErrorMessage, useAsyncEffect, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport type { CustomQueryInterface, UseUserListOptions, UseUserListReturn } from '../types';\n\nconst createUserQuery = <User extends UserStruct>(\n sdk: SendbirdChatSDK,\n queryCreator?: UseUserListOptions<User>['queryCreator'],\n) => {\n if (queryCreator) return queryCreator();\n // In order to use the API, the option must be turned on in the dashboard.\n return sdk.createApplicationUserListQuery() as unknown as CustomQueryInterface<User>;\n};\n\n/**\n * Get user list from query.\n * default query uses 'instance.createApplicationUserListQuery'\n * The response type of hook is depends on return type of 'query.next()'\n *\n * You can call hook with your custom query using {@link CustomQuery}\n * Or you can create your 'CustomQueryClass' implemented {@link CustomQueryInterface}'\n *\n * ```example\n * const { users } = useUserList(sdk, {\n * queryCreator: () => {\n * const friendQuery = sdk.createFriendListQuery();\n * return new CustomQuery({\n * next: () => friendQuery.next(),\n * isLoading: () => friendQuery.isLoading,\n * hasNext: () => friendQuery.hasMore,\n * });\n * }\n * })\n * ```\n * */\nexport const useUserList = <\n Options extends UseUserListOptions<QueriedUser>,\n QueriedUser extends UserStruct = Options['queryCreator'] extends Optional<\n () => CustomQueryInterface<infer User extends UserStruct>\n >\n ? User\n : SendbirdUser,\n>(\n sdk: SendbirdChatSDK,\n options?: Options,\n): UseUserListReturn<QueriedUser> => {\n const query = useRef<CustomQueryInterface<QueriedUser>>();\n\n const [error, setError] = useState<unknown>(null);\n const [loading, setLoading] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n\n const [users, setUsers] = useState<QueriedUser[]>([]);\n const sortedUsers = useMemo((): QueriedUser[] => {\n if (options?.sortComparator) return users.sort(options.sortComparator);\n return users;\n }, [users, options?.sortComparator]);\n\n const upsertUser = useFreshCallback((user: QueriedUser) => {\n setUsers(([...draft]) => {\n const userIdx = draft.findIndex((it) => it.userId === user.userId);\n if (userIdx > -1) draft[userIdx] = user;\n else draft.push(user);\n return draft;\n });\n });\n\n const deleteUser = useFreshCallback((userId: QueriedUser['userId']) => {\n setUsers(([...draft]) => {\n const userIdx = draft.findIndex((it) => it.userId === userId);\n if (userIdx > -1) draft.splice(userIdx, 1);\n return draft;\n });\n });\n\n const updateUsers = (users: QueriedUser[], clearPrev: boolean) => {\n if (clearPrev) setUsers(users);\n else setUsers((prev) => prev.concat(users));\n };\n\n const init = useFreshCallback(async () => {\n query.current = createUserQuery<QueriedUser>(sdk, options?.queryCreator);\n if (query.current?.hasNext) {\n const users = await query.current?.next().catch((e) => {\n Logger.error(e);\n if (e.code === SBErrorCode.NON_AUTHORIZED) Logger.warn(SBErrorMessage.ACL);\n throw e;\n });\n updateUsers(users, true);\n }\n });\n\n useAsyncEffect(async () => {\n setLoading(true);\n setError(null);\n try {\n await init();\n } catch (e) {\n setError(e);\n } finally {\n setLoading(false);\n }\n }, []);\n\n const refresh = useFreshCallback(async () => {\n setRefreshing(true);\n setError(null);\n try {\n await init();\n } catch (e) {\n setError(e);\n } finally {\n setRefreshing(false);\n }\n });\n\n const next = useFreshCallback(async () => {\n if (query.current && query.current?.hasNext) {\n const nextUsers = await query.current.next().catch((e) => {\n Logger.error(e);\n if (e.code === SBErrorCode.NON_AUTHORIZED) Logger.warn(SBErrorMessage.ACL);\n throw e;\n });\n updateUsers(nextUsers, false);\n }\n });\n\n return {\n loading,\n error,\n users: sortedUsers,\n upsertUser,\n deleteUser,\n next,\n refreshing,\n refresh,\n };\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { useGroupChannelList } from './channel/useGroupChannelList';\nexport { useGroupChannelMessages } from './channel/useGroupChannelMessages';\nexport { useActiveGroupChannel } from './channel/useActiveGroupChannel';\nexport { useGroupChannel } from './channel/useGroupChannel';\n\nexport { useAppFeatures } from './common/useAppFeatures';\nexport { useMessageOutgoingStatus } from './common/useMessageOutgoingStatus';\nexport { usePushTrigger } from './common/usePushTrigger';\nexport { useTotalUnreadChannelCount } from './common/useTotalUnreadChannelCount';\nexport { useTotalUnreadMessageCount } from './common/useTotalUnreadMessageCount';\nexport { useUserList } from './common/useUserList';\n\nexport { useChannelHandler } from './handler/useChannelHandler';\nexport { useConnectionHandler } from './handler/useConnectionHandler';\nexport { useUserEventHandler } from './handler/useUserEventHandler';\n\nexport { CustomQuery } from './model/CustomQuery';\n\nexport type {\n UseGroupChannelList,\n UseGroupChannelListOptions,\n UseGroupChannelMessages,\n UseGroupChannelMessagesOptions,\n UserStruct,\n UseUserListOptions,\n UseUserListReturn,\n CustomQueryInterface,\n CustomBidirectionalQueryInterface,\n} from './types';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { useGroupChannelList } from './channel/useGroupChannelList';\nexport { useGroupChannelMessages } from './channel/useGroupChannelMessages';\nexport { useActiveGroupChannel } from './channel/useActiveGroupChannel';\nexport { useGroupChannel } from './channel/useGroupChannel';\n\nexport { useAppFeatures } from './common/useAppFeatures';\nexport { useMessageOutgoingStatus } from './common/useMessageOutgoingStatus';\nexport { usePushTrigger } from './common/usePushTrigger';\nexport { useTotalUnreadChannelCount } from './common/useTotalUnreadChannelCount';\nexport { useTotalUnreadMessageCount } from './common/useTotalUnreadMessageCount';\nexport { useUserList } from './common/useUserList';\n\nexport { useChannelHandler } from './handler/useChannelHandler';\nexport { useConnectionHandler } from './handler/useConnectionHandler';\nexport { useUserEventHandler } from './handler/useUserEventHandler';\n\nexport { CustomQuery } from './model/CustomQuery';\n\nexport type {\n UseGroupChannelList,\n UseGroupChannelListOptions,\n UseGroupChannelMessages,\n UseGroupChannelMessagesOptions,\n UseUserListOptions,\n UseUserListReturn,\n CustomQueryInterface,\n CustomBidirectionalQueryInterface,\n} from './types';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type {\n SendbirdChatSDK,\n SendbirdError,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n SendbirdGroupChannelListQuery,\n SendbirdMessage,\n SendbirdMessageCollection,\n SendbirdPreviousMessageListQuery,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\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 -> append to state(nextMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> next() -> nextMessages 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 * Get messages, this state is for temporary data before 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 * */\n nextMessages: SendbirdMessage[];\n\n /**\n * Get new messages from nextMessages\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 newMessagesFromMembers: SendbirdMessage[];\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<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: SendbirdFileMessageCreateParams) => 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: SendbirdUserMessageCreateParams) => 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 sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n collectionCreator?: () => SendbirdMessageCollection;\n enableCollectionWithoutLocalCache?: boolean;\n onChannelDeleted?: () => void;\n};\n\nexport interface UserStruct {\n userId: string;\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 {\n SendbirdChatSDK,\n SendbirdError,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n SendbirdGroupChannelListQuery,\n SendbirdMessage,\n SendbirdMessageCollection,\n SendbirdPreviousMessageListQuery,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\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 -> append to state(nextMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> next() -> nextMessages 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 * Get messages, this state is for temporary data before 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 * */\n nextMessages: SendbirdMessage[];\n\n /**\n * Get new messages from nextMessages\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 newMessagesFromMembers: SendbirdMessage[];\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<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: SendbirdFileMessageCreateParams) => 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: SendbirdUserMessageCreateParams) => 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 sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n collectionCreator?: () => SendbirdMessageCollection;\n enableCollectionWithoutLocalCache?: boolean;\n onChannelDeleted?: () => 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":""}
@@ -32,10 +32,6 @@ const defaultReducer = (_ref, action) => {
32
32
  }).forEach(m => delete draft[key][m.reqId]);
33
33
  }
34
34
 
35
- if (action.type === 'update_messages') {
36
- draft['nextMessageMap'] = {};
37
- }
38
-
39
35
  return draft;
40
36
  }
41
37