@sendbird/uikit-chat-hooks 3.3.0 → 3.4.1

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 (27) hide show
  1. package/lib/commonjs/channel/useChannelMessagesReducer.js.map +1 -1
  2. package/lib/commonjs/channel/useGroupChannelList/index.js +3 -0
  3. package/lib/commonjs/channel/useGroupChannelList/index.js.map +1 -1
  4. package/lib/commonjs/channel/useGroupChannelMessages/index.js +3 -0
  5. package/lib/commonjs/channel/useGroupChannelMessages/index.js.map +1 -1
  6. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  7. package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
  8. package/lib/commonjs/types.js.map +1 -1
  9. package/lib/module/channel/useChannelMessagesReducer.js.map +1 -1
  10. package/lib/module/channel/useGroupChannelList/index.js +4 -0
  11. package/lib/module/channel/useGroupChannelList/index.js.map +1 -1
  12. package/lib/module/channel/useGroupChannelMessages/index.js +4 -0
  13. package/lib/module/channel/useGroupChannelMessages/index.js.map +1 -1
  14. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  15. package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
  16. package/lib/module/types.js.map +1 -1
  17. package/lib/typescript/src/channel/useChannelMessagesReducer.d.ts +1 -1
  18. package/lib/typescript/src/channel/useGroupChannelList/index.d.ts +3 -0
  19. package/lib/typescript/src/channel/useGroupChannelMessages/index.d.ts +3 -0
  20. package/lib/typescript/src/types.d.ts +4 -0
  21. package/package.json +5 -5
  22. package/src/channel/useChannelMessagesReducer.ts +2 -2
  23. package/src/channel/useGroupChannelList/index.ts +3 -0
  24. package/src/channel/useGroupChannelMessages/index.ts +3 -0
  25. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +2 -2
  26. package/src/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.ts +1 -1
  27. package/src/types.ts +4 -0
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_message","_uikitUtils","defaultReducer","_ref","action","draft","type","value","status","userId","currentUserId","clearBeforeAction","messagesToObject","messages","nextMessages","filter","next","isMyMessage","prev","reqId","messageId","shouldUpdate","shouldUpdateMessage","obj","newMessages","it","isNewMessage","arrayToMapWithGetter","getMessageUniqId","messageKeys","map","forEach","key","messageIds","msgId","message","isSendableMessage","reqIds","reduce","accum","curr","sendingStatus","SendingStatus","SUCCEEDED","useChannelMessagesReducer","sortComparator","loading","refreshing","messageMap","newMessageMap","dispatch","useReducer","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","useIIFE","Array","from","Set","Object","values","sort","exports"],"sources":["useChannelMessagesReducer.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport { SendableMessage } from '@sendbird/chat/lib/__definition';\nimport { SendingStatus } from '@sendbird/chat/message';\nimport type { SendbirdBaseMessage } from '@sendbird/uikit-utils';\nimport {\n SendbirdMessage,\n arrayToMapWithGetter,\n getMessageUniqId,\n isMyMessage,\n isNewMessage,\n isSendableMessage,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\ntype Options = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n};\n\ntype Action =\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_messages' | 'update_new_messages';\n value: { messages: SendbirdBaseMessage[]; clearBeforeAction: boolean; currentUserId?: string };\n }\n | {\n type: 'delete_messages' | 'delete_new_messages';\n value: { messageIds: number[]; reqIds: string[] };\n };\n\ntype State = {\n loading: boolean;\n refreshing: boolean;\n messageMap: Record<string, SendbirdBaseMessage>;\n newMessageMap: Record<string, SendbirdBaseMessage>;\n};\n\nconst defaultReducer = ({ ...draft }: State, action: Action) => {\n switch (action.type) {\n case 'update_refreshing': {\n draft['refreshing'] = action.value.status;\n return draft;\n }\n case 'update_loading': {\n draft['loading'] = action.value.status;\n return draft;\n }\n case 'update_messages': {\n const userId = action.value.currentUserId;\n\n if (action.value.clearBeforeAction) {\n draft['messageMap'] = messagesToObject(action.value.messages);\n } else {\n // Filtering meaningless message updates\n const nextMessages = action.value.messages.filter((next) => {\n if (isMyMessage(next, userId)) {\n const prev = draft['messageMap'][next.reqId] ?? draft['messageMap'][next.messageId];\n if (isMyMessage(prev, userId)) {\n const shouldUpdate = shouldUpdateMessage(prev, next);\n if (shouldUpdate) {\n // Remove existing messages before update to prevent duplicate display\n delete draft['messageMap'][prev.reqId];\n delete draft['messageMap'][prev.messageId];\n }\n return shouldUpdate;\n }\n }\n return true;\n });\n\n const obj = messagesToObject(nextMessages);\n draft['messageMap'] = { ...draft['messageMap'], ...obj };\n }\n\n return draft;\n }\n case 'update_new_messages': {\n const userId = action.value.currentUserId;\n const newMessages = action.value.messages.filter((it) => isNewMessage(it, userId));\n\n if (action.value.clearBeforeAction) {\n draft['newMessageMap'] = arrayToMapWithGetter(newMessages, getMessageUniqId);\n } else {\n // Remove existing messages before update to prevent duplicate display\n const messageKeys = newMessages.map((it) => it.messageId);\n messageKeys.forEach((key) => delete draft['newMessageMap'][key]);\n\n draft['newMessageMap'] = {\n ...draft['newMessageMap'],\n ...arrayToMapWithGetter(newMessages, getMessageUniqId),\n };\n }\n\n return draft;\n }\n case 'delete_messages':\n case 'delete_new_messages': {\n const key = action.type === 'delete_messages' ? 'messageMap' : 'newMessageMap';\n draft[key] = { ...draft[key] };\n action.value.messageIds.forEach((msgId) => {\n const message = draft[key][msgId];\n if (message) {\n if (isSendableMessage(message)) delete draft[key][message.reqId];\n delete draft[key][message.messageId];\n }\n });\n action.value.reqIds.forEach((reqId) => {\n const message = draft[key][reqId];\n if (message) {\n if (isSendableMessage(message)) delete draft[key][message.reqId];\n delete draft[key][message.messageId];\n }\n });\n\n return draft;\n }\n }\n};\n\nconst messagesToObject = (messages: SendbirdBaseMessage[]) => {\n return messages.reduce((accum, curr) => {\n if (isSendableMessage(curr)) {\n accum[curr.reqId] = curr;\n if (curr.sendingStatus === SendingStatus.SUCCEEDED) {\n accum[curr.messageId] = curr;\n }\n } else {\n accum[curr.messageId] = curr;\n }\n return accum;\n }, {} as Record<string, SendbirdBaseMessage>);\n};\n\nconst shouldUpdateMessage = (prev: SendableMessage, next: SendableMessage) => {\n // message data update (e.g. reactions)\n if (prev.sendingStatus === SendingStatus.SUCCEEDED) return next.sendingStatus === SendingStatus.SUCCEEDED;\n\n // message sending status update\n return prev.sendingStatus !== next.sendingStatus;\n};\n\nexport const useChannelMessagesReducer = (sortComparator?: Options['sortComparator']) => {\n const [{ loading, refreshing, messageMap, newMessageMap }, dispatch] = useReducer(defaultReducer, {\n loading: true,\n refreshing: false,\n messageMap: {},\n newMessageMap: {},\n });\n\n const updateMessages = (messages: SendbirdBaseMessage[], clearBeforeAction: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_messages', value: { messages, clearBeforeAction, currentUserId } });\n };\n const deleteMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_messages', value: { messageIds, reqIds } });\n };\n const updateNewMessages = (messages: SendbirdBaseMessage[], clearBeforeAction: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_new_messages', value: { messages, clearBeforeAction, currentUserId } });\n };\n const deleteNewMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_new_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 Array.from(new Set(Object.values(messageMap))).sort(sortComparator);\n return Array.from(new Set(Object.values(messageMap)));\n });\n const newMessages = Object.values(newMessageMap);\n\n return {\n updateLoading,\n updateRefreshing,\n updateMessages,\n deleteMessages,\n\n loading,\n refreshing,\n messages,\n\n newMessages,\n updateNewMessages,\n deleteNewMessages,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","require","_message","_uikitUtils","defaultReducer","_ref","action","draft","type","value","status","userId","currentUserId","clearBeforeAction","messagesToObject","messages","nextMessages","filter","next","isMyMessage","prev","reqId","messageId","shouldUpdate","shouldUpdateMessage","obj","newMessages","it","isNewMessage","arrayToMapWithGetter","getMessageUniqId","messageKeys","map","forEach","key","messageIds","msgId","message","isSendableMessage","reqIds","reduce","accum","curr","sendingStatus","SendingStatus","SUCCEEDED","useChannelMessagesReducer","sortComparator","loading","refreshing","messageMap","newMessageMap","dispatch","useReducer","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","useIIFE","Array","from","Set","Object","values","sort","exports"],"sources":["useChannelMessagesReducer.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport { SendableMessage } from '@sendbird/chat/lib/__definition';\nimport { SendingStatus } from '@sendbird/chat/message';\nimport type { SendbirdBaseMessage } from '@sendbird/uikit-utils';\nimport {\n SendbirdMessage,\n arrayToMapWithGetter,\n getMessageUniqId,\n isMyMessage,\n isNewMessage,\n isSendableMessage,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\ntype Options = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n};\n\ntype Action =\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_messages' | 'update_new_messages';\n value: { messages: SendbirdBaseMessage[]; clearBeforeAction: boolean; currentUserId?: string };\n }\n | {\n type: 'delete_messages' | 'delete_new_messages';\n value: { messageIds: (string | number)[]; reqIds: string[] };\n };\n\ntype State = {\n loading: boolean;\n refreshing: boolean;\n messageMap: Record<string, SendbirdBaseMessage>;\n newMessageMap: Record<string, SendbirdBaseMessage>;\n};\n\nconst defaultReducer = ({ ...draft }: State, action: Action) => {\n switch (action.type) {\n case 'update_refreshing': {\n draft['refreshing'] = action.value.status;\n return draft;\n }\n case 'update_loading': {\n draft['loading'] = action.value.status;\n return draft;\n }\n case 'update_messages': {\n const userId = action.value.currentUserId;\n\n if (action.value.clearBeforeAction) {\n draft['messageMap'] = messagesToObject(action.value.messages);\n } else {\n // Filtering meaningless message updates\n const nextMessages = action.value.messages.filter((next) => {\n if (isMyMessage(next, userId)) {\n const prev = draft['messageMap'][next.reqId] ?? draft['messageMap'][next.messageId];\n if (isMyMessage(prev, userId)) {\n const shouldUpdate = shouldUpdateMessage(prev, next);\n if (shouldUpdate) {\n // Remove existing messages before update to prevent duplicate display\n delete draft['messageMap'][prev.reqId];\n delete draft['messageMap'][prev.messageId];\n }\n return shouldUpdate;\n }\n }\n return true;\n });\n\n const obj = messagesToObject(nextMessages);\n draft['messageMap'] = { ...draft['messageMap'], ...obj };\n }\n\n return draft;\n }\n case 'update_new_messages': {\n const userId = action.value.currentUserId;\n const newMessages = action.value.messages.filter((it) => isNewMessage(it, userId));\n\n if (action.value.clearBeforeAction) {\n draft['newMessageMap'] = arrayToMapWithGetter(newMessages, getMessageUniqId);\n } else {\n // Remove existing messages before update to prevent duplicate display\n const messageKeys = newMessages.map((it) => it.messageId);\n messageKeys.forEach((key) => delete draft['newMessageMap'][key]);\n\n draft['newMessageMap'] = {\n ...draft['newMessageMap'],\n ...arrayToMapWithGetter(newMessages, getMessageUniqId),\n };\n }\n\n return draft;\n }\n case 'delete_messages':\n case 'delete_new_messages': {\n const key = action.type === 'delete_messages' ? 'messageMap' : 'newMessageMap';\n draft[key] = { ...draft[key] };\n action.value.messageIds.forEach((msgId) => {\n const message = draft[key][msgId];\n if (message) {\n if (isSendableMessage(message)) delete draft[key][message.reqId];\n delete draft[key][message.messageId];\n }\n });\n action.value.reqIds.forEach((reqId) => {\n const message = draft[key][reqId];\n if (message) {\n if (isSendableMessage(message)) delete draft[key][message.reqId];\n delete draft[key][message.messageId];\n }\n });\n\n return draft;\n }\n }\n};\n\nconst messagesToObject = (messages: SendbirdBaseMessage[]) => {\n return messages.reduce((accum, curr) => {\n if (isSendableMessage(curr)) {\n accum[curr.reqId] = curr;\n if (curr.sendingStatus === SendingStatus.SUCCEEDED) {\n accum[curr.messageId] = curr;\n }\n } else {\n accum[curr.messageId] = curr;\n }\n return accum;\n }, {} as Record<string, SendbirdBaseMessage>);\n};\n\nconst shouldUpdateMessage = (prev: SendableMessage, next: SendableMessage) => {\n // message data update (e.g. reactions)\n if (prev.sendingStatus === SendingStatus.SUCCEEDED) return next.sendingStatus === SendingStatus.SUCCEEDED;\n\n // message sending status update\n return prev.sendingStatus !== next.sendingStatus;\n};\n\nexport const useChannelMessagesReducer = (sortComparator?: Options['sortComparator']) => {\n const [{ loading, refreshing, messageMap, newMessageMap }, dispatch] = useReducer(defaultReducer, {\n loading: true,\n refreshing: false,\n messageMap: {},\n newMessageMap: {},\n });\n\n const updateMessages = (messages: SendbirdBaseMessage[], clearBeforeAction: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_messages', value: { messages, clearBeforeAction, currentUserId } });\n };\n const deleteMessages = (messageIds: (string | number)[], reqIds: string[]) => {\n dispatch({ type: 'delete_messages', value: { messageIds, reqIds } });\n };\n const updateNewMessages = (messages: SendbirdBaseMessage[], clearBeforeAction: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_new_messages', value: { messages, clearBeforeAction, currentUserId } });\n };\n const deleteNewMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_new_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 Array.from(new Set(Object.values(messageMap))).sort(sortComparator);\n return Array.from(new Set(Object.values(messageMap)));\n });\n const newMessages = Object.values(newMessageMap);\n\n return {\n updateLoading,\n updateRefreshing,\n updateMessages,\n deleteMessages,\n\n loading,\n refreshing,\n messages,\n\n newMessages,\n updateNewMessages,\n deleteNewMessages,\n };\n};\n"],"mappings":"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"}
@@ -7,6 +7,9 @@ exports.useGroupChannelList = void 0;
7
7
  var _uikitUtils = require("@sendbird/uikit-utils");
8
8
  var _useGroupChannelListWithCollection = require("./useGroupChannelListWithCollection");
9
9
  var _useGroupChannelListWithQuery = require("./useGroupChannelListWithQuery");
10
+ /**
11
+ * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.
12
+ * */
10
13
  const useGroupChannelList = (sdk, userId, options) => {
11
14
  if (sdk.isCacheEnabled || options !== null && options !== void 0 && options.enableCollectionWithoutLocalCache) {
12
15
  if (options !== null && options !== void 0 && options.queryCreator) _uikitUtils.Logger.warn('`queryCreator` is ignored, please use `collectionCreator` instead.');
@@ -1 +1 @@
1
- {"version":3,"names":["_uikitUtils","require","_useGroupChannelListWithCollection","_useGroupChannelListWithQuery","useGroupChannelList","sdk","userId","options","isCacheEnabled","enableCollectionWithoutLocalCache","queryCreator","Logger","warn","useGroupChannelListWithCollection","useGroupChannelListWithQuery","exports"],"sources":["index.ts"],"sourcesContent":["import { Logger } from '@sendbird/uikit-utils';\n\nimport type { UseGroupChannelList } from '../../types';\nimport { useGroupChannelListWithCollection } from './useGroupChannelListWithCollection';\nimport { useGroupChannelListWithQuery } from './useGroupChannelListWithQuery';\n\nexport const useGroupChannelList: UseGroupChannelList = (sdk, userId, options) => {\n if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {\n if (options?.queryCreator) Logger.warn('`queryCreator` is ignored, please use `collectionCreator` instead.');\n return useGroupChannelListWithCollection(sdk, userId, options);\n } else {\n return useGroupChannelListWithQuery(sdk, userId, options);\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAGA,IAAAC,kCAAA,GAAAD,OAAA;AACA,IAAAE,6BAAA,GAAAF,OAAA;AAEO,MAAMG,mBAAwC,GAAGA,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,KAAK;EAChF,IAAIF,GAAG,CAACG,cAAc,IAAID,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEE,iCAAiC,EAAE;IACpE,IAAIF,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEG,YAAY,EAAEC,kBAAM,CAACC,IAAI,CAAC,oEAAoE,CAAC;IAC5G,OAAO,IAAAC,oEAAiC,EAACR,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAChE,CAAC,MAAM;IACL,OAAO,IAAAO,0DAA4B,EAACT,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAC3D;AACF,CAAC;AAACQ,OAAA,CAAAX,mBAAA,GAAAA,mBAAA"}
1
+ {"version":3,"names":["_uikitUtils","require","_useGroupChannelListWithCollection","_useGroupChannelListWithQuery","useGroupChannelList","sdk","userId","options","isCacheEnabled","enableCollectionWithoutLocalCache","queryCreator","Logger","warn","useGroupChannelListWithCollection","useGroupChannelListWithQuery","exports"],"sources":["index.ts"],"sourcesContent":["import { Logger } from '@sendbird/uikit-utils';\n\nimport type { UseGroupChannelList } from '../../types';\nimport { useGroupChannelListWithCollection } from './useGroupChannelListWithCollection';\nimport { useGroupChannelListWithQuery } from './useGroupChannelListWithQuery';\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.\n * */\nexport const useGroupChannelList: UseGroupChannelList = (sdk, userId, options) => {\n if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {\n if (options?.queryCreator) Logger.warn('`queryCreator` is ignored, please use `collectionCreator` instead.');\n return useGroupChannelListWithCollection(sdk, userId, options);\n } else {\n return useGroupChannelListWithQuery(sdk, userId, options);\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAGA,IAAAC,kCAAA,GAAAD,OAAA;AACA,IAAAE,6BAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACO,MAAMG,mBAAwC,GAAGA,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,KAAK;EAChF,IAAIF,GAAG,CAACG,cAAc,IAAID,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEE,iCAAiC,EAAE;IACpE,IAAIF,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEG,YAAY,EAAEC,kBAAM,CAACC,IAAI,CAAC,oEAAoE,CAAC;IAC5G,OAAO,IAAAC,oEAAiC,EAACR,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAChE,CAAC,MAAM;IACL,OAAO,IAAAO,0DAA4B,EAACT,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAC3D;AACF,CAAC;AAACQ,OAAA,CAAAX,mBAAA,GAAAA,mBAAA"}
@@ -7,6 +7,9 @@ exports.useGroupChannelMessages = void 0;
7
7
  var _uikitUtils = require("@sendbird/uikit-utils");
8
8
  var _useGroupChannelMessagesWithCollection = require("./useGroupChannelMessagesWithCollection");
9
9
  var _useGroupChannelMessagesWithQuery = require("./useGroupChannelMessagesWithQuery");
10
+ /**
11
+ * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.
12
+ * */
10
13
  const useGroupChannelMessages = (sdk, channel, userId, options) => {
11
14
  if (sdk.isCacheEnabled || options !== null && options !== void 0 && options.enableCollectionWithoutLocalCache) {
12
15
  if (options !== null && options !== void 0 && options.queryCreator) printIgnoredWarning();
@@ -1 +1 @@
1
- {"version":3,"names":["_uikitUtils","require","_useGroupChannelMessagesWithCollection","_useGroupChannelMessagesWithQuery","useGroupChannelMessages","sdk","channel","userId","options","isCacheEnabled","enableCollectionWithoutLocalCache","queryCreator","printIgnoredWarning","useGroupChannelMessagesWithCollection","useGroupChannelMessagesWithQuery","exports","Logger","warn"],"sources":["index.ts"],"sourcesContent":["import { Logger } from '@sendbird/uikit-utils';\n\nimport type { UseGroupChannelMessages } from '../../types';\nimport { useGroupChannelMessagesWithCollection } from './useGroupChannelMessagesWithCollection';\nimport { useGroupChannelMessagesWithQuery } from './useGroupChannelMessagesWithQuery';\n\nexport const useGroupChannelMessages: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {\n if (options?.queryCreator) printIgnoredWarning();\n return useGroupChannelMessagesWithCollection(sdk, channel, userId, options);\n } else {\n return useGroupChannelMessagesWithQuery(sdk, channel, userId, options);\n }\n};\n\nconst printIgnoredWarning = () => {\n Logger.warn(\n 'If sdk.isCacheEnabled or enableCollectionWithoutLocalCache is turned on, queryCreator is ignored' +\n 'Please use collectionCreator instead.',\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAGA,IAAAC,sCAAA,GAAAD,OAAA;AACA,IAAAE,iCAAA,GAAAF,OAAA;AAEO,MAAMG,uBAAgD,GAAGA,CAACC,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,KAAK;EACjG,IAAIH,GAAG,CAACI,cAAc,IAAID,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEE,iCAAiC,EAAE;IACpE,IAAIF,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEG,YAAY,EAAEC,mBAAmB,EAAE;IAChD,OAAO,IAAAC,4EAAqC,EAACR,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAC7E,CAAC,MAAM;IACL,OAAO,IAAAM,kEAAgC,EAACT,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,CAAC;EACxE;AACF,CAAC;AAACO,OAAA,CAAAX,uBAAA,GAAAA,uBAAA;AAEF,MAAMQ,mBAAmB,GAAGA,CAAA,KAAM;EAChCI,kBAAM,CAACC,IAAI,CACT,kGAAkG,GAChG,uCAAuC,CAC1C;AACH,CAAC"}
1
+ {"version":3,"names":["_uikitUtils","require","_useGroupChannelMessagesWithCollection","_useGroupChannelMessagesWithQuery","useGroupChannelMessages","sdk","channel","userId","options","isCacheEnabled","enableCollectionWithoutLocalCache","queryCreator","printIgnoredWarning","useGroupChannelMessagesWithCollection","useGroupChannelMessagesWithQuery","exports","Logger","warn"],"sources":["index.ts"],"sourcesContent":["import { Logger } from '@sendbird/uikit-utils';\n\nimport type { UseGroupChannelMessages } from '../../types';\nimport { useGroupChannelMessagesWithCollection } from './useGroupChannelMessagesWithCollection';\nimport { useGroupChannelMessagesWithQuery } from './useGroupChannelMessagesWithQuery';\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.\n * */\nexport const useGroupChannelMessages: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {\n if (options?.queryCreator) printIgnoredWarning();\n return useGroupChannelMessagesWithCollection(sdk, channel, userId, options);\n } else {\n return useGroupChannelMessagesWithQuery(sdk, channel, userId, options);\n }\n};\n\nconst printIgnoredWarning = () => {\n Logger.warn(\n 'If sdk.isCacheEnabled or enableCollectionWithoutLocalCache is turned on, queryCreator is ignored' +\n 'Please use collectionCreator instead.',\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAGA,IAAAC,sCAAA,GAAAD,OAAA;AACA,IAAAE,iCAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACO,MAAMG,uBAAgD,GAAGA,CAACC,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,KAAK;EACjG,IAAIH,GAAG,CAACI,cAAc,IAAID,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEE,iCAAiC,EAAE;IACpE,IAAIF,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEG,YAAY,EAAEC,mBAAmB,EAAE;IAChD,OAAO,IAAAC,4EAAqC,EAACR,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAC7E,CAAC,MAAM;IACL,OAAO,IAAAM,kEAAgC,EAACT,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,CAAC;EACxE;AACF,CAAC;AAACO,OAAA,CAAAX,uBAAA,GAAAA,uBAAA;AAEF,MAAMQ,mBAAmB,GAAGA,CAAA,KAAM;EAChCI,kBAAM,CAACC,IAAI,CACT,kGAAkG,GAChG,uCAAuC,CAC1C;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_useChannelMessagesReducer","createMessageQuery","channel","options","queryCreator","params","limit","reverse","replyType","createPreviousMessageListQuery","useGroupChannelMessagesWithQuery","sdk","userId","queryRef","useRef","handlerId","useUniqHandlerId","forceUpdate","useForceUpdate","loading","refreshing","messages","newMessages","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","useChannelMessagesReducer","sortComparator","channelMarkAsRead","confirmAndMarkAsRead","e","Logger","warn","init","useFreshCallback","uid","_sdk$currentUser","_queryRef$current","currentUser","current","hasNext","_queryRef$current2","_sdk$currentUser2","list","load","channelUpdater","isGroupChannel","isDifferentChannel","useChannelHandler","onMessageReceived","eventChannel","message","_sdk$currentUser3","_sdk$currentUser4","_options$shouldCountN","isMyMessage","shouldCountNewMessages","call","_sdk$currentUser5","onMessagesReceived","onMessageUpdated","_sdk$currentUser6","_sdk$currentUser7","onMessageDeleted","messageId","onReactionUpdated","reactionEvent","_sdk$currentUser8","getMessage","includeReactions","includeParentMessageInfo","includeThreadInfo","includeMetaArray","channelUrl","url","channelType","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","foundChannel","find","c","onChannelDeleted","_options$onChannelDel","onOperatorUpdated","onUserLeft","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_sdk$currentUser9","_options$onChannelDel2","useAsyncEffect","refresh","prev","_queryRef$current3","_queryRef$current4","_sdk$currentUser10","hasPrev","_queryRef$current5","next","ASYNC_NOOP","sendUserMessage","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser11","onSucceeded","sentMessage","_sdk$currentUser12","onFailed","err","failedMessage","_sdk$currentUser13","sendFileMessage","isFileMessage","_sdk$currentUser14","_sdk$currentUser15","_sdk$currentUser16","updateUserMessage","_sdk$currentUser17","updatedMessage","updateFileMessage","_sdk$currentUser18","resendMessage","_sdk$currentUser19","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","_sdk$currentUser20","resetWithStartingPoint","exports"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { PreviousMessageListQueryParams } from '@sendbird/chat/message';\nimport type {\n SendbirdBaseChannel,\n SendbirdGroupChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n ASYNC_NOOP,\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n isMyMessage,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useChannelMessagesReducer } from '../useChannelMessagesReducer';\n\nconst createMessageQuery = (channel: SendbirdGroupChannel, options?: UseGroupChannelMessagesOptions) => {\n if (options?.queryCreator) return options.queryCreator();\n\n const params: PreviousMessageListQueryParams = { limit: 100, reverse: true };\n if (options?.replyType) params.replyType = options.replyType;\n\n return channel.createPreviousMessageListQuery(params);\n};\n\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithQuery');\n\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n deleteMessages,\n updateNewMessages,\n deleteNewMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const channelMarkAsRead = async () => {\n try {\n await confirmAndMarkAsRead([channel]);\n } catch (e) {\n Logger.warn('[useGroupChannelMessagesWithQuery/channelMarkAsRead]', e);\n }\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n channelMarkAsRead();\n updateNewMessages([], true, sdk.currentUser?.userId);\n\n queryRef.current = createMessageQuery(channel, options);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser?.userId);\n }\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, handlerId, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser?.userId)) return;\n\n channelMarkAsRead();\n\n updateMessages([message], false, sdk.currentUser?.userId);\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages([message], false, sdk.currentUser?.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived([message]);\n }\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser?.userId)) return;\n\n updateMessages([message], false, sdk.currentUser?.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNewMessages([messageId], []);\n },\n async onReactionUpdated(eventChannel, reactionEvent) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n const message = await sdk.message.getMessage({\n messageId: reactionEvent.messageId,\n includeReactions: true,\n includeParentMessageInfo: true,\n includeThreadInfo: true,\n includeMetaArray: true,\n channelUrl: channel.url,\n channelType: channel.channelType,\n });\n if (message) updateMessages([message], false, sdk.currentUser?.userId);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const foundChannel = channels.find((c) => !isDifferentChannel(c, channel));\n if (foundChannel) channelUpdater(foundChannel);\n },\n onChannelDeleted(channelUrl: string) {\n if (channel.url === channelUrl) options?.onChannelDeleted?.();\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserLeft: channelUpdater,\n // onUserEntered: channelUpdater,\n // onUserExited: channelUpdater,\n onUserJoined: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser?.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useFreshCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser?.userId);\n }\n });\n const hasPrev: ReturnType<UseGroupChannelMessages>['hasPrev'] = useFreshCallback(\n () => queryRef.current?.hasNext ?? false,\n );\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(ASYNC_NOOP);\n const hasNext: ReturnType<UseGroupChannelMessages>['hasNext'] = useFreshCallback(() => false);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\n reject(err);\n });\n });\n },\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\n reject(err);\n });\n });\n },\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser?.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser?.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useFreshCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser?.userId);\n },\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n });\n const resetNewMessages: ReturnType<UseGroupChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser?.userId);\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n newMessages,\n resetNewMessages,\n next,\n hasNext,\n prev,\n hasPrev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint() {\n Logger.warn('resetWithStartingPoint is not supported in Query, please use Collection instead.');\n },\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_useChannelMessagesReducer","createMessageQuery","channel","options","queryCreator","params","limit","reverse","replyType","createPreviousMessageListQuery","useGroupChannelMessagesWithQuery","sdk","userId","queryRef","useRef","handlerId","useUniqHandlerId","forceUpdate","useForceUpdate","loading","refreshing","messages","newMessages","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","useChannelMessagesReducer","sortComparator","channelMarkAsRead","confirmAndMarkAsRead","e","Logger","warn","init","useFreshCallback","uid","_sdk$currentUser","_queryRef$current","currentUser","current","hasNext","_queryRef$current2","_sdk$currentUser2","list","load","channelUpdater","isGroupChannel","isDifferentChannel","useChannelHandler","onMessageReceived","eventChannel","message","_sdk$currentUser3","_sdk$currentUser4","_options$shouldCountN","isMyMessage","shouldCountNewMessages","call","_sdk$currentUser5","onMessagesReceived","onMessageUpdated","_sdk$currentUser6","_sdk$currentUser7","onMessageDeleted","messageId","onReactionUpdated","reactionEvent","_sdk$currentUser8","getMessage","includeReactions","includeParentMessageInfo","includeThreadInfo","includeMetaArray","channelUrl","url","channelType","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","foundChannel","find","c","onChannelDeleted","_options$onChannelDel","onOperatorUpdated","onUserLeft","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_sdk$currentUser9","_options$onChannelDel2","useAsyncEffect","refresh","prev","_queryRef$current3","_queryRef$current4","_sdk$currentUser10","hasPrev","_queryRef$current5","next","ASYNC_NOOP","sendUserMessage","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser11","onSucceeded","sentMessage","_sdk$currentUser12","onFailed","err","failedMessage","_sdk$currentUser13","sendFileMessage","isFileMessage","_sdk$currentUser14","_sdk$currentUser15","_sdk$currentUser16","updateUserMessage","_sdk$currentUser17","updatedMessage","updateFileMessage","_sdk$currentUser18","resendMessage","_sdk$currentUser19","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","_sdk$currentUser20","resetWithStartingPoint","exports"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { BaseMessage, PreviousMessageListQueryParams } from '@sendbird/chat/message';\nimport type {\n SendbirdBaseChannel,\n SendbirdGroupChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n ASYNC_NOOP,\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n isMyMessage,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useChannelMessagesReducer } from '../useChannelMessagesReducer';\n\nconst createMessageQuery = (channel: SendbirdGroupChannel, options?: UseGroupChannelMessagesOptions) => {\n if (options?.queryCreator) return options.queryCreator();\n\n const params: PreviousMessageListQueryParams = { limit: 100, reverse: true };\n if (options?.replyType) params.replyType = options.replyType;\n\n return channel.createPreviousMessageListQuery(params);\n};\n\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithQuery');\n\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n deleteMessages,\n updateNewMessages,\n deleteNewMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const channelMarkAsRead = async () => {\n try {\n await confirmAndMarkAsRead([channel]);\n } catch (e) {\n Logger.warn('[useGroupChannelMessagesWithQuery/channelMarkAsRead]', e);\n }\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n channelMarkAsRead();\n updateNewMessages([], true, sdk.currentUser?.userId);\n\n queryRef.current = createMessageQuery(channel, options);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser?.userId);\n }\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, handlerId, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser?.userId)) return;\n\n channelMarkAsRead();\n\n updateMessages([message], false, sdk.currentUser?.userId);\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages([message], false, sdk.currentUser?.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived([message]);\n }\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser?.userId)) return;\n\n updateMessages([message], false, sdk.currentUser?.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNewMessages([messageId], []);\n },\n async onReactionUpdated(eventChannel, reactionEvent) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n const message = await sdk.message.getMessage({\n messageId: reactionEvent.messageId,\n includeReactions: true,\n includeParentMessageInfo: true,\n includeThreadInfo: true,\n includeMetaArray: true,\n channelUrl: channel.url,\n channelType: channel.channelType,\n });\n if (message) updateMessages([message as BaseMessage], false, sdk.currentUser?.userId);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const foundChannel = channels.find((c) => !isDifferentChannel(c, channel));\n if (foundChannel) channelUpdater(foundChannel);\n },\n onChannelDeleted(channelUrl: string) {\n if (channel.url === channelUrl) options?.onChannelDeleted?.();\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserLeft: channelUpdater,\n // onUserEntered: channelUpdater,\n // onUserExited: channelUpdater,\n onUserJoined: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser?.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useFreshCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser?.userId);\n }\n });\n const hasPrev: ReturnType<UseGroupChannelMessages>['hasPrev'] = useFreshCallback(\n () => queryRef.current?.hasNext ?? false,\n );\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(ASYNC_NOOP);\n const hasNext: ReturnType<UseGroupChannelMessages>['hasNext'] = useFreshCallback(() => false);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\n reject(err);\n });\n });\n },\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\n reject(err);\n });\n });\n },\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser?.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser?.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useFreshCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser?.userId);\n },\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n });\n const resetNewMessages: ReturnType<UseGroupChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser?.userId);\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n newMessages,\n resetNewMessages,\n next,\n hasNext,\n prev,\n hasPrev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint() {\n Logger.warn('resetWithStartingPoint is not supported in Query, please use Collection instead.');\n },\n };\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_useConnectionHandler","_useChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useOpenChannelMessagesWithQuery","sdk","userId","options","queryRef","useRef","forceUpdate","useForceUpdate","handlerId","useUniqHandlerId","loading","refreshing","messages","newMessages","updateMessages","updateNewMessages","deleteNewMessages","deleteMessages","updateLoading","updateRefreshing","useChannelMessagesReducer","sortComparator","init","useFreshCallback","uid","_queryRef$current","_sdk$currentUser2","current","queryCreator","hasNext","_queryRef$current2","_sdk$currentUser","list","load","currentUser","channelUpdater","isOpenChannel","isDifferentChannel","useConnectionHandler","onReconnectSucceeded","_queryRef$current3","_queryRef$current4","_queryRef$current5","_queryRef$current6","_queryRef$current7","_queryRef$current8","_queryRef$current9","_queryRef$current10","_queryRef$current11","_queryRef$current12","_queryRef$current13","_queryRef$current14","_queryRef$current15","_queryRef$current16","_queryRef$current17","_queryRef$current18","_sdk$currentUser3","lastMessage","messageContext","updatedMessages","addedMessages","deletedMessageIds","changeLogsContext","hasMore","token","messageQueryContext","timestamp","createdAt","changelogsParams","replyType","includeMetaArray","includeReactions","includeThreadInfo","includeParentMessageInfo","changeLogsByTS","getMessageChangeLogsSinceTimestamp","push","changeLogsByToken","getMessageChangeLogsSinceToken","messageQueryParams","prevResultSize","nextResultSize","customTypesFilter","messageTypeFilter","senderUserIdsFilter","showSubchannelMessagesOnly","queriedMessages","getMessagesByTimestamp","length","unshift","_options$shouldCountN","shouldCountNewMessages","call","_sdk$currentUser4","onMessagesReceived","useChannelHandler","onMessageReceived","eventChannel","message","_sdk$currentUser5","_sdk$currentUser6","_options$shouldCountN2","isMyMessage","_sdk$currentUser7","onMessageUpdated","_sdk$currentUser8","_sdk$currentUser9","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelParticipantCountChanged","onChannelDeleted","channelUrl","type","url","_options$onChannelDel","onOperatorUpdated","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_sdk$currentUser10","_options$onChannelDel2","useAsyncEffect","enter","error","_options$onError","_options$onChannelDel3","onError","exit","catch","NOOP","refresh","prev","_queryRef$current19","_queryRef$current20","_sdk$currentUser11","hasPrev","_queryRef$current21","next","ASYNC_NOOP","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser12","onSucceeded","sentMessage","_sdk$currentUser13","onFailed","err","failedMessage","_sdk$currentUser14","sendFileMessage","isFileMessage","_sdk$currentUser15","_sdk$currentUser16","_sdk$currentUser17","updateUserMessage","_sdk$currentUser18","updatedMessage","updateFileMessage","_sdk$currentUser19","resendMessage","_sdk$currentUser20","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","_sdk$currentUser21","exports"],"sources":["useOpenChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport { MessageListParams } from '@sendbird/chat/message';\nimport type {\n SendbirdBaseChannel,\n SendbirdBaseMessage,\n SendbirdOpenChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n ASYNC_NOOP,\n NOOP,\n isDifferentChannel,\n isMyMessage,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport { useConnectionHandler } from '../../handler/useConnectionHandler';\nimport type { UseOpenChannelMessages, UseOpenChannelMessagesOptions } from '../../types';\nimport { useChannelMessagesReducer } from '../useChannelMessagesReducer';\n\nconst createMessageQuery = (channel: SendbirdOpenChannel, creator?: UseOpenChannelMessagesOptions['queryCreator']) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nexport const useOpenChannelMessagesWithQuery: UseOpenChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const forceUpdate = useForceUpdate();\n const handlerId = useUniqHandlerId('useOpenChannelMessagesWithQuery');\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n updateNewMessages,\n deleteNewMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n\n updateMessages(list, true, sdk.currentUser?.userId);\n }\n updateNewMessages([], true, sdk.currentUser?.userId);\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isOpenChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useConnectionHandler(sdk, handlerId, {\n async onReconnectSucceeded() {\n const lastMessage = messages[0];\n if (!lastMessage) return;\n\n const messageContext = {\n updatedMessages: [] as SendbirdBaseMessage[],\n addedMessages: [] as SendbirdBaseMessage[],\n deletedMessageIds: [] as number[],\n };\n const changeLogsContext = {\n hasMore: false,\n token: '',\n };\n const messageQueryContext = {\n hasMore: false,\n timestamp: lastMessage.createdAt,\n };\n\n // Updated & Deleted messages\n const changelogsParams = {\n replyType: queryRef.current?.replyType,\n includeMetaArray: queryRef.current?.includeMetaArray,\n includeReactions: queryRef.current?.includeReactions,\n includeThreadInfo: queryRef.current?.includeThreadInfo,\n includeParentMessageInfo: queryRef.current?.includeParentMessageInfo,\n };\n\n const changeLogsByTS = await channel.getMessageChangeLogsSinceTimestamp(lastMessage.createdAt);\n changeLogsContext.token = changeLogsByTS.token;\n changeLogsContext.hasMore = changeLogsByTS.hasMore;\n messageContext.updatedMessages.push(...changeLogsByTS.updatedMessages);\n messageContext.deletedMessageIds.push(...changeLogsByTS.deletedMessageIds);\n\n while (changeLogsContext.hasMore) {\n const changeLogsByToken = await channel.getMessageChangeLogsSinceToken(changeLogsByTS.token, changelogsParams);\n changeLogsContext.token = changeLogsByToken.token;\n changeLogsContext.hasMore = changeLogsByToken.hasMore;\n messageContext.updatedMessages.push(...changeLogsByToken.updatedMessages);\n messageContext.deletedMessageIds.push(...changeLogsByToken.deletedMessageIds);\n }\n\n // Added messages\n const messageQueryParams: MessageListParams = {\n prevResultSize: 0,\n nextResultSize: queryRef.current?.limit ?? 100,\n reverse: queryRef.current?.reverse,\n includeParentMessageInfo: queryRef.current?.includeParentMessageInfo,\n includeThreadInfo: queryRef.current?.includeThreadInfo,\n includeReactions: queryRef.current?.includeReactions,\n includeMetaArray: queryRef.current?.includeMetaArray,\n replyType: queryRef.current?.replyType,\n customTypesFilter: queryRef.current?.customTypesFilter as never,\n messageTypeFilter: queryRef.current?.messageTypeFilter,\n senderUserIdsFilter: queryRef.current?.senderUserIdsFilter as never,\n showSubchannelMessagesOnly: queryRef.current?.showSubchannelMessagesOnly,\n };\n\n const queriedMessages = await channel.getMessagesByTimestamp(lastMessage.createdAt, messageQueryParams);\n messageQueryContext.hasMore = queriedMessages.length > 0;\n if (messageQueryContext.hasMore) {\n messageQueryContext.timestamp = queriedMessages[0].createdAt;\n messageContext.addedMessages.unshift(...queriedMessages);\n }\n\n while (messageQueryContext.hasMore) {\n const queriedMessages = await channel.getMessagesByTimestamp(messageQueryContext.timestamp, messageQueryParams);\n messageQueryContext.hasMore = queriedMessages.length > 0;\n if (messageQueryContext.hasMore) {\n messageQueryContext.timestamp = queriedMessages[0].createdAt;\n messageContext.addedMessages.unshift(...queriedMessages);\n }\n }\n\n // Update to View\n updateMessages(\n [...messageContext.addedMessages, ...messageContext.updatedMessages],\n false,\n sdk.currentUser?.userId,\n );\n deleteMessages(messageContext.deletedMessageIds, []);\n\n if (messageContext.addedMessages.length > 0) {\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages(messageContext.addedMessages, false, sdk.currentUser?.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived(messageContext.addedMessages);\n }\n }\n },\n });\n\n useChannelHandler(\n sdk,\n handlerId,\n {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser?.userId)) return;\n\n updateMessages([message], false, sdk.currentUser?.userId);\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages([message], false, sdk.currentUser?.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived([message]);\n }\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser?.userId)) return;\n\n updateMessages([message], false, sdk.currentUser?.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNewMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelParticipantCountChanged(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n channelUpdater(eventChannel);\n },\n onChannelDeleted(channelUrl, type) {\n if (channel.url === channelUrl && type === 'open') {\n options?.onChannelDeleted?.();\n }\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser?.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n },\n 'open',\n );\n\n useAsyncEffect(async () => {\n updateLoading(true);\n\n try {\n await channel.enter();\n await init(userId);\n } catch (error) {\n options?.onError?.(error);\n options?.onChannelDeleted?.();\n } finally {\n updateLoading(false);\n }\n\n return () => {\n channel.exit().catch(NOOP);\n };\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseOpenChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseOpenChannelMessages>['prev'] = useFreshCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser?.userId);\n }\n });\n const hasPrev: ReturnType<UseOpenChannelMessages>['hasPrev'] = useFreshCallback(\n () => queryRef.current?.hasNext ?? false,\n );\n\n const next: ReturnType<UseOpenChannelMessages>['next'] = useFreshCallback(ASYNC_NOOP);\n const hasNext: ReturnType<UseOpenChannelMessages>['hasNext'] = useFreshCallback(() => false);\n\n const sendUserMessage: ReturnType<UseOpenChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\n reject(err);\n });\n });\n },\n );\n\n const sendFileMessage: ReturnType<UseOpenChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\n reject(err);\n });\n });\n },\n );\n\n const updateUserMessage: ReturnType<UseOpenChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser?.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseOpenChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser?.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseOpenChannelMessages>['resendMessage'] = useFreshCallback(async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser?.userId);\n });\n const deleteMessage: ReturnType<UseOpenChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n });\n const resetNewMessages: ReturnType<UseOpenChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser?.userId);\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n newMessages,\n next,\n hasNext,\n prev,\n hasPrev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetNewMessages,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_useConnectionHandler","_useChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useOpenChannelMessagesWithQuery","sdk","userId","options","queryRef","useRef","forceUpdate","useForceUpdate","handlerId","useUniqHandlerId","loading","refreshing","messages","newMessages","updateMessages","updateNewMessages","deleteNewMessages","deleteMessages","updateLoading","updateRefreshing","useChannelMessagesReducer","sortComparator","init","useFreshCallback","uid","_queryRef$current","_sdk$currentUser2","current","queryCreator","hasNext","_queryRef$current2","_sdk$currentUser","list","load","currentUser","channelUpdater","isOpenChannel","isDifferentChannel","useConnectionHandler","onReconnectSucceeded","_queryRef$current3","_queryRef$current4","_queryRef$current5","_queryRef$current6","_queryRef$current7","_queryRef$current8","_queryRef$current9","_queryRef$current10","_queryRef$current11","_queryRef$current12","_queryRef$current13","_queryRef$current14","_queryRef$current15","_queryRef$current16","_queryRef$current17","_queryRef$current18","_sdk$currentUser3","lastMessage","messageContext","updatedMessages","addedMessages","deletedMessageIds","changeLogsContext","hasMore","token","messageQueryContext","timestamp","createdAt","changelogsParams","replyType","includeMetaArray","includeReactions","includeThreadInfo","includeParentMessageInfo","changeLogsByTS","getMessageChangeLogsSinceTimestamp","push","changeLogsByToken","getMessageChangeLogsSinceToken","messageQueryParams","prevResultSize","nextResultSize","customTypesFilter","messageTypeFilter","senderUserIdsFilter","showSubchannelMessagesOnly","queriedMessages","getMessagesByTimestamp","length","unshift","_options$shouldCountN","shouldCountNewMessages","call","_sdk$currentUser4","onMessagesReceived","useChannelHandler","onMessageReceived","eventChannel","message","_sdk$currentUser5","_sdk$currentUser6","_options$shouldCountN2","isMyMessage","_sdk$currentUser7","onMessageUpdated","_sdk$currentUser8","_sdk$currentUser9","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelParticipantCountChanged","onChannelDeleted","channelUrl","type","url","_options$onChannelDel","onOperatorUpdated","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_sdk$currentUser10","_options$onChannelDel2","useAsyncEffect","enter","error","_options$onError","_options$onChannelDel3","onError","exit","catch","NOOP","refresh","prev","_queryRef$current19","_queryRef$current20","_sdk$currentUser11","hasPrev","_queryRef$current21","next","ASYNC_NOOP","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser12","onSucceeded","sentMessage","_sdk$currentUser13","onFailed","err","failedMessage","_sdk$currentUser14","sendFileMessage","isFileMessage","_sdk$currentUser15","_sdk$currentUser16","_sdk$currentUser17","updateUserMessage","_sdk$currentUser18","updatedMessage","updateFileMessage","_sdk$currentUser19","resendMessage","_sdk$currentUser20","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","_sdk$currentUser21","exports"],"sources":["useOpenChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport { MessageListParams } from '@sendbird/chat/message';\nimport type {\n SendbirdBaseChannel,\n SendbirdBaseMessage,\n SendbirdOpenChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n ASYNC_NOOP,\n NOOP,\n isDifferentChannel,\n isMyMessage,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport { useConnectionHandler } from '../../handler/useConnectionHandler';\nimport type { UseOpenChannelMessages, UseOpenChannelMessagesOptions } from '../../types';\nimport { useChannelMessagesReducer } from '../useChannelMessagesReducer';\n\nconst createMessageQuery = (channel: SendbirdOpenChannel, creator?: UseOpenChannelMessagesOptions['queryCreator']) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nexport const useOpenChannelMessagesWithQuery: UseOpenChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const forceUpdate = useForceUpdate();\n const handlerId = useUniqHandlerId('useOpenChannelMessagesWithQuery');\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n updateNewMessages,\n deleteNewMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n\n updateMessages(list, true, sdk.currentUser?.userId);\n }\n updateNewMessages([], true, sdk.currentUser?.userId);\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isOpenChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useConnectionHandler(sdk, handlerId, {\n async onReconnectSucceeded() {\n const lastMessage = messages[0];\n if (!lastMessage) return;\n\n const messageContext = {\n updatedMessages: [] as SendbirdBaseMessage[],\n addedMessages: [] as SendbirdBaseMessage[],\n deletedMessageIds: [] as (number | string)[],\n };\n const changeLogsContext = {\n hasMore: false,\n token: '',\n };\n const messageQueryContext = {\n hasMore: false,\n timestamp: lastMessage.createdAt,\n };\n\n // Updated & Deleted messages\n const changelogsParams = {\n replyType: queryRef.current?.replyType,\n includeMetaArray: queryRef.current?.includeMetaArray,\n includeReactions: queryRef.current?.includeReactions,\n includeThreadInfo: queryRef.current?.includeThreadInfo,\n includeParentMessageInfo: queryRef.current?.includeParentMessageInfo,\n };\n\n const changeLogsByTS = await channel.getMessageChangeLogsSinceTimestamp(lastMessage.createdAt);\n changeLogsContext.token = changeLogsByTS.token;\n changeLogsContext.hasMore = changeLogsByTS.hasMore;\n messageContext.updatedMessages.push(...changeLogsByTS.updatedMessages);\n messageContext.deletedMessageIds.push(...changeLogsByTS.deletedMessageIds);\n\n while (changeLogsContext.hasMore) {\n const changeLogsByToken = await channel.getMessageChangeLogsSinceToken(changeLogsByTS.token, changelogsParams);\n changeLogsContext.token = changeLogsByToken.token;\n changeLogsContext.hasMore = changeLogsByToken.hasMore;\n messageContext.updatedMessages.push(...changeLogsByToken.updatedMessages);\n messageContext.deletedMessageIds.push(...changeLogsByToken.deletedMessageIds);\n }\n\n // Added messages\n const messageQueryParams: MessageListParams = {\n prevResultSize: 0,\n nextResultSize: queryRef.current?.limit ?? 100,\n reverse: queryRef.current?.reverse,\n includeParentMessageInfo: queryRef.current?.includeParentMessageInfo,\n includeThreadInfo: queryRef.current?.includeThreadInfo,\n includeReactions: queryRef.current?.includeReactions,\n includeMetaArray: queryRef.current?.includeMetaArray,\n replyType: queryRef.current?.replyType,\n customTypesFilter: queryRef.current?.customTypesFilter as never,\n messageTypeFilter: queryRef.current?.messageTypeFilter,\n senderUserIdsFilter: queryRef.current?.senderUserIdsFilter as never,\n showSubchannelMessagesOnly: queryRef.current?.showSubchannelMessagesOnly,\n };\n\n const queriedMessages = await channel.getMessagesByTimestamp(lastMessage.createdAt, messageQueryParams);\n messageQueryContext.hasMore = queriedMessages.length > 0;\n if (messageQueryContext.hasMore) {\n messageQueryContext.timestamp = queriedMessages[0].createdAt;\n messageContext.addedMessages.unshift(...queriedMessages);\n }\n\n while (messageQueryContext.hasMore) {\n const queriedMessages = await channel.getMessagesByTimestamp(messageQueryContext.timestamp, messageQueryParams);\n messageQueryContext.hasMore = queriedMessages.length > 0;\n if (messageQueryContext.hasMore) {\n messageQueryContext.timestamp = queriedMessages[0].createdAt;\n messageContext.addedMessages.unshift(...queriedMessages);\n }\n }\n\n // Update to View\n updateMessages(\n [...messageContext.addedMessages, ...messageContext.updatedMessages],\n false,\n sdk.currentUser?.userId,\n );\n deleteMessages(messageContext.deletedMessageIds, []);\n\n if (messageContext.addedMessages.length > 0) {\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages(messageContext.addedMessages, false, sdk.currentUser?.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived(messageContext.addedMessages);\n }\n }\n },\n });\n\n useChannelHandler(\n sdk,\n handlerId,\n {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser?.userId)) return;\n\n updateMessages([message], false, sdk.currentUser?.userId);\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages([message], false, sdk.currentUser?.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived([message]);\n }\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser?.userId)) return;\n\n updateMessages([message], false, sdk.currentUser?.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNewMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelParticipantCountChanged(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n channelUpdater(eventChannel);\n },\n onChannelDeleted(channelUrl, type) {\n if (channel.url === channelUrl && type === 'open') {\n options?.onChannelDeleted?.();\n }\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser?.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n },\n 'open',\n );\n\n useAsyncEffect(async () => {\n updateLoading(true);\n\n try {\n await channel.enter();\n await init(userId);\n } catch (error) {\n options?.onError?.(error);\n options?.onChannelDeleted?.();\n } finally {\n updateLoading(false);\n }\n\n return () => {\n channel.exit().catch(NOOP);\n };\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseOpenChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseOpenChannelMessages>['prev'] = useFreshCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser?.userId);\n }\n });\n const hasPrev: ReturnType<UseOpenChannelMessages>['hasPrev'] = useFreshCallback(\n () => queryRef.current?.hasNext ?? false,\n );\n\n const next: ReturnType<UseOpenChannelMessages>['next'] = useFreshCallback(ASYNC_NOOP);\n const hasNext: ReturnType<UseOpenChannelMessages>['hasNext'] = useFreshCallback(() => false);\n\n const sendUserMessage: ReturnType<UseOpenChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\n reject(err);\n });\n });\n },\n );\n\n const sendFileMessage: ReturnType<UseOpenChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\n reject(err);\n });\n });\n },\n );\n\n const updateUserMessage: ReturnType<UseOpenChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser?.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseOpenChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser?.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseOpenChannelMessages>['resendMessage'] = useFreshCallback(async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser?.userId);\n });\n const deleteMessage: ReturnType<UseOpenChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n });\n const resetNewMessages: ReturnType<UseOpenChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser?.userId);\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n newMessages,\n next,\n hasNext,\n prev,\n hasPrev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetNewMessages,\n };\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ReplyType } from '@sendbird/chat/message';\nimport type {\n SendbirdChatSDK,\n SendbirdError,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n SendbirdGroupChannelListQuery,\n SendbirdMessage,\n SendbirdMessageCollection,\n SendbirdOpenChannel,\n SendbirdOpenChannelListQuery,\n SendbirdPreviousMessageListQuery,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n UserStruct,\n} from '@sendbird/uikit-utils';\n\nexport interface CustomQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: boolean;\n}\nexport interface CustomBidirectionalQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: () => boolean;\n prev: () => Promise<Data[]>;\n hasPrev: () => boolean;\n}\n\n/**\n * @interface UseGroupChannelList\n * @description interface for group channel list hook\n * */\nexport interface UseGroupChannelList {\n (sdk: SendbirdChatSDK, userId?: string, options?: UseGroupChannelListOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get group channels state\n * */\n groupChannels: SendbirdGroupChannel[];\n\n /**\n * Fetch next channels to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n };\n}\nexport type UseGroupChannelListOptions = {\n queryCreator?: () => SendbirdGroupChannelListQuery;\n collectionCreator?: () => SendbirdGroupChannelCollection;\n enableCollectionWithoutLocalCache?: boolean;\n};\n\n/**\n * @interface UseGroupChannelMessages\n * @description interface for group channel messages hook\n * - Receive new messages from other users & should count new messages -> append to state(newMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> next() -> fetch next messages and append to state(messages)\n * */\nexport interface UseGroupChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdGroupChannel, userId?: string, options?: UseGroupChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Check if there are more prev messages to fetch\n * @return {boolean}\n * */\n hasPrev: () => boolean;\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Check if there are more next messages to fetch\n * @return {boolean}\n * */\n hasNext: () => boolean;\n\n /**\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessages: SendbirdMessage[];\n\n /**\n * reset message list with starting point\n * */\n resetWithStartingPoint: (startingPoint: number, callback?: () => void) => void;\n\n /**\n * Reset new messages\n * */\n resetNewMessages: () => void;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageCreateParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageCreateParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageUpdateParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageUpdateParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n };\n}\n\nexport type UseGroupChannelMessagesOptions = {\n replyType?: ReplyType;\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n collectionCreator?: (options?: Pick<UseGroupChannelMessagesOptions, 'startingPoint'>) => SendbirdMessageCollection;\n enableCollectionWithoutLocalCache?: boolean;\n onChannelDeleted?: () => void;\n shouldCountNewMessages?: () => boolean;\n startingPoint?: number;\n onMessagesReceived?: (messages: SendbirdMessage[]) => void;\n onMessagesUpdated?: (messages: SendbirdMessage[]) => void;\n};\n\n/**\n * @interface UseOpenChannelList\n * @description interface for open channel list hook\n * */\nexport interface UseOpenChannelList {\n (sdk: SendbirdChatSDK, userId?: string, options?: UseOpenChannelListOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Get open channels state\n * */\n openChannels: SendbirdOpenChannel[];\n\n /**\n * Fetch next channels to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n };\n}\nexport type UseOpenChannelListOptions = {\n queryCreator?: () => SendbirdOpenChannelListQuery;\n};\n\n/**\n * @interface UseOpenChannelMessages\n * @description interface for open channel messages hook\n * - Receive new messages from other users & should count new messages -> append to state(newMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> noop\n * */\nexport interface UseOpenChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdOpenChannel, userId?: string, options?: UseOpenChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Check if there are more prev messages to fetch\n * @return {boolean}\n * */\n hasPrev: () => boolean;\n\n /**\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessages: SendbirdMessage[];\n\n /**\n * Reset new messages\n * */\n resetNewMessages: () => void;\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Check if there are more next messages to fetch\n * @return {boolean}\n * */\n hasNext: () => boolean;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageCreateParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageCreateParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageUpdateParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageUpdateParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n };\n}\n\nexport type UseOpenChannelMessagesOptions = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n onChannelDeleted?: () => void;\n onError?: (error?: unknown) => void;\n shouldCountNewMessages?: () => boolean;\n onMessagesReceived?: (messages: SendbirdMessage[]) => void;\n};\n\n/**\n * @interface UseUserListReturn\n * @description interface for user list hook return value\n * */\nexport interface UseUserListReturn<User extends UserStruct> {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get users state\n * */\n users: User[];\n\n /**\n * Update or Insert user to list\n * */\n upsertUser: (user: User) => void;\n\n /**\n * Delete user from list\n * */\n deleteUser: (userId: User['userId']) => void;\n\n /**\n * Fetch next users to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n}\n\nexport type UseUserListOptions<User extends UserStruct> = {\n sortComparator?: (a: User, b: User) => number;\n queryCreator?: () => CustomQueryInterface<User>;\n};\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ReplyType } from '@sendbird/chat/message';\nimport type {\n SendbirdChatSDK,\n SendbirdError,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n SendbirdGroupChannelListQuery,\n SendbirdMessage,\n SendbirdMessageCollection,\n SendbirdOpenChannel,\n SendbirdOpenChannelListQuery,\n SendbirdPreviousMessageListQuery,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n UserStruct,\n} from '@sendbird/uikit-utils';\n\nexport interface CustomQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: boolean;\n}\nexport interface CustomBidirectionalQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: () => boolean;\n prev: () => Promise<Data[]>;\n hasPrev: () => boolean;\n}\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.\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 * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.\n *\n * @interface UseGroupChannelMessages\n * @description interface for group channel messages hook\n * - Receive new messages from other users & should count new messages -> append to state(newMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> next() -> fetch next messages and append to state(messages)\n * */\nexport interface UseGroupChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdGroupChannel, userId?: string, options?: UseGroupChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Check if there are more prev messages to fetch\n * @return {boolean}\n * */\n hasPrev: () => boolean;\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Check if there are more next messages to fetch\n * @return {boolean}\n * */\n hasNext: () => boolean;\n\n /**\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessages: SendbirdMessage[];\n\n /**\n * reset message list with starting point\n * */\n resetWithStartingPoint: (startingPoint: number, callback?: () => void) => void;\n\n /**\n * Reset new messages\n * */\n resetNewMessages: () => void;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageCreateParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageCreateParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageUpdateParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageUpdateParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n };\n}\n\nexport type UseGroupChannelMessagesOptions = {\n replyType?: ReplyType;\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n collectionCreator?: (options?: Pick<UseGroupChannelMessagesOptions, 'startingPoint'>) => SendbirdMessageCollection;\n enableCollectionWithoutLocalCache?: boolean;\n onChannelDeleted?: () => void;\n shouldCountNewMessages?: () => boolean;\n startingPoint?: number;\n onMessagesReceived?: (messages: SendbirdMessage[]) => void;\n onMessagesUpdated?: (messages: SendbirdMessage[]) => void;\n};\n\n/**\n * @interface UseOpenChannelList\n * @description interface for open channel list hook\n * */\nexport interface UseOpenChannelList {\n (sdk: SendbirdChatSDK, userId?: string, options?: UseOpenChannelListOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Get open channels state\n * */\n openChannels: SendbirdOpenChannel[];\n\n /**\n * Fetch next channels to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n };\n}\nexport type UseOpenChannelListOptions = {\n queryCreator?: () => SendbirdOpenChannelListQuery;\n};\n\n/**\n * @interface UseOpenChannelMessages\n * @description interface for open channel messages hook\n * - Receive new messages from other users & should count new messages -> append to state(newMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> noop\n * */\nexport interface UseOpenChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdOpenChannel, userId?: string, options?: UseOpenChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Check if there are more prev messages to fetch\n * @return {boolean}\n * */\n hasPrev: () => boolean;\n\n /**\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessages: SendbirdMessage[];\n\n /**\n * Reset new messages\n * */\n resetNewMessages: () => void;\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Check if there are more next messages to fetch\n * @return {boolean}\n * */\n hasNext: () => boolean;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageCreateParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageCreateParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageUpdateParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageUpdateParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n };\n}\n\nexport type UseOpenChannelMessagesOptions = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n onChannelDeleted?: () => void;\n onError?: (error?: unknown) => void;\n shouldCountNewMessages?: () => boolean;\n onMessagesReceived?: (messages: SendbirdMessage[]) => void;\n};\n\n/**\n * @interface UseUserListReturn\n * @description interface for user list hook return value\n * */\nexport interface UseUserListReturn<User extends UserStruct> {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get users state\n * */\n users: User[];\n\n /**\n * Update or Insert user to list\n * */\n upsertUser: (user: User) => void;\n\n /**\n * Delete user from list\n * */\n deleteUser: (userId: User['userId']) => void;\n\n /**\n * Fetch next users to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n}\n\nexport type UseUserListOptions<User extends UserStruct> = {\n sortComparator?: (a: User, b: User) => number;\n queryCreator?: () => CustomQueryInterface<User>;\n};\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"names":["useReducer","SendingStatus","arrayToMapWithGetter","getMessageUniqId","isMyMessage","isNewMessage","isSendableMessage","useIIFE","defaultReducer","_ref","action","draft","type","value","status","userId","currentUserId","clearBeforeAction","messagesToObject","messages","nextMessages","filter","next","prev","reqId","messageId","shouldUpdate","shouldUpdateMessage","obj","newMessages","it","messageKeys","map","forEach","key","messageIds","msgId","message","reqIds","reduce","accum","curr","sendingStatus","SUCCEEDED","useChannelMessagesReducer","sortComparator","loading","refreshing","messageMap","newMessageMap","dispatch","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","Array","from","Set","Object","values","sort"],"sources":["useChannelMessagesReducer.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport { SendableMessage } from '@sendbird/chat/lib/__definition';\nimport { SendingStatus } from '@sendbird/chat/message';\nimport type { SendbirdBaseMessage } from '@sendbird/uikit-utils';\nimport {\n SendbirdMessage,\n arrayToMapWithGetter,\n getMessageUniqId,\n isMyMessage,\n isNewMessage,\n isSendableMessage,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\ntype Options = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n};\n\ntype Action =\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_messages' | 'update_new_messages';\n value: { messages: SendbirdBaseMessage[]; clearBeforeAction: boolean; currentUserId?: string };\n }\n | {\n type: 'delete_messages' | 'delete_new_messages';\n value: { messageIds: number[]; reqIds: string[] };\n };\n\ntype State = {\n loading: boolean;\n refreshing: boolean;\n messageMap: Record<string, SendbirdBaseMessage>;\n newMessageMap: Record<string, SendbirdBaseMessage>;\n};\n\nconst defaultReducer = ({ ...draft }: State, action: Action) => {\n switch (action.type) {\n case 'update_refreshing': {\n draft['refreshing'] = action.value.status;\n return draft;\n }\n case 'update_loading': {\n draft['loading'] = action.value.status;\n return draft;\n }\n case 'update_messages': {\n const userId = action.value.currentUserId;\n\n if (action.value.clearBeforeAction) {\n draft['messageMap'] = messagesToObject(action.value.messages);\n } else {\n // Filtering meaningless message updates\n const nextMessages = action.value.messages.filter((next) => {\n if (isMyMessage(next, userId)) {\n const prev = draft['messageMap'][next.reqId] ?? draft['messageMap'][next.messageId];\n if (isMyMessage(prev, userId)) {\n const shouldUpdate = shouldUpdateMessage(prev, next);\n if (shouldUpdate) {\n // Remove existing messages before update to prevent duplicate display\n delete draft['messageMap'][prev.reqId];\n delete draft['messageMap'][prev.messageId];\n }\n return shouldUpdate;\n }\n }\n return true;\n });\n\n const obj = messagesToObject(nextMessages);\n draft['messageMap'] = { ...draft['messageMap'], ...obj };\n }\n\n return draft;\n }\n case 'update_new_messages': {\n const userId = action.value.currentUserId;\n const newMessages = action.value.messages.filter((it) => isNewMessage(it, userId));\n\n if (action.value.clearBeforeAction) {\n draft['newMessageMap'] = arrayToMapWithGetter(newMessages, getMessageUniqId);\n } else {\n // Remove existing messages before update to prevent duplicate display\n const messageKeys = newMessages.map((it) => it.messageId);\n messageKeys.forEach((key) => delete draft['newMessageMap'][key]);\n\n draft['newMessageMap'] = {\n ...draft['newMessageMap'],\n ...arrayToMapWithGetter(newMessages, getMessageUniqId),\n };\n }\n\n return draft;\n }\n case 'delete_messages':\n case 'delete_new_messages': {\n const key = action.type === 'delete_messages' ? 'messageMap' : 'newMessageMap';\n draft[key] = { ...draft[key] };\n action.value.messageIds.forEach((msgId) => {\n const message = draft[key][msgId];\n if (message) {\n if (isSendableMessage(message)) delete draft[key][message.reqId];\n delete draft[key][message.messageId];\n }\n });\n action.value.reqIds.forEach((reqId) => {\n const message = draft[key][reqId];\n if (message) {\n if (isSendableMessage(message)) delete draft[key][message.reqId];\n delete draft[key][message.messageId];\n }\n });\n\n return draft;\n }\n }\n};\n\nconst messagesToObject = (messages: SendbirdBaseMessage[]) => {\n return messages.reduce((accum, curr) => {\n if (isSendableMessage(curr)) {\n accum[curr.reqId] = curr;\n if (curr.sendingStatus === SendingStatus.SUCCEEDED) {\n accum[curr.messageId] = curr;\n }\n } else {\n accum[curr.messageId] = curr;\n }\n return accum;\n }, {} as Record<string, SendbirdBaseMessage>);\n};\n\nconst shouldUpdateMessage = (prev: SendableMessage, next: SendableMessage) => {\n // message data update (e.g. reactions)\n if (prev.sendingStatus === SendingStatus.SUCCEEDED) return next.sendingStatus === SendingStatus.SUCCEEDED;\n\n // message sending status update\n return prev.sendingStatus !== next.sendingStatus;\n};\n\nexport const useChannelMessagesReducer = (sortComparator?: Options['sortComparator']) => {\n const [{ loading, refreshing, messageMap, newMessageMap }, dispatch] = useReducer(defaultReducer, {\n loading: true,\n refreshing: false,\n messageMap: {},\n newMessageMap: {},\n });\n\n const updateMessages = (messages: SendbirdBaseMessage[], clearBeforeAction: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_messages', value: { messages, clearBeforeAction, currentUserId } });\n };\n const deleteMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_messages', value: { messageIds, reqIds } });\n };\n const updateNewMessages = (messages: SendbirdBaseMessage[], clearBeforeAction: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_new_messages', value: { messages, clearBeforeAction, currentUserId } });\n };\n const deleteNewMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_new_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 Array.from(new Set(Object.values(messageMap))).sort(sortComparator);\n return Array.from(new Set(Object.values(messageMap)));\n });\n const newMessages = Object.values(newMessageMap);\n\n return {\n updateLoading,\n updateRefreshing,\n updateMessages,\n deleteMessages,\n\n loading,\n refreshing,\n messages,\n\n newMessages,\n updateNewMessages,\n deleteNewMessages,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["useReducer","SendingStatus","arrayToMapWithGetter","getMessageUniqId","isMyMessage","isNewMessage","isSendableMessage","useIIFE","defaultReducer","_ref","action","draft","type","value","status","userId","currentUserId","clearBeforeAction","messagesToObject","messages","nextMessages","filter","next","prev","reqId","messageId","shouldUpdate","shouldUpdateMessage","obj","newMessages","it","messageKeys","map","forEach","key","messageIds","msgId","message","reqIds","reduce","accum","curr","sendingStatus","SUCCEEDED","useChannelMessagesReducer","sortComparator","loading","refreshing","messageMap","newMessageMap","dispatch","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","Array","from","Set","Object","values","sort"],"sources":["useChannelMessagesReducer.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport { SendableMessage } from '@sendbird/chat/lib/__definition';\nimport { SendingStatus } from '@sendbird/chat/message';\nimport type { SendbirdBaseMessage } from '@sendbird/uikit-utils';\nimport {\n SendbirdMessage,\n arrayToMapWithGetter,\n getMessageUniqId,\n isMyMessage,\n isNewMessage,\n isSendableMessage,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\ntype Options = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n};\n\ntype Action =\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_messages' | 'update_new_messages';\n value: { messages: SendbirdBaseMessage[]; clearBeforeAction: boolean; currentUserId?: string };\n }\n | {\n type: 'delete_messages' | 'delete_new_messages';\n value: { messageIds: (string | number)[]; reqIds: string[] };\n };\n\ntype State = {\n loading: boolean;\n refreshing: boolean;\n messageMap: Record<string, SendbirdBaseMessage>;\n newMessageMap: Record<string, SendbirdBaseMessage>;\n};\n\nconst defaultReducer = ({ ...draft }: State, action: Action) => {\n switch (action.type) {\n case 'update_refreshing': {\n draft['refreshing'] = action.value.status;\n return draft;\n }\n case 'update_loading': {\n draft['loading'] = action.value.status;\n return draft;\n }\n case 'update_messages': {\n const userId = action.value.currentUserId;\n\n if (action.value.clearBeforeAction) {\n draft['messageMap'] = messagesToObject(action.value.messages);\n } else {\n // Filtering meaningless message updates\n const nextMessages = action.value.messages.filter((next) => {\n if (isMyMessage(next, userId)) {\n const prev = draft['messageMap'][next.reqId] ?? draft['messageMap'][next.messageId];\n if (isMyMessage(prev, userId)) {\n const shouldUpdate = shouldUpdateMessage(prev, next);\n if (shouldUpdate) {\n // Remove existing messages before update to prevent duplicate display\n delete draft['messageMap'][prev.reqId];\n delete draft['messageMap'][prev.messageId];\n }\n return shouldUpdate;\n }\n }\n return true;\n });\n\n const obj = messagesToObject(nextMessages);\n draft['messageMap'] = { ...draft['messageMap'], ...obj };\n }\n\n return draft;\n }\n case 'update_new_messages': {\n const userId = action.value.currentUserId;\n const newMessages = action.value.messages.filter((it) => isNewMessage(it, userId));\n\n if (action.value.clearBeforeAction) {\n draft['newMessageMap'] = arrayToMapWithGetter(newMessages, getMessageUniqId);\n } else {\n // Remove existing messages before update to prevent duplicate display\n const messageKeys = newMessages.map((it) => it.messageId);\n messageKeys.forEach((key) => delete draft['newMessageMap'][key]);\n\n draft['newMessageMap'] = {\n ...draft['newMessageMap'],\n ...arrayToMapWithGetter(newMessages, getMessageUniqId),\n };\n }\n\n return draft;\n }\n case 'delete_messages':\n case 'delete_new_messages': {\n const key = action.type === 'delete_messages' ? 'messageMap' : 'newMessageMap';\n draft[key] = { ...draft[key] };\n action.value.messageIds.forEach((msgId) => {\n const message = draft[key][msgId];\n if (message) {\n if (isSendableMessage(message)) delete draft[key][message.reqId];\n delete draft[key][message.messageId];\n }\n });\n action.value.reqIds.forEach((reqId) => {\n const message = draft[key][reqId];\n if (message) {\n if (isSendableMessage(message)) delete draft[key][message.reqId];\n delete draft[key][message.messageId];\n }\n });\n\n return draft;\n }\n }\n};\n\nconst messagesToObject = (messages: SendbirdBaseMessage[]) => {\n return messages.reduce((accum, curr) => {\n if (isSendableMessage(curr)) {\n accum[curr.reqId] = curr;\n if (curr.sendingStatus === SendingStatus.SUCCEEDED) {\n accum[curr.messageId] = curr;\n }\n } else {\n accum[curr.messageId] = curr;\n }\n return accum;\n }, {} as Record<string, SendbirdBaseMessage>);\n};\n\nconst shouldUpdateMessage = (prev: SendableMessage, next: SendableMessage) => {\n // message data update (e.g. reactions)\n if (prev.sendingStatus === SendingStatus.SUCCEEDED) return next.sendingStatus === SendingStatus.SUCCEEDED;\n\n // message sending status update\n return prev.sendingStatus !== next.sendingStatus;\n};\n\nexport const useChannelMessagesReducer = (sortComparator?: Options['sortComparator']) => {\n const [{ loading, refreshing, messageMap, newMessageMap }, dispatch] = useReducer(defaultReducer, {\n loading: true,\n refreshing: false,\n messageMap: {},\n newMessageMap: {},\n });\n\n const updateMessages = (messages: SendbirdBaseMessage[], clearBeforeAction: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_messages', value: { messages, clearBeforeAction, currentUserId } });\n };\n const deleteMessages = (messageIds: (string | number)[], reqIds: string[]) => {\n dispatch({ type: 'delete_messages', value: { messageIds, reqIds } });\n };\n const updateNewMessages = (messages: SendbirdBaseMessage[], clearBeforeAction: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_new_messages', value: { messages, clearBeforeAction, currentUserId } });\n };\n const deleteNewMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_new_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 Array.from(new Set(Object.values(messageMap))).sort(sortComparator);\n return Array.from(new Set(Object.values(messageMap)));\n });\n const newMessages = Object.values(newMessageMap);\n\n return {\n updateLoading,\n updateRefreshing,\n updateMessages,\n deleteMessages,\n\n loading,\n refreshing,\n messages,\n\n newMessages,\n updateNewMessages,\n deleteNewMessages,\n };\n};\n"],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  import { Logger } from '@sendbird/uikit-utils';
2
2
  import { useGroupChannelListWithCollection } from './useGroupChannelListWithCollection';
3
3
  import { useGroupChannelListWithQuery } from './useGroupChannelListWithQuery';
4
+
5
+ /**
6
+ * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.
7
+ * */
4
8
  export const useGroupChannelList = (sdk, userId, options) => {
5
9
  if (sdk.isCacheEnabled || options !== null && options !== void 0 && options.enableCollectionWithoutLocalCache) {
6
10
  if (options !== null && options !== void 0 && options.queryCreator) Logger.warn('`queryCreator` is ignored, please use `collectionCreator` instead.');
@@ -1 +1 @@
1
- {"version":3,"names":["Logger","useGroupChannelListWithCollection","useGroupChannelListWithQuery","useGroupChannelList","sdk","userId","options","isCacheEnabled","enableCollectionWithoutLocalCache","queryCreator","warn"],"sources":["index.ts"],"sourcesContent":["import { Logger } from '@sendbird/uikit-utils';\n\nimport type { UseGroupChannelList } from '../../types';\nimport { useGroupChannelListWithCollection } from './useGroupChannelListWithCollection';\nimport { useGroupChannelListWithQuery } from './useGroupChannelListWithQuery';\n\nexport const useGroupChannelList: UseGroupChannelList = (sdk, userId, options) => {\n if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {\n if (options?.queryCreator) Logger.warn('`queryCreator` is ignored, please use `collectionCreator` instead.');\n return useGroupChannelListWithCollection(sdk, userId, options);\n } else {\n return useGroupChannelListWithQuery(sdk, userId, options);\n }\n};\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,uBAAuB;AAG9C,SAASC,iCAAiC,QAAQ,qCAAqC;AACvF,SAASC,4BAA4B,QAAQ,gCAAgC;AAE7E,OAAO,MAAMC,mBAAwC,GAAGA,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,KAAK;EAChF,IAAIF,GAAG,CAACG,cAAc,IAAID,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEE,iCAAiC,EAAE;IACpE,IAAIF,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEG,YAAY,EAAET,MAAM,CAACU,IAAI,CAAC,oEAAoE,CAAC;IAC5G,OAAOT,iCAAiC,CAACG,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAChE,CAAC,MAAM;IACL,OAAOJ,4BAA4B,CAACE,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAC3D;AACF,CAAC"}
1
+ {"version":3,"names":["Logger","useGroupChannelListWithCollection","useGroupChannelListWithQuery","useGroupChannelList","sdk","userId","options","isCacheEnabled","enableCollectionWithoutLocalCache","queryCreator","warn"],"sources":["index.ts"],"sourcesContent":["import { Logger } from '@sendbird/uikit-utils';\n\nimport type { UseGroupChannelList } from '../../types';\nimport { useGroupChannelListWithCollection } from './useGroupChannelListWithCollection';\nimport { useGroupChannelListWithQuery } from './useGroupChannelListWithQuery';\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.\n * */\nexport const useGroupChannelList: UseGroupChannelList = (sdk, userId, options) => {\n if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {\n if (options?.queryCreator) Logger.warn('`queryCreator` is ignored, please use `collectionCreator` instead.');\n return useGroupChannelListWithCollection(sdk, userId, options);\n } else {\n return useGroupChannelListWithQuery(sdk, userId, options);\n }\n};\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,uBAAuB;AAG9C,SAASC,iCAAiC,QAAQ,qCAAqC;AACvF,SAASC,4BAA4B,QAAQ,gCAAgC;;AAE7E;AACA;AACA;AACA,OAAO,MAAMC,mBAAwC,GAAGA,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,KAAK;EAChF,IAAIF,GAAG,CAACG,cAAc,IAAID,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEE,iCAAiC,EAAE;IACpE,IAAIF,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEG,YAAY,EAAET,MAAM,CAACU,IAAI,CAAC,oEAAoE,CAAC;IAC5G,OAAOT,iCAAiC,CAACG,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAChE,CAAC,MAAM;IACL,OAAOJ,4BAA4B,CAACE,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAC3D;AACF,CAAC"}
@@ -1,6 +1,10 @@
1
1
  import { Logger } from '@sendbird/uikit-utils';
2
2
  import { useGroupChannelMessagesWithCollection } from './useGroupChannelMessagesWithCollection';
3
3
  import { useGroupChannelMessagesWithQuery } from './useGroupChannelMessagesWithQuery';
4
+
5
+ /**
6
+ * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.
7
+ * */
4
8
  export const useGroupChannelMessages = (sdk, channel, userId, options) => {
5
9
  if (sdk.isCacheEnabled || options !== null && options !== void 0 && options.enableCollectionWithoutLocalCache) {
6
10
  if (options !== null && options !== void 0 && options.queryCreator) printIgnoredWarning();
@@ -1 +1 @@
1
- {"version":3,"names":["Logger","useGroupChannelMessagesWithCollection","useGroupChannelMessagesWithQuery","useGroupChannelMessages","sdk","channel","userId","options","isCacheEnabled","enableCollectionWithoutLocalCache","queryCreator","printIgnoredWarning","warn"],"sources":["index.ts"],"sourcesContent":["import { Logger } from '@sendbird/uikit-utils';\n\nimport type { UseGroupChannelMessages } from '../../types';\nimport { useGroupChannelMessagesWithCollection } from './useGroupChannelMessagesWithCollection';\nimport { useGroupChannelMessagesWithQuery } from './useGroupChannelMessagesWithQuery';\n\nexport const useGroupChannelMessages: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {\n if (options?.queryCreator) printIgnoredWarning();\n return useGroupChannelMessagesWithCollection(sdk, channel, userId, options);\n } else {\n return useGroupChannelMessagesWithQuery(sdk, channel, userId, options);\n }\n};\n\nconst printIgnoredWarning = () => {\n Logger.warn(\n 'If sdk.isCacheEnabled or enableCollectionWithoutLocalCache is turned on, queryCreator is ignored' +\n 'Please use collectionCreator instead.',\n );\n};\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,uBAAuB;AAG9C,SAASC,qCAAqC,QAAQ,yCAAyC;AAC/F,SAASC,gCAAgC,QAAQ,oCAAoC;AAErF,OAAO,MAAMC,uBAAgD,GAAGA,CAACC,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,KAAK;EACjG,IAAIH,GAAG,CAACI,cAAc,IAAID,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEE,iCAAiC,EAAE;IACpE,IAAIF,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEG,YAAY,EAAEC,mBAAmB,EAAE;IAChD,OAAOV,qCAAqC,CAACG,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAC7E,CAAC,MAAM;IACL,OAAOL,gCAAgC,CAACE,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,CAAC;EACxE;AACF,CAAC;AAED,MAAMI,mBAAmB,GAAGA,CAAA,KAAM;EAChCX,MAAM,CAACY,IAAI,CACT,kGAAkG,GAChG,uCAAuC,CAC1C;AACH,CAAC"}
1
+ {"version":3,"names":["Logger","useGroupChannelMessagesWithCollection","useGroupChannelMessagesWithQuery","useGroupChannelMessages","sdk","channel","userId","options","isCacheEnabled","enableCollectionWithoutLocalCache","queryCreator","printIgnoredWarning","warn"],"sources":["index.ts"],"sourcesContent":["import { Logger } from '@sendbird/uikit-utils';\n\nimport type { UseGroupChannelMessages } from '../../types';\nimport { useGroupChannelMessagesWithCollection } from './useGroupChannelMessagesWithCollection';\nimport { useGroupChannelMessagesWithQuery } from './useGroupChannelMessagesWithQuery';\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.\n * */\nexport const useGroupChannelMessages: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {\n if (options?.queryCreator) printIgnoredWarning();\n return useGroupChannelMessagesWithCollection(sdk, channel, userId, options);\n } else {\n return useGroupChannelMessagesWithQuery(sdk, channel, userId, options);\n }\n};\n\nconst printIgnoredWarning = () => {\n Logger.warn(\n 'If sdk.isCacheEnabled or enableCollectionWithoutLocalCache is turned on, queryCreator is ignored' +\n 'Please use collectionCreator instead.',\n );\n};\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,uBAAuB;AAG9C,SAASC,qCAAqC,QAAQ,yCAAyC;AAC/F,SAASC,gCAAgC,QAAQ,oCAAoC;;AAErF;AACA;AACA;AACA,OAAO,MAAMC,uBAAgD,GAAGA,CAACC,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,KAAK;EACjG,IAAIH,GAAG,CAACI,cAAc,IAAID,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEE,iCAAiC,EAAE;IACpE,IAAIF,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEG,YAAY,EAAEC,mBAAmB,EAAE;IAChD,OAAOV,qCAAqC,CAACG,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAC7E,CAAC,MAAM;IACL,OAAOL,gCAAgC,CAACE,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,CAAC;EACxE;AACF,CAAC;AAED,MAAMI,mBAAmB,GAAGA,CAAA,KAAM;EAChCX,MAAM,CAACY,IAAI,CACT,kGAAkG,GAChG,uCAAuC,CAC1C;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"names":["useRef","ASYNC_NOOP","Logger","confirmAndMarkAsRead","isDifferentChannel","isMyMessage","useAsyncEffect","useForceUpdate","useFreshCallback","useUniqHandlerId","useChannelHandler","useChannelMessagesReducer","createMessageQuery","channel","options","queryCreator","params","limit","reverse","replyType","createPreviousMessageListQuery","useGroupChannelMessagesWithQuery","sdk","userId","queryRef","handlerId","forceUpdate","loading","refreshing","messages","newMessages","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAsRead","e","warn","init","uid","_sdk$currentUser","_queryRef$current","currentUser","current","hasNext","_queryRef$current2","_sdk$currentUser2","list","load","channelUpdater","isGroupChannel","onMessageReceived","eventChannel","message","_sdk$currentUser3","_sdk$currentUser4","_options$shouldCountN","shouldCountNewMessages","call","_sdk$currentUser5","onMessagesReceived","onMessageUpdated","_sdk$currentUser6","_sdk$currentUser7","onMessageDeleted","messageId","onReactionUpdated","reactionEvent","_sdk$currentUser8","getMessage","includeReactions","includeParentMessageInfo","includeThreadInfo","includeMetaArray","channelUrl","url","channelType","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","foundChannel","find","c","onChannelDeleted","_options$onChannelDel","onOperatorUpdated","onUserLeft","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_sdk$currentUser9","_options$onChannelDel2","refresh","prev","_queryRef$current3","_queryRef$current4","_sdk$currentUser10","hasPrev","_queryRef$current5","next","sendUserMessage","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser11","onSucceeded","sentMessage","_sdk$currentUser12","onFailed","err","failedMessage","_sdk$currentUser13","sendFileMessage","isFileMessage","_sdk$currentUser14","_sdk$currentUser15","_sdk$currentUser16","updateUserMessage","_sdk$currentUser17","updatedMessage","updateFileMessage","_sdk$currentUser18","resendMessage","_sdk$currentUser19","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","_sdk$currentUser20","resetWithStartingPoint"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { PreviousMessageListQueryParams } from '@sendbird/chat/message';\nimport type {\n SendbirdBaseChannel,\n SendbirdGroupChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n ASYNC_NOOP,\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n isMyMessage,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useChannelMessagesReducer } from '../useChannelMessagesReducer';\n\nconst createMessageQuery = (channel: SendbirdGroupChannel, options?: UseGroupChannelMessagesOptions) => {\n if (options?.queryCreator) return options.queryCreator();\n\n const params: PreviousMessageListQueryParams = { limit: 100, reverse: true };\n if (options?.replyType) params.replyType = options.replyType;\n\n return channel.createPreviousMessageListQuery(params);\n};\n\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithQuery');\n\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n deleteMessages,\n updateNewMessages,\n deleteNewMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const channelMarkAsRead = async () => {\n try {\n await confirmAndMarkAsRead([channel]);\n } catch (e) {\n Logger.warn('[useGroupChannelMessagesWithQuery/channelMarkAsRead]', e);\n }\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n channelMarkAsRead();\n updateNewMessages([], true, sdk.currentUser?.userId);\n\n queryRef.current = createMessageQuery(channel, options);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser?.userId);\n }\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, handlerId, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser?.userId)) return;\n\n channelMarkAsRead();\n\n updateMessages([message], false, sdk.currentUser?.userId);\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages([message], false, sdk.currentUser?.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived([message]);\n }\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser?.userId)) return;\n\n updateMessages([message], false, sdk.currentUser?.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNewMessages([messageId], []);\n },\n async onReactionUpdated(eventChannel, reactionEvent) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n const message = await sdk.message.getMessage({\n messageId: reactionEvent.messageId,\n includeReactions: true,\n includeParentMessageInfo: true,\n includeThreadInfo: true,\n includeMetaArray: true,\n channelUrl: channel.url,\n channelType: channel.channelType,\n });\n if (message) updateMessages([message], false, sdk.currentUser?.userId);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const foundChannel = channels.find((c) => !isDifferentChannel(c, channel));\n if (foundChannel) channelUpdater(foundChannel);\n },\n onChannelDeleted(channelUrl: string) {\n if (channel.url === channelUrl) options?.onChannelDeleted?.();\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserLeft: channelUpdater,\n // onUserEntered: channelUpdater,\n // onUserExited: channelUpdater,\n onUserJoined: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser?.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useFreshCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser?.userId);\n }\n });\n const hasPrev: ReturnType<UseGroupChannelMessages>['hasPrev'] = useFreshCallback(\n () => queryRef.current?.hasNext ?? false,\n );\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(ASYNC_NOOP);\n const hasNext: ReturnType<UseGroupChannelMessages>['hasNext'] = useFreshCallback(() => false);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\n reject(err);\n });\n });\n },\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\n reject(err);\n });\n });\n },\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser?.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser?.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useFreshCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser?.userId);\n },\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n });\n const resetNewMessages: ReturnType<UseGroupChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser?.userId);\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n newMessages,\n resetNewMessages,\n next,\n hasNext,\n prev,\n hasPrev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint() {\n Logger.warn('resetWithStartingPoint is not supported in Query, please use Collection instead.');\n },\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["useRef","ASYNC_NOOP","Logger","confirmAndMarkAsRead","isDifferentChannel","isMyMessage","useAsyncEffect","useForceUpdate","useFreshCallback","useUniqHandlerId","useChannelHandler","useChannelMessagesReducer","createMessageQuery","channel","options","queryCreator","params","limit","reverse","replyType","createPreviousMessageListQuery","useGroupChannelMessagesWithQuery","sdk","userId","queryRef","handlerId","forceUpdate","loading","refreshing","messages","newMessages","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAsRead","e","warn","init","uid","_sdk$currentUser","_queryRef$current","currentUser","current","hasNext","_queryRef$current2","_sdk$currentUser2","list","load","channelUpdater","isGroupChannel","onMessageReceived","eventChannel","message","_sdk$currentUser3","_sdk$currentUser4","_options$shouldCountN","shouldCountNewMessages","call","_sdk$currentUser5","onMessagesReceived","onMessageUpdated","_sdk$currentUser6","_sdk$currentUser7","onMessageDeleted","messageId","onReactionUpdated","reactionEvent","_sdk$currentUser8","getMessage","includeReactions","includeParentMessageInfo","includeThreadInfo","includeMetaArray","channelUrl","url","channelType","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","foundChannel","find","c","onChannelDeleted","_options$onChannelDel","onOperatorUpdated","onUserLeft","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_sdk$currentUser9","_options$onChannelDel2","refresh","prev","_queryRef$current3","_queryRef$current4","_sdk$currentUser10","hasPrev","_queryRef$current5","next","sendUserMessage","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser11","onSucceeded","sentMessage","_sdk$currentUser12","onFailed","err","failedMessage","_sdk$currentUser13","sendFileMessage","isFileMessage","_sdk$currentUser14","_sdk$currentUser15","_sdk$currentUser16","updateUserMessage","_sdk$currentUser17","updatedMessage","updateFileMessage","_sdk$currentUser18","resendMessage","_sdk$currentUser19","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","_sdk$currentUser20","resetWithStartingPoint"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { BaseMessage, PreviousMessageListQueryParams } from '@sendbird/chat/message';\nimport type {\n SendbirdBaseChannel,\n SendbirdGroupChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n ASYNC_NOOP,\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n isMyMessage,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useChannelMessagesReducer } from '../useChannelMessagesReducer';\n\nconst createMessageQuery = (channel: SendbirdGroupChannel, options?: UseGroupChannelMessagesOptions) => {\n if (options?.queryCreator) return options.queryCreator();\n\n const params: PreviousMessageListQueryParams = { limit: 100, reverse: true };\n if (options?.replyType) params.replyType = options.replyType;\n\n return channel.createPreviousMessageListQuery(params);\n};\n\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithQuery');\n\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n deleteMessages,\n updateNewMessages,\n deleteNewMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const channelMarkAsRead = async () => {\n try {\n await confirmAndMarkAsRead([channel]);\n } catch (e) {\n Logger.warn('[useGroupChannelMessagesWithQuery/channelMarkAsRead]', e);\n }\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n channelMarkAsRead();\n updateNewMessages([], true, sdk.currentUser?.userId);\n\n queryRef.current = createMessageQuery(channel, options);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser?.userId);\n }\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, handlerId, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser?.userId)) return;\n\n channelMarkAsRead();\n\n updateMessages([message], false, sdk.currentUser?.userId);\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages([message], false, sdk.currentUser?.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived([message]);\n }\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser?.userId)) return;\n\n updateMessages([message], false, sdk.currentUser?.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNewMessages([messageId], []);\n },\n async onReactionUpdated(eventChannel, reactionEvent) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n const message = await sdk.message.getMessage({\n messageId: reactionEvent.messageId,\n includeReactions: true,\n includeParentMessageInfo: true,\n includeThreadInfo: true,\n includeMetaArray: true,\n channelUrl: channel.url,\n channelType: channel.channelType,\n });\n if (message) updateMessages([message as BaseMessage], false, sdk.currentUser?.userId);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const foundChannel = channels.find((c) => !isDifferentChannel(c, channel));\n if (foundChannel) channelUpdater(foundChannel);\n },\n onChannelDeleted(channelUrl: string) {\n if (channel.url === channelUrl) options?.onChannelDeleted?.();\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserLeft: channelUpdater,\n // onUserEntered: channelUpdater,\n // onUserExited: channelUpdater,\n onUserJoined: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser?.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useFreshCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser?.userId);\n }\n });\n const hasPrev: ReturnType<UseGroupChannelMessages>['hasPrev'] = useFreshCallback(\n () => queryRef.current?.hasNext ?? false,\n );\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(ASYNC_NOOP);\n const hasNext: ReturnType<UseGroupChannelMessages>['hasNext'] = useFreshCallback(() => false);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\n reject(err);\n });\n });\n },\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\n reject(err);\n });\n });\n },\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser?.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser?.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useFreshCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser?.userId);\n },\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n });\n const resetNewMessages: ReturnType<UseGroupChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser?.userId);\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n newMessages,\n resetNewMessages,\n next,\n hasNext,\n prev,\n hasPrev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetWithStartingPoint() {\n Logger.warn('resetWithStartingPoint is not supported in Query, please use Collection instead.');\n },\n };\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["useRef","ASYNC_NOOP","NOOP","isDifferentChannel","isMyMessage","useAsyncEffect","useForceUpdate","useFreshCallback","useUniqHandlerId","useChannelHandler","useConnectionHandler","useChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useOpenChannelMessagesWithQuery","sdk","userId","options","queryRef","forceUpdate","handlerId","loading","refreshing","messages","newMessages","updateMessages","updateNewMessages","deleteNewMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","init","uid","_queryRef$current","_sdk$currentUser2","current","queryCreator","hasNext","_queryRef$current2","_sdk$currentUser","list","load","currentUser","channelUpdater","isOpenChannel","onReconnectSucceeded","_queryRef$current3","_queryRef$current4","_queryRef$current5","_queryRef$current6","_queryRef$current7","_queryRef$current8","_queryRef$current9","_queryRef$current10","_queryRef$current11","_queryRef$current12","_queryRef$current13","_queryRef$current14","_queryRef$current15","_queryRef$current16","_queryRef$current17","_queryRef$current18","_sdk$currentUser3","lastMessage","messageContext","updatedMessages","addedMessages","deletedMessageIds","changeLogsContext","hasMore","token","messageQueryContext","timestamp","createdAt","changelogsParams","replyType","includeMetaArray","includeReactions","includeThreadInfo","includeParentMessageInfo","changeLogsByTS","getMessageChangeLogsSinceTimestamp","push","changeLogsByToken","getMessageChangeLogsSinceToken","messageQueryParams","prevResultSize","nextResultSize","customTypesFilter","messageTypeFilter","senderUserIdsFilter","showSubchannelMessagesOnly","queriedMessages","getMessagesByTimestamp","length","unshift","_options$shouldCountN","shouldCountNewMessages","call","_sdk$currentUser4","onMessagesReceived","onMessageReceived","eventChannel","message","_sdk$currentUser5","_sdk$currentUser6","_options$shouldCountN2","_sdk$currentUser7","onMessageUpdated","_sdk$currentUser8","_sdk$currentUser9","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelParticipantCountChanged","onChannelDeleted","channelUrl","type","url","_options$onChannelDel","onOperatorUpdated","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_sdk$currentUser10","_options$onChannelDel2","enter","error","_options$onError","_options$onChannelDel3","onError","exit","catch","refresh","prev","_queryRef$current19","_queryRef$current20","_sdk$currentUser11","hasPrev","_queryRef$current21","next","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser12","onSucceeded","sentMessage","_sdk$currentUser13","onFailed","err","failedMessage","_sdk$currentUser14","sendFileMessage","isFileMessage","_sdk$currentUser15","_sdk$currentUser16","_sdk$currentUser17","updateUserMessage","_sdk$currentUser18","updatedMessage","updateFileMessage","_sdk$currentUser19","resendMessage","_sdk$currentUser20","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","_sdk$currentUser21"],"sources":["useOpenChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport { MessageListParams } from '@sendbird/chat/message';\nimport type {\n SendbirdBaseChannel,\n SendbirdBaseMessage,\n SendbirdOpenChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n ASYNC_NOOP,\n NOOP,\n isDifferentChannel,\n isMyMessage,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport { useConnectionHandler } from '../../handler/useConnectionHandler';\nimport type { UseOpenChannelMessages, UseOpenChannelMessagesOptions } from '../../types';\nimport { useChannelMessagesReducer } from '../useChannelMessagesReducer';\n\nconst createMessageQuery = (channel: SendbirdOpenChannel, creator?: UseOpenChannelMessagesOptions['queryCreator']) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nexport const useOpenChannelMessagesWithQuery: UseOpenChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const forceUpdate = useForceUpdate();\n const handlerId = useUniqHandlerId('useOpenChannelMessagesWithQuery');\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n updateNewMessages,\n deleteNewMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n\n updateMessages(list, true, sdk.currentUser?.userId);\n }\n updateNewMessages([], true, sdk.currentUser?.userId);\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isOpenChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useConnectionHandler(sdk, handlerId, {\n async onReconnectSucceeded() {\n const lastMessage = messages[0];\n if (!lastMessage) return;\n\n const messageContext = {\n updatedMessages: [] as SendbirdBaseMessage[],\n addedMessages: [] as SendbirdBaseMessage[],\n deletedMessageIds: [] as number[],\n };\n const changeLogsContext = {\n hasMore: false,\n token: '',\n };\n const messageQueryContext = {\n hasMore: false,\n timestamp: lastMessage.createdAt,\n };\n\n // Updated & Deleted messages\n const changelogsParams = {\n replyType: queryRef.current?.replyType,\n includeMetaArray: queryRef.current?.includeMetaArray,\n includeReactions: queryRef.current?.includeReactions,\n includeThreadInfo: queryRef.current?.includeThreadInfo,\n includeParentMessageInfo: queryRef.current?.includeParentMessageInfo,\n };\n\n const changeLogsByTS = await channel.getMessageChangeLogsSinceTimestamp(lastMessage.createdAt);\n changeLogsContext.token = changeLogsByTS.token;\n changeLogsContext.hasMore = changeLogsByTS.hasMore;\n messageContext.updatedMessages.push(...changeLogsByTS.updatedMessages);\n messageContext.deletedMessageIds.push(...changeLogsByTS.deletedMessageIds);\n\n while (changeLogsContext.hasMore) {\n const changeLogsByToken = await channel.getMessageChangeLogsSinceToken(changeLogsByTS.token, changelogsParams);\n changeLogsContext.token = changeLogsByToken.token;\n changeLogsContext.hasMore = changeLogsByToken.hasMore;\n messageContext.updatedMessages.push(...changeLogsByToken.updatedMessages);\n messageContext.deletedMessageIds.push(...changeLogsByToken.deletedMessageIds);\n }\n\n // Added messages\n const messageQueryParams: MessageListParams = {\n prevResultSize: 0,\n nextResultSize: queryRef.current?.limit ?? 100,\n reverse: queryRef.current?.reverse,\n includeParentMessageInfo: queryRef.current?.includeParentMessageInfo,\n includeThreadInfo: queryRef.current?.includeThreadInfo,\n includeReactions: queryRef.current?.includeReactions,\n includeMetaArray: queryRef.current?.includeMetaArray,\n replyType: queryRef.current?.replyType,\n customTypesFilter: queryRef.current?.customTypesFilter as never,\n messageTypeFilter: queryRef.current?.messageTypeFilter,\n senderUserIdsFilter: queryRef.current?.senderUserIdsFilter as never,\n showSubchannelMessagesOnly: queryRef.current?.showSubchannelMessagesOnly,\n };\n\n const queriedMessages = await channel.getMessagesByTimestamp(lastMessage.createdAt, messageQueryParams);\n messageQueryContext.hasMore = queriedMessages.length > 0;\n if (messageQueryContext.hasMore) {\n messageQueryContext.timestamp = queriedMessages[0].createdAt;\n messageContext.addedMessages.unshift(...queriedMessages);\n }\n\n while (messageQueryContext.hasMore) {\n const queriedMessages = await channel.getMessagesByTimestamp(messageQueryContext.timestamp, messageQueryParams);\n messageQueryContext.hasMore = queriedMessages.length > 0;\n if (messageQueryContext.hasMore) {\n messageQueryContext.timestamp = queriedMessages[0].createdAt;\n messageContext.addedMessages.unshift(...queriedMessages);\n }\n }\n\n // Update to View\n updateMessages(\n [...messageContext.addedMessages, ...messageContext.updatedMessages],\n false,\n sdk.currentUser?.userId,\n );\n deleteMessages(messageContext.deletedMessageIds, []);\n\n if (messageContext.addedMessages.length > 0) {\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages(messageContext.addedMessages, false, sdk.currentUser?.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived(messageContext.addedMessages);\n }\n }\n },\n });\n\n useChannelHandler(\n sdk,\n handlerId,\n {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser?.userId)) return;\n\n updateMessages([message], false, sdk.currentUser?.userId);\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages([message], false, sdk.currentUser?.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived([message]);\n }\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser?.userId)) return;\n\n updateMessages([message], false, sdk.currentUser?.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNewMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelParticipantCountChanged(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n channelUpdater(eventChannel);\n },\n onChannelDeleted(channelUrl, type) {\n if (channel.url === channelUrl && type === 'open') {\n options?.onChannelDeleted?.();\n }\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser?.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n },\n 'open',\n );\n\n useAsyncEffect(async () => {\n updateLoading(true);\n\n try {\n await channel.enter();\n await init(userId);\n } catch (error) {\n options?.onError?.(error);\n options?.onChannelDeleted?.();\n } finally {\n updateLoading(false);\n }\n\n return () => {\n channel.exit().catch(NOOP);\n };\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseOpenChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseOpenChannelMessages>['prev'] = useFreshCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser?.userId);\n }\n });\n const hasPrev: ReturnType<UseOpenChannelMessages>['hasPrev'] = useFreshCallback(\n () => queryRef.current?.hasNext ?? false,\n );\n\n const next: ReturnType<UseOpenChannelMessages>['next'] = useFreshCallback(ASYNC_NOOP);\n const hasNext: ReturnType<UseOpenChannelMessages>['hasNext'] = useFreshCallback(() => false);\n\n const sendUserMessage: ReturnType<UseOpenChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\n reject(err);\n });\n });\n },\n );\n\n const sendFileMessage: ReturnType<UseOpenChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\n reject(err);\n });\n });\n },\n );\n\n const updateUserMessage: ReturnType<UseOpenChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser?.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseOpenChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser?.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseOpenChannelMessages>['resendMessage'] = useFreshCallback(async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser?.userId);\n });\n const deleteMessage: ReturnType<UseOpenChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n });\n const resetNewMessages: ReturnType<UseOpenChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser?.userId);\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n newMessages,\n next,\n hasNext,\n prev,\n hasPrev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetNewMessages,\n };\n};\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,OAAO;AAS9B,SACEC,UAAU,EACVC,IAAI,EACJC,kBAAkB,EAClBC,WAAW,EACXC,cAAc,EACdC,cAAc,EACdC,gBAAgB,EAChBC,gBAAgB,QACX,uBAAuB;AAE9B,SAASC,iBAAiB,QAAQ,iCAAiC;AACnE,SAASC,oBAAoB,QAAQ,oCAAoC;AAEzE,SAASC,yBAAyB,QAAQ,8BAA8B;AAExE,MAAMC,kBAAkB,GAAGA,CAACC,OAA4B,EAAEC,OAAuD,KAAK;EACpH,IAAIA,OAAO,EAAE,OAAOA,OAAO,EAAE;EAC7B,OAAOD,OAAO,CAACE,8BAA8B,CAAC;IAC5CC,KAAK,EAAE,GAAG;IACVC,OAAO,EAAE;EACX,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,MAAMC,+BAAuD,GAAGA,CAACC,GAAG,EAAEN,OAAO,EAAEO,MAAM,EAAEC,OAAO,KAAK;EACxG,MAAMC,QAAQ,GAAGtB,MAAM,EAAoC;EAC3D,MAAMuB,WAAW,GAAGjB,cAAc,EAAE;EACpC,MAAMkB,SAAS,GAAGhB,gBAAgB,CAAC,iCAAiC,CAAC;EAErE,MAAM;IACJiB,OAAO;IACPC,UAAU;IACVC,QAAQ;IACRC,WAAW;IACXC,cAAc;IACdC,iBAAiB;IACjBC,iBAAiB;IACjBC,cAAc;IACdC,aAAa;IACbC;EACF,CAAC,GAAGvB,yBAAyB,CAACU,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEc,cAAc,CAAC;EAEtD,MAAMC,IAAI,GAAG7B,gBAAgB,CAAC,MAAO8B,GAAY,IAAK;IACpD,IAAIA,GAAG,EAAE;MAAA,IAAAC,iBAAA,EAAAC,iBAAA;MACPjB,QAAQ,CAACkB,OAAO,GAAG5B,kBAAkB,CAACC,OAAO,EAAEQ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEoB,YAAY,CAAC;MACrE,KAAAH,iBAAA,GAAIhB,QAAQ,CAACkB,OAAO,cAAAF,iBAAA,eAAhBA,iBAAA,CAAkBI,OAAO,EAAE;QAAA,IAAAC,kBAAA,EAAAC,gBAAA;QAC7B,MAAMC,IAAI,GAAG,QAAAF,kBAAA,GAAMrB,QAAQ,CAACkB,OAAO,cAAAG,kBAAA,uBAAhBA,kBAAA,CAAkBG,IAAI,EAAE;QAE3CjB,cAAc,CAACgB,IAAI,EAAE,IAAI,GAAAD,gBAAA,GAAEzB,GAAG,CAAC4B,WAAW,cAAAH,gBAAA,uBAAfA,gBAAA,CAAiBxB,MAAM,CAAC;MACrD;MACAU,iBAAiB,CAAC,EAAE,EAAE,IAAI,GAAAS,iBAAA,GAAEpB,GAAG,CAAC4B,WAAW,cAAAR,iBAAA,uBAAfA,iBAAA,CAAiBnB,MAAM,CAAC;IACtD;EACF,CAAC,CAAC;EAEF,MAAM4B,cAAc,GAAInC,OAA4B,IAAK;IACvD,IAAIA,OAAO,CAACoC,aAAa,EAAE,IAAI,CAAC9C,kBAAkB,CAACU,OAAO,EAAEA,OAAO,CAAC,EAAE;MACpEU,WAAW,EAAE;IACf;EACF,CAAC;EAEDb,oBAAoB,CAACS,GAAG,EAAEK,SAAS,EAAE;IACnC,MAAM0B,oBAAoBA,CAAA,EAAG;MAAA,IAAAC,kBAAA,EAAAC,kBAAA,EAAAC,kBAAA,EAAAC,kBAAA,EAAAC,kBAAA,EAAAC,kBAAA,EAAAC,kBAAA,EAAAC,mBAAA,EAAAC,mBAAA,EAAAC,mBAAA,EAAAC,mBAAA,EAAAC,mBAAA,EAAAC,mBAAA,EAAAC,mBAAA,EAAAC,mBAAA,EAAAC,mBAAA,EAAAC,iBAAA;MAC3B,MAAMC,WAAW,GAAGzC,QAAQ,CAAC,CAAC,CAAC;MAC/B,IAAI,CAACyC,WAAW,EAAE;MAElB,MAAMC,cAAc,GAAG;QACrBC,eAAe,EAAE,EAA2B;QAC5CC,aAAa,EAAE,EAA2B;QAC1CC,iBAAiB,EAAE;MACrB,CAAC;MACD,MAAMC,iBAAiB,GAAG;QACxBC,OAAO,EAAE,KAAK;QACdC,KAAK,EAAE;MACT,CAAC;MACD,MAAMC,mBAAmB,GAAG;QAC1BF,OAAO,EAAE,KAAK;QACdG,SAAS,EAAET,WAAW,CAACU;MACzB,CAAC;;MAED;MACA,MAAMC,gBAAgB,GAAG;QACvBC,SAAS,GAAA7B,kBAAA,GAAE7B,QAAQ,CAACkB,OAAO,cAAAW,kBAAA,uBAAhBA,kBAAA,CAAkB6B,SAAS;QACtCC,gBAAgB,GAAA7B,kBAAA,GAAE9B,QAAQ,CAACkB,OAAO,cAAAY,kBAAA,uBAAhBA,kBAAA,CAAkB6B,gBAAgB;QACpDC,gBAAgB,GAAA7B,kBAAA,GAAE/B,QAAQ,CAACkB,OAAO,cAAAa,kBAAA,uBAAhBA,kBAAA,CAAkB6B,gBAAgB;QACpDC,iBAAiB,GAAA7B,kBAAA,GAAEhC,QAAQ,CAACkB,OAAO,cAAAc,kBAAA,uBAAhBA,kBAAA,CAAkB6B,iBAAiB;QACtDC,wBAAwB,GAAA7B,kBAAA,GAAEjC,QAAQ,CAACkB,OAAO,cAAAe,kBAAA,uBAAhBA,kBAAA,CAAkB6B;MAC9C,CAAC;MAED,MAAMC,cAAc,GAAG,MAAMxE,OAAO,CAACyE,kCAAkC,CAAClB,WAAW,CAACU,SAAS,CAAC;MAC9FL,iBAAiB,CAACE,KAAK,GAAGU,cAAc,CAACV,KAAK;MAC9CF,iBAAiB,CAACC,OAAO,GAAGW,cAAc,CAACX,OAAO;MAClDL,cAAc,CAACC,eAAe,CAACiB,IAAI,CAAC,GAAGF,cAAc,CAACf,eAAe,CAAC;MACtED,cAAc,CAACG,iBAAiB,CAACe,IAAI,CAAC,GAAGF,cAAc,CAACb,iBAAiB,CAAC;MAE1E,OAAOC,iBAAiB,CAACC,OAAO,EAAE;QAChC,MAAMc,iBAAiB,GAAG,MAAM3E,OAAO,CAAC4E,8BAA8B,CAACJ,cAAc,CAACV,KAAK,EAAEI,gBAAgB,CAAC;QAC9GN,iBAAiB,CAACE,KAAK,GAAGa,iBAAiB,CAACb,KAAK;QACjDF,iBAAiB,CAACC,OAAO,GAAGc,iBAAiB,CAACd,OAAO;QACrDL,cAAc,CAACC,eAAe,CAACiB,IAAI,CAAC,GAAGC,iBAAiB,CAAClB,eAAe,CAAC;QACzED,cAAc,CAACG,iBAAiB,CAACe,IAAI,CAAC,GAAGC,iBAAiB,CAAChB,iBAAiB,CAAC;MAC/E;;MAEA;MACA,MAAMkB,kBAAqC,GAAG;QAC5CC,cAAc,EAAE,CAAC;QACjBC,cAAc,EAAE,EAAApC,kBAAA,GAAAlC,QAAQ,CAACkB,OAAO,cAAAgB,kBAAA,uBAAhBA,kBAAA,CAAkBxC,KAAK,KAAI,GAAG;QAC9CC,OAAO,GAAAwC,kBAAA,GAAEnC,QAAQ,CAACkB,OAAO,cAAAiB,kBAAA,uBAAhBA,kBAAA,CAAkBxC,OAAO;QAClCmE,wBAAwB,GAAA1B,mBAAA,GAAEpC,QAAQ,CAACkB,OAAO,cAAAkB,mBAAA,uBAAhBA,mBAAA,CAAkB0B,wBAAwB;QACpED,iBAAiB,GAAAxB,mBAAA,GAAErC,QAAQ,CAACkB,OAAO,cAAAmB,mBAAA,uBAAhBA,mBAAA,CAAkBwB,iBAAiB;QACtDD,gBAAgB,GAAAtB,mBAAA,GAAEtC,QAAQ,CAACkB,OAAO,cAAAoB,mBAAA,uBAAhBA,mBAAA,CAAkBsB,gBAAgB;QACpDD,gBAAgB,GAAApB,mBAAA,GAAEvC,QAAQ,CAACkB,OAAO,cAAAqB,mBAAA,uBAAhBA,mBAAA,CAAkBoB,gBAAgB;QACpDD,SAAS,GAAAlB,mBAAA,GAAExC,QAAQ,CAACkB,OAAO,cAAAsB,mBAAA,uBAAhBA,mBAAA,CAAkBkB,SAAS;QACtCa,iBAAiB,GAAA9B,mBAAA,GAAEzC,QAAQ,CAACkB,OAAO,cAAAuB,mBAAA,uBAAhBA,mBAAA,CAAkB8B,iBAA0B;QAC/DC,iBAAiB,GAAA9B,mBAAA,GAAE1C,QAAQ,CAACkB,OAAO,cAAAwB,mBAAA,uBAAhBA,mBAAA,CAAkB8B,iBAAiB;QACtDC,mBAAmB,GAAA9B,mBAAA,GAAE3C,QAAQ,CAACkB,OAAO,cAAAyB,mBAAA,uBAAhBA,mBAAA,CAAkB8B,mBAA4B;QACnEC,0BAA0B,GAAA9B,mBAAA,GAAE5C,QAAQ,CAACkB,OAAO,cAAA0B,mBAAA,uBAAhBA,mBAAA,CAAkB8B;MAChD,CAAC;MAED,MAAMC,eAAe,GAAG,MAAMpF,OAAO,CAACqF,sBAAsB,CAAC9B,WAAW,CAACU,SAAS,EAAEY,kBAAkB,CAAC;MACvGd,mBAAmB,CAACF,OAAO,GAAGuB,eAAe,CAACE,MAAM,GAAG,CAAC;MACxD,IAAIvB,mBAAmB,CAACF,OAAO,EAAE;QAC/BE,mBAAmB,CAACC,SAAS,GAAGoB,eAAe,CAAC,CAAC,CAAC,CAACnB,SAAS;QAC5DT,cAAc,CAACE,aAAa,CAAC6B,OAAO,CAAC,GAAGH,eAAe,CAAC;MAC1D;MAEA,OAAOrB,mBAAmB,CAACF,OAAO,EAAE;QAClC,MAAMuB,eAAe,GAAG,MAAMpF,OAAO,CAACqF,sBAAsB,CAACtB,mBAAmB,CAACC,SAAS,EAAEa,kBAAkB,CAAC;QAC/Gd,mBAAmB,CAACF,OAAO,GAAGuB,eAAe,CAACE,MAAM,GAAG,CAAC;QACxD,IAAIvB,mBAAmB,CAACF,OAAO,EAAE;UAC/BE,mBAAmB,CAACC,SAAS,GAAGoB,eAAe,CAAC,CAAC,CAAC,CAACnB,SAAS;UAC5DT,cAAc,CAACE,aAAa,CAAC6B,OAAO,CAAC,GAAGH,eAAe,CAAC;QAC1D;MACF;;MAEA;MACApE,cAAc,CACZ,CAAC,GAAGwC,cAAc,CAACE,aAAa,EAAE,GAAGF,cAAc,CAACC,eAAe,CAAC,EACpE,KAAK,GAAAH,iBAAA,GACLhD,GAAG,CAAC4B,WAAW,cAAAoB,iBAAA,uBAAfA,iBAAA,CAAiB/C,MAAM,CACxB;MACDY,cAAc,CAACqC,cAAc,CAACG,iBAAiB,EAAE,EAAE,CAAC;MAEpD,IAAIH,cAAc,CAACE,aAAa,CAAC4B,MAAM,GAAG,CAAC,EAAE;QAAA,IAAAE,qBAAA;QAC3C,IAAIhF,OAAO,aAAPA,OAAO,gBAAAgF,qBAAA,GAAPhF,OAAO,CAAEiF,sBAAsB,cAAAD,qBAAA,eAA/BA,qBAAA,CAAAE,IAAA,CAAAlF,OAAO,CAA4B,EAAE;UAAA,IAAAmF,iBAAA;UACvC1E,iBAAiB,CAACuC,cAAc,CAACE,aAAa,EAAE,KAAK,GAAAiC,iBAAA,GAAErF,GAAG,CAAC4B,WAAW,cAAAyD,iBAAA,uBAAfA,iBAAA,CAAiBpF,MAAM,CAAC;QACjF;QACA,IAAIC,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEoF,kBAAkB,EAAE;UAC/BpF,OAAO,CAACoF,kBAAkB,CAACpC,cAAc,CAACE,aAAa,CAAC;QAC1D;MACF;IACF;EACF,CAAC,CAAC;EAEF9D,iBAAiB,CACfU,GAAG,EACHK,SAAS,EACT;IACE;IACAkF,iBAAiBA,CAACC,YAAY,EAAEC,OAAO,EAAE;MAAA,IAAAC,iBAAA,EAAAC,iBAAA,EAAAC,sBAAA;MACvC,IAAI5G,kBAAkB,CAACU,OAAO,EAAE8F,YAAY,CAAC,EAAE;MAC/C,IAAIvG,WAAW,CAACwG,OAAO,GAAAC,iBAAA,GAAE1F,GAAG,CAAC4B,WAAW,cAAA8D,iBAAA,uBAAfA,iBAAA,CAAiBzF,MAAM,CAAC,EAAE;MAEnDS,cAAc,CAAC,CAAC+E,OAAO,CAAC,EAAE,KAAK,GAAAE,iBAAA,GAAE3F,GAAG,CAAC4B,WAAW,cAAA+D,iBAAA,uBAAfA,iBAAA,CAAiB1F,MAAM,CAAC;MACzD,IAAIC,OAAO,aAAPA,OAAO,gBAAA0F,sBAAA,GAAP1F,OAAO,CAAEiF,sBAAsB,cAAAS,sBAAA,eAA/BA,sBAAA,CAAAR,IAAA,CAAAlF,OAAO,CAA4B,EAAE;QAAA,IAAA2F,iBAAA;QACvClF,iBAAiB,CAAC,CAAC8E,OAAO,CAAC,EAAE,KAAK,GAAAI,iBAAA,GAAE7F,GAAG,CAAC4B,WAAW,cAAAiE,iBAAA,uBAAfA,iBAAA,CAAiB5F,MAAM,CAAC;MAC9D;MACA,IAAIC,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEoF,kBAAkB,EAAE;QAC/BpF,OAAO,CAACoF,kBAAkB,CAAC,CAACG,OAAO,CAAC,CAAC;MACvC;IACF,CAAC;IACDK,gBAAgBA,CAACN,YAAY,EAAEC,OAAO,EAAE;MAAA,IAAAM,iBAAA,EAAAC,iBAAA;MACtC,IAAIhH,kBAAkB,CAACU,OAAO,EAAE8F,YAAY,CAAC,EAAE;MAC/C,IAAIvG,WAAW,CAACwG,OAAO,GAAAM,iBAAA,GAAE/F,GAAG,CAAC4B,WAAW,cAAAmE,iBAAA,uBAAfA,iBAAA,CAAiB9F,MAAM,CAAC,EAAE;MAEnDS,cAAc,CAAC,CAAC+E,OAAO,CAAC,EAAE,KAAK,GAAAO,iBAAA,GAAEhG,GAAG,CAAC4B,WAAW,cAAAoE,iBAAA,uBAAfA,iBAAA,CAAiB/F,MAAM,CAAC;IAC3D,CAAC;IACDgG,gBAAgBA,CAACT,YAAY,EAAEU,SAAS,EAAE;MACxC,IAAIlH,kBAAkB,CAACU,OAAO,EAAE8F,YAAY,CAAC,EAAE;MAC/C3E,cAAc,CAAC,CAACqF,SAAS,CAAC,EAAE,EAAE,CAAC;MAC/BtF,iBAAiB,CAAC,CAACsF,SAAS,CAAC,EAAE,EAAE,CAAC;IACpC,CAAC;IACD;IACAC,gBAAgB,EAAEtE,cAAc;IAChCuE,eAAe,EAAEvE,cAAc;IAC/BwE,iBAAiB,EAAExE,cAAc;IACjCyE,gCAAgCA,CAACd,YAAY,EAAE;MAC7C,IAAIxG,kBAAkB,CAACU,OAAO,EAAE8F,YAAY,CAAC,EAAE;MAC/C3D,cAAc,CAAC2D,YAAY,CAAC;IAC9B,CAAC;IACDe,gBAAgBA,CAACC,UAAU,EAAEC,IAAI,EAAE;MACjC,IAAI/G,OAAO,CAACgH,GAAG,KAAKF,UAAU,IAAIC,IAAI,KAAK,MAAM,EAAE;QAAA,IAAAE,qBAAA;QACjDzG,OAAO,aAAPA,OAAO,wBAAAyG,qBAAA,GAAPzG,OAAO,CAAEqG,gBAAgB,cAAAI,qBAAA,uBAAzBA,qBAAA,CAAAvB,IAAA,CAAAlF,OAAO,CAAsB;MAC/B;IACF,CAAC;IACD;IACA0G,iBAAiB,EAAE/E,cAAc;IACjCgF,cAAc,EAAEhF,cAAc;IAC9BiF,WAAW,EAAEjF,cAAc;IAC3BkF,aAAa,EAAElF,cAAc;IAC7BmF,YAAYA,CAACxB,YAAY,EAAEyB,UAAU,EAAE;MAAA,IAAAC,kBAAA;MACrC,IAAIlI,kBAAkB,CAACU,OAAO,EAAE8F,YAAY,CAAC,EAAE;MAE/C,IAAIyB,UAAU,CAAChH,MAAM,OAAAiH,kBAAA,GAAKlH,GAAG,CAAC4B,WAAW,cAAAsF,kBAAA,uBAAfA,kBAAA,CAAiBjH,MAAM,GAAE;QAAA,IAAAkH,sBAAA;QACjDjH,OAAO,aAAPA,OAAO,wBAAAiH,sBAAA,GAAPjH,OAAO,CAAEqG,gBAAgB,cAAAY,sBAAA,uBAAzBA,sBAAA,CAAA/B,IAAA,CAAAlF,OAAO,CAAsB;MAC/B,CAAC,MAAM;QACL2B,cAAc,CAAC2D,YAAY,CAAC;MAC9B;IACF;EACF,CAAC,EACD,MAAM,CACP;EAEDtG,cAAc,CAAC,YAAY;IACzB4B,aAAa,CAAC,IAAI,CAAC;IAEnB,IAAI;MACF,MAAMpB,OAAO,CAAC0H,KAAK,EAAE;MACrB,MAAMnG,IAAI,CAAChB,MAAM,CAAC;IACpB,CAAC,CAAC,OAAOoH,KAAK,EAAE;MAAA,IAAAC,gBAAA,EAAAC,sBAAA;MACdrH,OAAO,aAAPA,OAAO,wBAAAoH,gBAAA,GAAPpH,OAAO,CAAEsH,OAAO,cAAAF,gBAAA,uBAAhBA,gBAAA,CAAAlC,IAAA,CAAAlF,OAAO,EAAYmH,KAAK,CAAC;MACzBnH,OAAO,aAAPA,OAAO,wBAAAqH,sBAAA,GAAPrH,OAAO,CAAEqG,gBAAgB,cAAAgB,sBAAA,uBAAzBA,sBAAA,CAAAnC,IAAA,CAAAlF,OAAO,CAAsB;IAC/B,CAAC,SAAS;MACRY,aAAa,CAAC,KAAK,CAAC;IACtB;IAEA,OAAO,MAAM;MACXpB,OAAO,CAAC+H,IAAI,EAAE,CAACC,KAAK,CAAC3I,IAAI,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,CAACW,OAAO,CAACgH,GAAG,EAAEzG,MAAM,CAAC,CAAC;EAEzB,MAAM0H,OAAsD,GAAGvI,gBAAgB,CAAC,YAAY;IAC1F2B,gBAAgB,CAAC,IAAI,CAAC;IACtB,MAAME,IAAI,CAAChB,MAAM,CAAC;IAClBc,gBAAgB,CAAC,KAAK,CAAC;EACzB,CAAC,CAAC;EAEF,MAAM6G,IAAgD,GAAGxI,gBAAgB,CAAC,YAAY;IAAA,IAAAyI,mBAAA;IACpF,IAAI1H,QAAQ,CAACkB,OAAO,KAAAwG,mBAAA,GAAI1H,QAAQ,CAACkB,OAAO,cAAAwG,mBAAA,eAAhBA,mBAAA,CAAkBtG,OAAO,EAAE;MAAA,IAAAuG,mBAAA,EAAAC,kBAAA;MACjD,MAAMrG,IAAI,GAAG,QAAAoG,mBAAA,GAAM3H,QAAQ,CAACkB,OAAO,cAAAyG,mBAAA,uBAAhBA,mBAAA,CAAkBnG,IAAI,EAAE;MAC3CjB,cAAc,CAACgB,IAAI,EAAE,KAAK,GAAAqG,kBAAA,GAAE/H,GAAG,CAAC4B,WAAW,cAAAmG,kBAAA,uBAAfA,kBAAA,CAAiB9H,MAAM,CAAC;IACtD;EACF,CAAC,CAAC;EACF,MAAM+H,OAAsD,GAAG5I,gBAAgB,CAC7E;IAAA,IAAA6I,mBAAA;IAAA,OAAM,EAAAA,mBAAA,GAAA9H,QAAQ,CAACkB,OAAO,cAAA4G,mBAAA,uBAAhBA,mBAAA,CAAkB1G,OAAO,KAAI,KAAK;EAAA,EACzC;EAED,MAAM2G,IAAgD,GAAG9I,gBAAgB,CAACN,UAAU,CAAC;EACrF,MAAMyC,OAAsD,GAAGnC,gBAAgB,CAAC,MAAM,KAAK,CAAC;EAE5F,MAAM+I,eAAsE,GAAG/I,gBAAgB,CAC7F,CAACgJ,MAAM,EAAEC,SAAS,KAAK;IACrB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtC9I,OAAO,CACJyI,eAAe,CAACC,MAAM,CAAC,CACvBC,SAAS,CAAEI,cAAc,IAAK;QAC7B,IAAIA,cAAc,CAACC,aAAa,EAAE,EAAE;UAAA,IAAAC,kBAAA;UAClCjI,cAAc,CAAC,CAAC+H,cAAc,CAAC,EAAE,KAAK,GAAAE,kBAAA,GAAE3I,GAAG,CAAC4B,WAAW,cAAA+G,kBAAA,uBAAfA,kBAAA,CAAiB1I,MAAM,CAAC;UAChEoI,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAGI,cAAc,CAAC;QAC7B;MACF,CAAC,CAAC,CACDG,WAAW,CAAEC,WAAW,IAAK;QAC5B,IAAIA,WAAW,CAACH,aAAa,EAAE,EAAE;UAAA,IAAAI,kBAAA;UAC/BpI,cAAc,CAAC,CAACmI,WAAW,CAAC,EAAE,KAAK,GAAAC,kBAAA,GAAE9I,GAAG,CAAC4B,WAAW,cAAAkH,kBAAA,uBAAfA,kBAAA,CAAiB7I,MAAM,CAAC;UAC7DsI,OAAO,CAACM,WAAW,CAAC;QACtB;MACF,CAAC,CAAC,CACDE,QAAQ,CAAC,CAACC,GAAG,EAAEC,aAAa,KAAK;QAChC,IAAIA,aAAa,EAAE;UAAA,IAAAC,kBAAA;UACjBxI,cAAc,CAAC,CAACuI,aAAa,CAAC,EAAE,KAAK,GAAAC,kBAAA,GAAElJ,GAAG,CAAC4B,WAAW,cAAAsH,kBAAA,uBAAfA,kBAAA,CAAiBjJ,MAAM,CAAC;QACjE;QACAuI,MAAM,CAACQ,GAAG,CAAC;MACb,CAAC,CAAC;IACN,CAAC,CAAC;EACJ,CAAC,CACF;EAED,MAAMG,eAAsE,GAAG/J,gBAAgB,CAC7F,CAACgJ,MAAM,EAAEC,SAAS,KAAK;IACrB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtC9I,OAAO,CACJyJ,eAAe,CAACf,MAAM,CAAC,CACvBC,SAAS,CAAEI,cAAc,IAAK;QAC7B,IAAIA,cAAc,CAACW,aAAa,EAAE,EAAE;UAAA,IAAAC,kBAAA;UAClC3I,cAAc,CAAC,CAAC+H,cAAc,CAAC,EAAE,KAAK,GAAAY,kBAAA,GAAErJ,GAAG,CAAC4B,WAAW,cAAAyH,kBAAA,uBAAfA,kBAAA,CAAiBpJ,MAAM,CAAC;UAChEoI,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAGI,cAAc,CAAC;QAC7B;MACF,CAAC,CAAC,CACDG,WAAW,CAAEC,WAAW,IAAK;QAC5B,IAAIA,WAAW,CAACO,aAAa,EAAE,EAAE;UAAA,IAAAE,kBAAA;UAC/B5I,cAAc,CAAC,CAACmI,WAAW,CAAC,EAAE,KAAK,GAAAS,kBAAA,GAAEtJ,GAAG,CAAC4B,WAAW,cAAA0H,kBAAA,uBAAfA,kBAAA,CAAiBrJ,MAAM,CAAC;UAC7DsI,OAAO,CAACM,WAAW,CAAC;QACtB;MACF,CAAC,CAAC,CACDE,QAAQ,CAAC,CAACC,GAAG,EAAEC,aAAa,KAAK;QAChC,IAAIA,aAAa,EAAE;UAAA,IAAAM,kBAAA;UACjB7I,cAAc,CAAC,CAACuI,aAAa,CAAC,EAAE,KAAK,GAAAM,kBAAA,GAAEvJ,GAAG,CAAC4B,WAAW,cAAA2H,kBAAA,uBAAfA,kBAAA,CAAiBtJ,MAAM,CAAC;QACjE;QACAuI,MAAM,CAACQ,GAAG,CAAC;MACb,CAAC,CAAC;IACN,CAAC,CAAC;EACJ,CAAC,CACF;EAED,MAAMQ,iBAA0E,GAAGpK,gBAAgB,CACjG,OAAO8G,SAAS,EAAEkC,MAAM,KAAK;IAAA,IAAAqB,kBAAA;IAC3B,MAAMC,cAAc,GAAG,MAAMhK,OAAO,CAAC8J,iBAAiB,CAACtD,SAAS,EAAEkC,MAAM,CAAC;IACzE1H,cAAc,CAAC,CAACgJ,cAAc,CAAC,EAAE,KAAK,GAAAD,kBAAA,GAAEzJ,GAAG,CAAC4B,WAAW,cAAA6H,kBAAA,uBAAfA,kBAAA,CAAiBxJ,MAAM,CAAC;IAChE,OAAOyJ,cAAc;EACvB,CAAC,CACF;EACD,MAAMC,iBAA0E,GAAGvK,gBAAgB,CACjG,OAAO8G,SAAS,EAAEkC,MAAM,KAAK;IAAA,IAAAwB,kBAAA;IAC3B,MAAMF,cAAc,GAAG,MAAMhK,OAAO,CAACiK,iBAAiB,CAACzD,SAAS,EAAEkC,MAAM,CAAC;IACzE1H,cAAc,CAAC,CAACgJ,cAAc,CAAC,EAAE,KAAK,GAAAE,kBAAA,GAAE5J,GAAG,CAAC4B,WAAW,cAAAgI,kBAAA,uBAAfA,kBAAA,CAAiB3J,MAAM,CAAC;IAChE,OAAOyJ,cAAc;EACvB,CAAC,CACF;EACD,MAAMG,aAAkE,GAAGzK,gBAAgB,CAAC,MAAO6J,aAAa,IAAK;IAAA,IAAAa,kBAAA;IACnH,MAAMrE,OAAO,GAAG,MAAM,CAAC,MAAM;MAC3B,IAAIwD,aAAa,CAACP,aAAa,EAAE,EAAE,OAAOhJ,OAAO,CAACqK,iBAAiB,CAACd,aAAa,CAAC;MAClF,IAAIA,aAAa,CAACG,aAAa,EAAE,EAAE,OAAO1J,OAAO,CAACsK,iBAAiB,CAACf,aAAa,CAAC;MAClF,OAAO,IAAI;IACb,CAAC,GAAG;IAEJ,IAAIxD,OAAO,EAAE/E,cAAc,CAAC,CAAC+E,OAAO,CAAC,EAAE,KAAK,GAAAqE,kBAAA,GAAE9J,GAAG,CAAC4B,WAAW,cAAAkI,kBAAA,uBAAfA,kBAAA,CAAiB7J,MAAM,CAAC;EACxE,CAAC,CAAC;EACF,MAAMgK,aAAkE,GAAG7K,gBAAgB,CAAC,MAAOqG,OAAO,IAAK;IAC7G,IAAIA,OAAO,CAACyE,aAAa,KAAK,WAAW,EAAE;MACzC,IAAIzE,OAAO,CAACiD,aAAa,EAAE,EAAE,MAAMhJ,OAAO,CAACuK,aAAa,CAACxE,OAAO,CAAC;MACjE,IAAIA,OAAO,CAAC2D,aAAa,EAAE,EAAE,MAAM1J,OAAO,CAACuK,aAAa,CAACxE,OAAO,CAAC;IACnE,CAAC,MAAM;MACL5E,cAAc,CAAC,CAAC4E,OAAO,CAACS,SAAS,CAAC,EAAE,CAACT,OAAO,CAAC0E,KAAK,CAAC,CAAC;IACtD;EACF,CAAC,CAAC;EACF,MAAMC,gBAAwE,GAAGhL,gBAAgB,CAAC,MAAM;IAAA,IAAAiL,kBAAA;IACtG1J,iBAAiB,CAAC,EAAE,EAAE,IAAI,GAAA0J,kBAAA,GAAErK,GAAG,CAAC4B,WAAW,cAAAyI,kBAAA,uBAAfA,kBAAA,CAAiBpK,MAAM,CAAC;EACtD,CAAC,CAAC;EAEF,OAAO;IACLK,OAAO;IACPC,UAAU;IACVoH,OAAO;IACPnH,QAAQ;IACRC,WAAW;IACXyH,IAAI;IACJ3G,OAAO;IACPqG,IAAI;IACJI,OAAO;IACPG,eAAe;IACfgB,eAAe;IACfK,iBAAiB;IACjBG,iBAAiB;IACjBE,aAAa;IACbI,aAAa;IACbG;EACF,CAAC;AACH,CAAC"}
1
+ {"version":3,"names":["useRef","ASYNC_NOOP","NOOP","isDifferentChannel","isMyMessage","useAsyncEffect","useForceUpdate","useFreshCallback","useUniqHandlerId","useChannelHandler","useConnectionHandler","useChannelMessagesReducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useOpenChannelMessagesWithQuery","sdk","userId","options","queryRef","forceUpdate","handlerId","loading","refreshing","messages","newMessages","updateMessages","updateNewMessages","deleteNewMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","init","uid","_queryRef$current","_sdk$currentUser2","current","queryCreator","hasNext","_queryRef$current2","_sdk$currentUser","list","load","currentUser","channelUpdater","isOpenChannel","onReconnectSucceeded","_queryRef$current3","_queryRef$current4","_queryRef$current5","_queryRef$current6","_queryRef$current7","_queryRef$current8","_queryRef$current9","_queryRef$current10","_queryRef$current11","_queryRef$current12","_queryRef$current13","_queryRef$current14","_queryRef$current15","_queryRef$current16","_queryRef$current17","_queryRef$current18","_sdk$currentUser3","lastMessage","messageContext","updatedMessages","addedMessages","deletedMessageIds","changeLogsContext","hasMore","token","messageQueryContext","timestamp","createdAt","changelogsParams","replyType","includeMetaArray","includeReactions","includeThreadInfo","includeParentMessageInfo","changeLogsByTS","getMessageChangeLogsSinceTimestamp","push","changeLogsByToken","getMessageChangeLogsSinceToken","messageQueryParams","prevResultSize","nextResultSize","customTypesFilter","messageTypeFilter","senderUserIdsFilter","showSubchannelMessagesOnly","queriedMessages","getMessagesByTimestamp","length","unshift","_options$shouldCountN","shouldCountNewMessages","call","_sdk$currentUser4","onMessagesReceived","onMessageReceived","eventChannel","message","_sdk$currentUser5","_sdk$currentUser6","_options$shouldCountN2","_sdk$currentUser7","onMessageUpdated","_sdk$currentUser8","_sdk$currentUser9","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelParticipantCountChanged","onChannelDeleted","channelUrl","type","url","_options$onChannelDel","onOperatorUpdated","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_sdk$currentUser10","_options$onChannelDel2","enter","error","_options$onError","_options$onChannelDel3","onError","exit","catch","refresh","prev","_queryRef$current19","_queryRef$current20","_sdk$currentUser11","hasPrev","_queryRef$current21","next","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","_sdk$currentUser12","onSucceeded","sentMessage","_sdk$currentUser13","onFailed","err","failedMessage","_sdk$currentUser14","sendFileMessage","isFileMessage","_sdk$currentUser15","_sdk$currentUser16","_sdk$currentUser17","updateUserMessage","_sdk$currentUser18","updatedMessage","updateFileMessage","_sdk$currentUser19","resendMessage","_sdk$currentUser20","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","resetNewMessages","_sdk$currentUser21"],"sources":["useOpenChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport { MessageListParams } from '@sendbird/chat/message';\nimport type {\n SendbirdBaseChannel,\n SendbirdBaseMessage,\n SendbirdOpenChannel,\n SendbirdPreviousMessageListQuery,\n} from '@sendbird/uikit-utils';\nimport {\n ASYNC_NOOP,\n NOOP,\n isDifferentChannel,\n isMyMessage,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport { useConnectionHandler } from '../../handler/useConnectionHandler';\nimport type { UseOpenChannelMessages, UseOpenChannelMessagesOptions } from '../../types';\nimport { useChannelMessagesReducer } from '../useChannelMessagesReducer';\n\nconst createMessageQuery = (channel: SendbirdOpenChannel, creator?: UseOpenChannelMessagesOptions['queryCreator']) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nexport const useOpenChannelMessagesWithQuery: UseOpenChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n const forceUpdate = useForceUpdate();\n const handlerId = useUniqHandlerId('useOpenChannelMessagesWithQuery');\n\n const {\n loading,\n refreshing,\n messages,\n newMessages,\n updateMessages,\n updateNewMessages,\n deleteNewMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useChannelMessagesReducer(options?.sortComparator);\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(channel, options?.queryCreator);\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n\n updateMessages(list, true, sdk.currentUser?.userId);\n }\n updateNewMessages([], true, sdk.currentUser?.userId);\n }\n });\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isOpenChannel() && !isDifferentChannel(channel, channel)) {\n forceUpdate();\n }\n };\n\n useConnectionHandler(sdk, handlerId, {\n async onReconnectSucceeded() {\n const lastMessage = messages[0];\n if (!lastMessage) return;\n\n const messageContext = {\n updatedMessages: [] as SendbirdBaseMessage[],\n addedMessages: [] as SendbirdBaseMessage[],\n deletedMessageIds: [] as (number | string)[],\n };\n const changeLogsContext = {\n hasMore: false,\n token: '',\n };\n const messageQueryContext = {\n hasMore: false,\n timestamp: lastMessage.createdAt,\n };\n\n // Updated & Deleted messages\n const changelogsParams = {\n replyType: queryRef.current?.replyType,\n includeMetaArray: queryRef.current?.includeMetaArray,\n includeReactions: queryRef.current?.includeReactions,\n includeThreadInfo: queryRef.current?.includeThreadInfo,\n includeParentMessageInfo: queryRef.current?.includeParentMessageInfo,\n };\n\n const changeLogsByTS = await channel.getMessageChangeLogsSinceTimestamp(lastMessage.createdAt);\n changeLogsContext.token = changeLogsByTS.token;\n changeLogsContext.hasMore = changeLogsByTS.hasMore;\n messageContext.updatedMessages.push(...changeLogsByTS.updatedMessages);\n messageContext.deletedMessageIds.push(...changeLogsByTS.deletedMessageIds);\n\n while (changeLogsContext.hasMore) {\n const changeLogsByToken = await channel.getMessageChangeLogsSinceToken(changeLogsByTS.token, changelogsParams);\n changeLogsContext.token = changeLogsByToken.token;\n changeLogsContext.hasMore = changeLogsByToken.hasMore;\n messageContext.updatedMessages.push(...changeLogsByToken.updatedMessages);\n messageContext.deletedMessageIds.push(...changeLogsByToken.deletedMessageIds);\n }\n\n // Added messages\n const messageQueryParams: MessageListParams = {\n prevResultSize: 0,\n nextResultSize: queryRef.current?.limit ?? 100,\n reverse: queryRef.current?.reverse,\n includeParentMessageInfo: queryRef.current?.includeParentMessageInfo,\n includeThreadInfo: queryRef.current?.includeThreadInfo,\n includeReactions: queryRef.current?.includeReactions,\n includeMetaArray: queryRef.current?.includeMetaArray,\n replyType: queryRef.current?.replyType,\n customTypesFilter: queryRef.current?.customTypesFilter as never,\n messageTypeFilter: queryRef.current?.messageTypeFilter,\n senderUserIdsFilter: queryRef.current?.senderUserIdsFilter as never,\n showSubchannelMessagesOnly: queryRef.current?.showSubchannelMessagesOnly,\n };\n\n const queriedMessages = await channel.getMessagesByTimestamp(lastMessage.createdAt, messageQueryParams);\n messageQueryContext.hasMore = queriedMessages.length > 0;\n if (messageQueryContext.hasMore) {\n messageQueryContext.timestamp = queriedMessages[0].createdAt;\n messageContext.addedMessages.unshift(...queriedMessages);\n }\n\n while (messageQueryContext.hasMore) {\n const queriedMessages = await channel.getMessagesByTimestamp(messageQueryContext.timestamp, messageQueryParams);\n messageQueryContext.hasMore = queriedMessages.length > 0;\n if (messageQueryContext.hasMore) {\n messageQueryContext.timestamp = queriedMessages[0].createdAt;\n messageContext.addedMessages.unshift(...queriedMessages);\n }\n }\n\n // Update to View\n updateMessages(\n [...messageContext.addedMessages, ...messageContext.updatedMessages],\n false,\n sdk.currentUser?.userId,\n );\n deleteMessages(messageContext.deletedMessageIds, []);\n\n if (messageContext.addedMessages.length > 0) {\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages(messageContext.addedMessages, false, sdk.currentUser?.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived(messageContext.addedMessages);\n }\n }\n },\n });\n\n useChannelHandler(\n sdk,\n handlerId,\n {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser?.userId)) return;\n\n updateMessages([message], false, sdk.currentUser?.userId);\n if (options?.shouldCountNewMessages?.()) {\n updateNewMessages([message], false, sdk.currentUser?.userId);\n }\n if (options?.onMessagesReceived) {\n options.onMessagesReceived([message]);\n }\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (isMyMessage(message, sdk.currentUser?.userId)) return;\n\n updateMessages([message], false, sdk.currentUser?.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNewMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelParticipantCountChanged(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n channelUpdater(eventChannel);\n },\n onChannelDeleted(channelUrl, type) {\n if (channel.url === channelUrl && type === 'open') {\n options?.onChannelDeleted?.();\n }\n },\n // Users\n onOperatorUpdated: channelUpdater,\n onUserUnbanned: channelUpdater,\n onUserMuted: channelUpdater,\n onUserUnmuted: channelUpdater,\n onUserBanned(eventChannel, bannedUser) {\n if (isDifferentChannel(channel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser?.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n },\n 'open',\n );\n\n useAsyncEffect(async () => {\n updateLoading(true);\n\n try {\n await channel.enter();\n await init(userId);\n } catch (error) {\n options?.onError?.(error);\n options?.onChannelDeleted?.();\n } finally {\n updateLoading(false);\n }\n\n return () => {\n channel.exit().catch(NOOP);\n };\n }, [channel.url, userId]);\n\n const refresh: ReturnType<UseOpenChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const prev: ReturnType<UseOpenChannelMessages>['prev'] = useFreshCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser?.userId);\n }\n });\n const hasPrev: ReturnType<UseOpenChannelMessages>['hasPrev'] = useFreshCallback(\n () => queryRef.current?.hasNext ?? false,\n );\n\n const next: ReturnType<UseOpenChannelMessages>['next'] = useFreshCallback(ASYNC_NOOP);\n const hasNext: ReturnType<UseOpenChannelMessages>['hasNext'] = useFreshCallback(() => false);\n\n const sendUserMessage: ReturnType<UseOpenChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\n reject(err);\n });\n });\n },\n );\n\n const sendFileMessage: ReturnType<UseOpenChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser?.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser?.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, failedMessage) => {\n if (failedMessage) {\n updateMessages([failedMessage], false, sdk.currentUser?.userId);\n }\n reject(err);\n });\n });\n },\n );\n\n const updateUserMessage: ReturnType<UseOpenChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser?.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseOpenChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser?.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseOpenChannelMessages>['resendMessage'] = useFreshCallback(async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser?.userId);\n });\n const deleteMessage: ReturnType<UseOpenChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n });\n const resetNewMessages: ReturnType<UseOpenChannelMessages>['resetNewMessages'] = useFreshCallback(() => {\n updateNewMessages([], true, sdk.currentUser?.userId);\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n newMessages,\n next,\n hasNext,\n prev,\n hasPrev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n resetNewMessages,\n };\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ReplyType } from '@sendbird/chat/message';\nimport type {\n SendbirdChatSDK,\n SendbirdError,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n SendbirdGroupChannelListQuery,\n SendbirdMessage,\n SendbirdMessageCollection,\n SendbirdOpenChannel,\n SendbirdOpenChannelListQuery,\n SendbirdPreviousMessageListQuery,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n UserStruct,\n} from '@sendbird/uikit-utils';\n\nexport interface CustomQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: boolean;\n}\nexport interface CustomBidirectionalQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: () => boolean;\n prev: () => Promise<Data[]>;\n hasPrev: () => boolean;\n}\n\n/**\n * @interface UseGroupChannelList\n * @description interface for group channel list hook\n * */\nexport interface UseGroupChannelList {\n (sdk: SendbirdChatSDK, userId?: string, options?: UseGroupChannelListOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get group channels state\n * */\n groupChannels: SendbirdGroupChannel[];\n\n /**\n * Fetch next channels to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n };\n}\nexport type UseGroupChannelListOptions = {\n queryCreator?: () => SendbirdGroupChannelListQuery;\n collectionCreator?: () => SendbirdGroupChannelCollection;\n enableCollectionWithoutLocalCache?: boolean;\n};\n\n/**\n * @interface UseGroupChannelMessages\n * @description interface for group channel messages hook\n * - Receive new messages from other users & should count new messages -> append to state(newMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> next() -> fetch next messages and append to state(messages)\n * */\nexport interface UseGroupChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdGroupChannel, userId?: string, options?: UseGroupChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Check if there are more prev messages to fetch\n * @return {boolean}\n * */\n hasPrev: () => boolean;\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Check if there are more next messages to fetch\n * @return {boolean}\n * */\n hasNext: () => boolean;\n\n /**\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessages: SendbirdMessage[];\n\n /**\n * reset message list with starting point\n * */\n resetWithStartingPoint: (startingPoint: number, callback?: () => void) => void;\n\n /**\n * Reset new messages\n * */\n resetNewMessages: () => void;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageCreateParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageCreateParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageUpdateParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageUpdateParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n };\n}\n\nexport type UseGroupChannelMessagesOptions = {\n replyType?: ReplyType;\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n collectionCreator?: (options?: Pick<UseGroupChannelMessagesOptions, 'startingPoint'>) => SendbirdMessageCollection;\n enableCollectionWithoutLocalCache?: boolean;\n onChannelDeleted?: () => void;\n shouldCountNewMessages?: () => boolean;\n startingPoint?: number;\n onMessagesReceived?: (messages: SendbirdMessage[]) => void;\n onMessagesUpdated?: (messages: SendbirdMessage[]) => void;\n};\n\n/**\n * @interface UseOpenChannelList\n * @description interface for open channel list hook\n * */\nexport interface UseOpenChannelList {\n (sdk: SendbirdChatSDK, userId?: string, options?: UseOpenChannelListOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Get open channels state\n * */\n openChannels: SendbirdOpenChannel[];\n\n /**\n * Fetch next channels to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n };\n}\nexport type UseOpenChannelListOptions = {\n queryCreator?: () => SendbirdOpenChannelListQuery;\n};\n\n/**\n * @interface UseOpenChannelMessages\n * @description interface for open channel messages hook\n * - Receive new messages from other users & should count new messages -> append to state(newMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> noop\n * */\nexport interface UseOpenChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdOpenChannel, userId?: string, options?: UseOpenChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Check if there are more prev messages to fetch\n * @return {boolean}\n * */\n hasPrev: () => boolean;\n\n /**\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessages: SendbirdMessage[];\n\n /**\n * Reset new messages\n * */\n resetNewMessages: () => void;\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Check if there are more next messages to fetch\n * @return {boolean}\n * */\n hasNext: () => boolean;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageCreateParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageCreateParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageUpdateParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageUpdateParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n };\n}\n\nexport type UseOpenChannelMessagesOptions = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n onChannelDeleted?: () => void;\n onError?: (error?: unknown) => void;\n shouldCountNewMessages?: () => boolean;\n onMessagesReceived?: (messages: SendbirdMessage[]) => void;\n};\n\n/**\n * @interface UseUserListReturn\n * @description interface for user list hook return value\n * */\nexport interface UseUserListReturn<User extends UserStruct> {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get users state\n * */\n users: User[];\n\n /**\n * Update or Insert user to list\n * */\n upsertUser: (user: User) => void;\n\n /**\n * Delete user from list\n * */\n deleteUser: (userId: User['userId']) => void;\n\n /**\n * Fetch next users to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n}\n\nexport type UseUserListOptions<User extends UserStruct> = {\n sortComparator?: (a: User, b: User) => number;\n queryCreator?: () => CustomQueryInterface<User>;\n};\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ReplyType } from '@sendbird/chat/message';\nimport type {\n SendbirdChatSDK,\n SendbirdError,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n SendbirdGroupChannelListQuery,\n SendbirdMessage,\n SendbirdMessageCollection,\n SendbirdOpenChannel,\n SendbirdOpenChannelListQuery,\n SendbirdPreviousMessageListQuery,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n UserStruct,\n} from '@sendbird/uikit-utils';\n\nexport interface CustomQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: boolean;\n}\nexport interface CustomBidirectionalQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: () => boolean;\n prev: () => Promise<Data[]>;\n hasPrev: () => boolean;\n}\n\n/**\n * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.\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 * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.\n *\n * @interface UseGroupChannelMessages\n * @description interface for group channel messages hook\n * - Receive new messages from other users & should count new messages -> append to state(newMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> next() -> fetch next messages and append to state(messages)\n * */\nexport interface UseGroupChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdGroupChannel, userId?: string, options?: UseGroupChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Check if there are more prev messages to fetch\n * @return {boolean}\n * */\n hasPrev: () => boolean;\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Check if there are more next messages to fetch\n * @return {boolean}\n * */\n hasNext: () => boolean;\n\n /**\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessages: SendbirdMessage[];\n\n /**\n * reset message list with starting point\n * */\n resetWithStartingPoint: (startingPoint: number, callback?: () => void) => void;\n\n /**\n * Reset new messages\n * */\n resetNewMessages: () => void;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageCreateParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageCreateParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageUpdateParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageUpdateParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n };\n}\n\nexport type UseGroupChannelMessagesOptions = {\n replyType?: ReplyType;\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n collectionCreator?: (options?: Pick<UseGroupChannelMessagesOptions, 'startingPoint'>) => SendbirdMessageCollection;\n enableCollectionWithoutLocalCache?: boolean;\n onChannelDeleted?: () => void;\n shouldCountNewMessages?: () => boolean;\n startingPoint?: number;\n onMessagesReceived?: (messages: SendbirdMessage[]) => void;\n onMessagesUpdated?: (messages: SendbirdMessage[]) => void;\n};\n\n/**\n * @interface UseOpenChannelList\n * @description interface for open channel list hook\n * */\nexport interface UseOpenChannelList {\n (sdk: SendbirdChatSDK, userId?: string, options?: UseOpenChannelListOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Get open channels state\n * */\n openChannels: SendbirdOpenChannel[];\n\n /**\n * Fetch next channels to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n };\n}\nexport type UseOpenChannelListOptions = {\n queryCreator?: () => SendbirdOpenChannelListQuery;\n};\n\n/**\n * @interface UseOpenChannelMessages\n * @description interface for open channel messages hook\n * - Receive new messages from other users & should count new messages -> append to state(newMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> noop\n * */\nexport interface UseOpenChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdOpenChannel, userId?: string, options?: UseOpenChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Check if there are more prev messages to fetch\n * @return {boolean}\n * */\n hasPrev: () => boolean;\n\n /**\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessages: SendbirdMessage[];\n\n /**\n * Reset new messages\n * */\n resetNewMessages: () => void;\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Check if there are more next messages to fetch\n * @return {boolean}\n * */\n hasNext: () => boolean;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageCreateParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageCreateParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageUpdateParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageUpdateParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n };\n}\n\nexport type UseOpenChannelMessagesOptions = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n onChannelDeleted?: () => void;\n onError?: (error?: unknown) => void;\n shouldCountNewMessages?: () => boolean;\n onMessagesReceived?: (messages: SendbirdMessage[]) => void;\n};\n\n/**\n * @interface UseUserListReturn\n * @description interface for user list hook return value\n * */\nexport interface UseUserListReturn<User extends UserStruct> {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get users state\n * */\n users: User[];\n\n /**\n * Update or Insert user to list\n * */\n upsertUser: (user: User) => void;\n\n /**\n * Delete user from list\n * */\n deleteUser: (userId: User['userId']) => void;\n\n /**\n * Fetch next users to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n}\n\nexport type UseUserListOptions<User extends UserStruct> = {\n sortComparator?: (a: User, b: User) => number;\n queryCreator?: () => CustomQueryInterface<User>;\n};\n"],"mappings":""}
@@ -7,7 +7,7 @@ export declare const useChannelMessagesReducer: (sortComparator?: Options['sortC
7
7
  updateLoading: (status: boolean) => void;
8
8
  updateRefreshing: (status: boolean) => void;
9
9
  updateMessages: (messages: SendbirdBaseMessage[], clearBeforeAction: boolean, currentUserId?: string) => void;
10
- deleteMessages: (messageIds: number[], reqIds: string[]) => void;
10
+ deleteMessages: (messageIds: (string | number)[], reqIds: string[]) => void;
11
11
  loading: boolean;
12
12
  refreshing: boolean;
13
13
  messages: import("@sendbird/chat/message").BaseMessage[];
@@ -1,2 +1,5 @@
1
1
  import type { UseGroupChannelList } from '../../types';
2
+ /**
3
+ * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.
4
+ * */
2
5
  export declare const useGroupChannelList: UseGroupChannelList;
@@ -1,2 +1,5 @@
1
1
  import type { UseGroupChannelMessages } from '../../types';
2
+ /**
3
+ * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.
4
+ * */
2
5
  export declare const useGroupChannelMessages: UseGroupChannelMessages;
@@ -13,6 +13,8 @@ export interface CustomBidirectionalQueryInterface<Data> {
13
13
  hasPrev: () => boolean;
14
14
  }
15
15
  /**
16
+ * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.
17
+ *
16
18
  * @interface UseGroupChannelList
17
19
  * @description interface for group channel list hook
18
20
  * */
@@ -48,6 +50,8 @@ export type UseGroupChannelListOptions = {
48
50
  enableCollectionWithoutLocalCache?: boolean;
49
51
  };
50
52
  /**
53
+ * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.
54
+ *
51
55
  * @interface UseGroupChannelMessages
52
56
  * @description interface for group channel messages hook
53
57
  * - Receive new messages from other users & should count new messages -> append to state(newMessages)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sendbird/uikit-chat-hooks",
3
- "version": "3.3.0",
3
+ "version": "3.4.1",
4
4
  "description": "A set of React hooks for integrating Sendbird chat functionality into your React app.",
5
5
  "keywords": [
6
6
  "sendbird",
@@ -45,17 +45,17 @@
45
45
  "access": "public"
46
46
  },
47
47
  "dependencies": {
48
- "@sendbird/uikit-utils": "3.3.0"
48
+ "@sendbird/uikit-utils": "3.4.1"
49
49
  },
50
50
  "devDependencies": {
51
- "@sendbird/uikit-testing-tools": "3.3.0",
51
+ "@sendbird/uikit-testing-tools": "3.4.1",
52
52
  "@types/react": "*",
53
53
  "react": "17.0.2",
54
54
  "react-native-builder-bob": "^0.18.0",
55
55
  "typescript": "5.2.2"
56
56
  },
57
57
  "peerDependencies": {
58
- "@sendbird/chat": "^4.9.8",
58
+ "@sendbird/chat": "^4.10.7",
59
59
  "react": ">=16.13.1"
60
60
  },
61
61
  "react-native-builder-bob": {
@@ -72,5 +72,5 @@
72
72
  ]
73
73
  ]
74
74
  },
75
- "gitHead": "51adda5f33a7bb450b51ce30f505dcc9884e9586"
75
+ "gitHead": "b3f416e3d5ab51ce020ca21f21c09ad0157722d9"
76
76
  }
@@ -28,7 +28,7 @@ type Action =
28
28
  }
29
29
  | {
30
30
  type: 'delete_messages' | 'delete_new_messages';
31
- value: { messageIds: number[]; reqIds: string[] };
31
+ value: { messageIds: (string | number)[]; reqIds: string[] };
32
32
  };
33
33
 
34
34
  type State = {
@@ -153,7 +153,7 @@ export const useChannelMessagesReducer = (sortComparator?: Options['sortComparat
153
153
  const updateMessages = (messages: SendbirdBaseMessage[], clearBeforeAction: boolean, currentUserId?: string) => {
154
154
  dispatch({ type: 'update_messages', value: { messages, clearBeforeAction, currentUserId } });
155
155
  };
156
- const deleteMessages = (messageIds: number[], reqIds: string[]) => {
156
+ const deleteMessages = (messageIds: (string | number)[], reqIds: string[]) => {
157
157
  dispatch({ type: 'delete_messages', value: { messageIds, reqIds } });
158
158
  };
159
159
  const updateNewMessages = (messages: SendbirdBaseMessage[], clearBeforeAction: boolean, currentUserId?: string) => {
@@ -4,6 +4,9 @@ import type { UseGroupChannelList } from '../../types';
4
4
  import { useGroupChannelListWithCollection } from './useGroupChannelListWithCollection';
5
5
  import { useGroupChannelListWithQuery } from './useGroupChannelListWithQuery';
6
6
 
7
+ /**
8
+ * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.
9
+ * */
7
10
  export const useGroupChannelList: UseGroupChannelList = (sdk, userId, options) => {
8
11
  if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {
9
12
  if (options?.queryCreator) Logger.warn('`queryCreator` is ignored, please use `collectionCreator` instead.');
@@ -4,6 +4,9 @@ import type { UseGroupChannelMessages } from '../../types';
4
4
  import { useGroupChannelMessagesWithCollection } from './useGroupChannelMessagesWithCollection';
5
5
  import { useGroupChannelMessagesWithQuery } from './useGroupChannelMessagesWithQuery';
6
6
 
7
+ /**
8
+ * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.
9
+ * */
7
10
  export const useGroupChannelMessages: UseGroupChannelMessages = (sdk, channel, userId, options) => {
8
11
  if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {
9
12
  if (options?.queryCreator) printIgnoredWarning();
@@ -1,6 +1,6 @@
1
1
  import { useRef } from 'react';
2
2
 
3
- import type { PreviousMessageListQueryParams } from '@sendbird/chat/message';
3
+ import type { BaseMessage, PreviousMessageListQueryParams } from '@sendbird/chat/message';
4
4
  import type {
5
5
  SendbirdBaseChannel,
6
6
  SendbirdGroupChannel,
@@ -116,7 +116,7 @@ export const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, c
116
116
  channelUrl: channel.url,
117
117
  channelType: channel.channelType,
118
118
  });
119
- if (message) updateMessages([message], false, sdk.currentUser?.userId);
119
+ if (message) updateMessages([message as BaseMessage], false, sdk.currentUser?.userId);
120
120
  },
121
121
  // Channels
122
122
  onChannelChanged: channelUpdater,
@@ -75,7 +75,7 @@ export const useOpenChannelMessagesWithQuery: UseOpenChannelMessages = (sdk, cha
75
75
  const messageContext = {
76
76
  updatedMessages: [] as SendbirdBaseMessage[],
77
77
  addedMessages: [] as SendbirdBaseMessage[],
78
- deletedMessageIds: [] as number[],
78
+ deletedMessageIds: [] as (number | string)[],
79
79
  };
80
80
  const changeLogsContext = {
81
81
  hasMore: false,
package/src/types.ts CHANGED
@@ -33,6 +33,8 @@ export interface CustomBidirectionalQueryInterface<Data> {
33
33
  }
34
34
 
35
35
  /**
36
+ * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.
37
+ *
36
38
  * @interface UseGroupChannelList
37
39
  * @description interface for group channel list hook
38
40
  * */
@@ -73,6 +75,8 @@ export type UseGroupChannelListOptions = {
73
75
  };
74
76
 
75
77
  /**
78
+ * @deprecated This hook is deprecated and will be replaced by the 'uikit-tools' package.
79
+ *
76
80
  * @interface UseGroupChannelMessages
77
81
  * @description interface for group channel messages hook
78
82
  * - Receive new messages from other users & should count new messages -> append to state(newMessages)