@sendbird/uikit-chat-hooks 2.0.1 → 2.0.2

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 (26) hide show
  1. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js +14 -6
  2. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
  3. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js +11 -7
  4. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
  5. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +10 -14
  6. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  7. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +1 -12
  8. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  9. package/lib/commonjs/common/useMessageOutgoingStatus.js +1 -0
  10. package/lib/commonjs/common/useMessageOutgoingStatus.js.map +1 -1
  11. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js +15 -7
  12. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
  13. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js +11 -7
  14. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
  15. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +12 -15
  16. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  17. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +2 -12
  18. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  19. package/lib/module/common/useMessageOutgoingStatus.js +1 -0
  20. package/lib/module/common/useMessageOutgoingStatus.js.map +1 -1
  21. package/package.json +3 -3
  22. package/src/channel/useGroupChannelList/useGroupChannelListWithCollection.ts +20 -8
  23. package/src/channel/useGroupChannelList/useGroupChannelListWithQuery.ts +10 -7
  24. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +11 -19
  25. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +1 -10
  26. package/src/common/useMessageOutgoingStatus.ts +1 -0
@@ -47,14 +47,22 @@ const useGroupChannelListWithCollection = (sdk, userId, options) => {
47
47
  updateLoading
48
48
  } = (0, _reducer.useGroupChannelListReducer)();
49
49
 
50
- const updateChannelsAndMarkAsDelivered = markAsDelivered => {
50
+ const updateChannelsAndMarkAsDelivered = (markAsDelivered, source, updatedChannels) => {
51
51
  var _collectionRef$curren;
52
52
 
53
53
  const channels = ((_collectionRef$curren = collectionRef.current) === null || _collectionRef$curren === void 0 ? void 0 : _collectionRef$curren.channels) ?? [];
54
54
  setChannels(channels, true);
55
55
 
56
56
  if (markAsDelivered && deliveryReceiptEnabled) {
57
- channels.forEach(channel => (0, _uikitUtils.confirmAndMarkAsDelivered)(sdk, channel));
57
+ switch (source) {
58
+ case _groupChannel.GroupChannelEventSource.EVENT_MESSAGE_RECEIVED:
59
+ case _groupChannel.GroupChannelEventSource.EVENT_MESSAGE_SENT:
60
+ case _groupChannel.GroupChannelEventSource.SYNC_CHANNEL_BACKGROUND:
61
+ case _groupChannel.GroupChannelEventSource.SYNC_CHANNEL_CHANGELOGS:
62
+ case undefined:
63
+ (0, _uikitUtils.confirmAndMarkAsDelivered)(updatedChannels ?? channels);
64
+ break;
65
+ }
58
66
  }
59
67
  };
60
68
 
@@ -68,11 +76,11 @@ const useGroupChannelListWithCollection = (sdk, userId, options) => {
68
76
 
69
77
  collectionRef.current = createGroupChannelListCollection(sdk, options === null || options === void 0 ? void 0 : options.collectionCreator);
70
78
  (_collectionRef$curren3 = collectionRef.current) === null || _collectionRef$curren3 === void 0 ? void 0 : _collectionRef$curren3.setGroupChannelCollectionHandler({
71
- onChannelsAdded: () => {
72
- updateChannelsAndMarkAsDelivered(true);
79
+ onChannelsAdded: (context, channels) => {
80
+ updateChannelsAndMarkAsDelivered(true, context.source, channels);
73
81
  },
74
- onChannelsUpdated: () => {
75
- updateChannelsAndMarkAsDelivered(true);
82
+ onChannelsUpdated: (context, channels) => {
83
+ updateChannelsAndMarkAsDelivered(true, context.source, channels);
76
84
  },
77
85
  onChannelsDeleted: () => {
78
86
  updateChannelsAndMarkAsDelivered(false);
@@ -1 +1 @@
1
- {"version":3,"names":["HOOK_NAME","createGroupChannelListCollection","sdk","collectionCreator","passedCollection","filter","GroupChannelFilter","includeEmpty","groupChannel","createGroupChannelCollection","limit","order","GroupChannelListOrder","LATEST_LAST_MESSAGE","useGroupChannelListWithCollection","userId","options","id","useUniqId","deliveryReceiptEnabled","useAppFeatures","collectionRef","useRef","loading","groupChannels","refreshing","setChannels","deleteChannels","updateRefreshing","updateLoading","useGroupChannelListReducer","updateChannelsAndMarkAsDelivered","markAsDelivered","channels","current","forEach","channel","confirmAndMarkAsDelivered","init","useFreshCallback","uid","dispose","setGroupChannelCollectionHandler","onChannelsAdded","onChannelsUpdated","onChannelsDeleted","hasMore","loadMore","useEffect","useAsyncEffect","useChannelHandler","onUserBanned","user","isMe","url","refresh","next"],"sources":["useGroupChannelListWithCollection.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { GroupChannelFilter, GroupChannelListOrder } from '@sendbird/chat/groupChannel';\nimport type { SendbirdChatSDK, SendbirdGroupChannelCollection } from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelList, UseGroupChannelListOptions } from '../../types';\nimport { useGroupChannelListReducer } from './reducer';\n\nconst HOOK_NAME = 'useGroupChannelListWithCollection';\n\nconst createGroupChannelListCollection = (\n sdk: SendbirdChatSDK,\n collectionCreator: UseGroupChannelListOptions['collectionCreator'],\n) => {\n const passedCollection = collectionCreator?.();\n if (passedCollection) return passedCollection;\n\n const filter = new GroupChannelFilter();\n filter.includeEmpty = false;\n\n return sdk.groupChannel.createGroupChannelCollection({\n filter,\n limit: 20,\n order: GroupChannelListOrder.LATEST_LAST_MESSAGE,\n });\n};\n\nexport const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, userId, options) => {\n const id = useUniqId(HOOK_NAME);\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const collectionRef = useRef<SendbirdGroupChannelCollection>();\n\n const { loading, groupChannels, refreshing, setChannels, deleteChannels, updateRefreshing, updateLoading } =\n useGroupChannelListReducer();\n\n const updateChannelsAndMarkAsDelivered = (markAsDelivered: boolean) => {\n const channels = collectionRef.current?.channels ?? [];\n setChannels(channels, true);\n if (markAsDelivered && deliveryReceiptEnabled) {\n channels.forEach((channel) => confirmAndMarkAsDelivered(sdk, channel));\n }\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createGroupChannelListCollection(sdk, options?.collectionCreator);\n\n collectionRef.current?.setGroupChannelCollectionHandler({\n onChannelsAdded: () => {\n updateChannelsAndMarkAsDelivered(true);\n },\n onChannelsUpdated: () => {\n updateChannelsAndMarkAsDelivered(true);\n },\n onChannelsDeleted: () => {\n updateChannelsAndMarkAsDelivered(false);\n },\n });\n\n if (collectionRef.current?.hasMore) {\n await collectionRef.current?.loadMore();\n updateChannelsAndMarkAsDelivered(true);\n }\n }\n });\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [init, userId]);\n\n useChannelHandler(sdk, `${HOOK_NAME}_${id}`, {\n onUserBanned: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannelsAndMarkAsDelivered(false);\n },\n });\n\n const refresh = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const next = useFreshCallback(async () => {\n if (collectionRef.current?.hasMore) {\n await collectionRef.current?.loadMore();\n updateChannelsAndMarkAsDelivered(true);\n }\n });\n\n return {\n loading,\n groupChannels,\n refresh,\n refreshing,\n next,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["HOOK_NAME","createGroupChannelListCollection","sdk","collectionCreator","passedCollection","filter","GroupChannelFilter","includeEmpty","groupChannel","createGroupChannelCollection","limit","order","GroupChannelListOrder","LATEST_LAST_MESSAGE","useGroupChannelListWithCollection","userId","options","id","useUniqId","deliveryReceiptEnabled","useAppFeatures","collectionRef","useRef","loading","groupChannels","refreshing","setChannels","deleteChannels","updateRefreshing","updateLoading","useGroupChannelListReducer","updateChannelsAndMarkAsDelivered","markAsDelivered","source","updatedChannels","channels","current","GroupChannelEventSource","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT","SYNC_CHANNEL_BACKGROUND","SYNC_CHANNEL_CHANGELOGS","undefined","confirmAndMarkAsDelivered","init","useFreshCallback","uid","dispose","setGroupChannelCollectionHandler","onChannelsAdded","context","onChannelsUpdated","onChannelsDeleted","hasMore","loadMore","useEffect","useAsyncEffect","useChannelHandler","onUserBanned","channel","user","isMe","url","refresh","next"],"sources":["useGroupChannelListWithCollection.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { GroupChannelEventSource, GroupChannelFilter, GroupChannelListOrder } from '@sendbird/chat/groupChannel';\nimport type { SendbirdBaseChannel, SendbirdChatSDK, SendbirdGroupChannelCollection } from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelList, UseGroupChannelListOptions } from '../../types';\nimport { useGroupChannelListReducer } from './reducer';\n\nconst HOOK_NAME = 'useGroupChannelListWithCollection';\n\nconst createGroupChannelListCollection = (\n sdk: SendbirdChatSDK,\n collectionCreator: UseGroupChannelListOptions['collectionCreator'],\n) => {\n const passedCollection = collectionCreator?.();\n if (passedCollection) return passedCollection;\n\n const filter = new GroupChannelFilter();\n filter.includeEmpty = false;\n\n return sdk.groupChannel.createGroupChannelCollection({\n filter,\n limit: 20,\n order: GroupChannelListOrder.LATEST_LAST_MESSAGE,\n });\n};\n\nexport const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, userId, options) => {\n const id = useUniqId(HOOK_NAME);\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const collectionRef = useRef<SendbirdGroupChannelCollection>();\n\n const { loading, groupChannels, refreshing, setChannels, deleteChannels, updateRefreshing, updateLoading } =\n useGroupChannelListReducer();\n\n const updateChannelsAndMarkAsDelivered = (\n markAsDelivered: boolean,\n source?: GroupChannelEventSource,\n updatedChannels?: SendbirdBaseChannel[],\n ) => {\n const channels = collectionRef.current?.channels ?? [];\n setChannels(channels, true);\n if (markAsDelivered && deliveryReceiptEnabled) {\n switch (source) {\n case GroupChannelEventSource.EVENT_MESSAGE_RECEIVED:\n case GroupChannelEventSource.EVENT_MESSAGE_SENT:\n case GroupChannelEventSource.SYNC_CHANNEL_BACKGROUND:\n case GroupChannelEventSource.SYNC_CHANNEL_CHANGELOGS:\n case undefined:\n confirmAndMarkAsDelivered(updatedChannels ?? channels);\n break;\n }\n }\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createGroupChannelListCollection(sdk, options?.collectionCreator);\n\n collectionRef.current?.setGroupChannelCollectionHandler({\n onChannelsAdded: (context, channels) => {\n updateChannelsAndMarkAsDelivered(true, context.source, channels);\n },\n onChannelsUpdated: (context, channels) => {\n updateChannelsAndMarkAsDelivered(true, context.source, channels);\n },\n onChannelsDeleted: () => {\n updateChannelsAndMarkAsDelivered(false);\n },\n });\n\n if (collectionRef.current?.hasMore) {\n await collectionRef.current?.loadMore();\n updateChannelsAndMarkAsDelivered(true);\n }\n }\n });\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [init, userId]);\n\n useChannelHandler(sdk, `${HOOK_NAME}_${id}`, {\n onUserBanned: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannelsAndMarkAsDelivered(false);\n },\n });\n\n const refresh = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const next = useFreshCallback(async () => {\n if (collectionRef.current?.hasMore) {\n await collectionRef.current?.loadMore();\n updateChannelsAndMarkAsDelivered(true);\n }\n });\n\n return {\n loading,\n groupChannels,\n refresh,\n refreshing,\n next,\n };\n};\n"],"mappings":"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"}
@@ -48,7 +48,7 @@ const useGroupChannelListWithQuery = (sdk, userId, options) => {
48
48
 
49
49
  const updateChannelsAndMarkAsDelivered = channels => {
50
50
  updateChannels(channels);
51
- if (deliveryReceiptEnabled) channels.forEach(channel => (0, _uikitUtils.confirmAndMarkAsDelivered)(sdk, channel));
51
+ if (deliveryReceiptEnabled) (0, _uikitUtils.confirmAndMarkAsDelivered)(channels);
52
52
  };
53
53
 
54
54
  const init = (0, _uikitUtils.useFreshCallback)(async uid => {
@@ -61,7 +61,7 @@ const useGroupChannelListWithQuery = (sdk, userId, options) => {
61
61
  if ((_queryRef$current2 = queryRef.current) !== null && _queryRef$current2 !== void 0 && _queryRef$current2.hasNext) {
62
62
  const channels = await queryRef.current.next();
63
63
  setChannels(channels, true);
64
- if (deliveryReceiptEnabled) channels.forEach(channel => (0, _uikitUtils.confirmAndMarkAsDelivered)(sdk, channel));
64
+ if (deliveryReceiptEnabled) (0, _uikitUtils.confirmAndMarkAsDelivered)(channels);
65
65
  }
66
66
  }
67
67
  });
@@ -71,20 +71,24 @@ const useGroupChannelListWithQuery = (sdk, userId, options) => {
71
71
  updateLoading(false);
72
72
  }, [init, userId]);
73
73
  (0, _useChannelHandler.useChannelHandler)(sdk, HOOK_NAME, {
74
- onChannelChanged: channel => updateChannelsAndMarkAsDelivered([channel]),
74
+ onChannelChanged: channel => updateChannels([channel]),
75
75
  onChannelFrozen: channel => updateChannels([channel]),
76
76
  onChannelUnfrozen: channel => updateChannels([channel]),
77
77
  onChannelMemberCountChanged: channels => updateChannels(channels),
78
78
  onChannelDeleted: url => deleteChannels([url]),
79
- onUserJoined: channel => updateChannelsAndMarkAsDelivered([channel]),
79
+ onUserJoined: channel => updateChannels([channel]),
80
80
  onUserLeft: (channel, user) => {
81
81
  const isMe = user.userId === userId;
82
- if (isMe) deleteChannels([channel.url]);else updateChannelsAndMarkAsDelivered([channel]);
82
+ if (isMe) deleteChannels([channel.url]);else updateChannels([channel]);
83
83
  },
84
84
 
85
85
  onUserBanned(channel, user) {
86
86
  const isMe = user.userId === userId;
87
- if (isMe) deleteChannels([channel.url]);else updateChannelsAndMarkAsDelivered([channel]);
87
+ if (isMe) deleteChannels([channel.url]);else updateChannels([channel]);
88
+ },
89
+
90
+ onMessageReceived(channel) {
91
+ updateChannelsAndMarkAsDelivered([channel]);
88
92
  }
89
93
 
90
94
  });
@@ -99,7 +103,7 @@ const useGroupChannelListWithQuery = (sdk, userId, options) => {
99
103
  if ((_queryRef$current3 = queryRef.current) !== null && _queryRef$current3 !== void 0 && _queryRef$current3.hasNext) {
100
104
  const channels = await queryRef.current.next();
101
105
  setChannels(channels, false);
102
- if (deliveryReceiptEnabled) channels.forEach(channel => (0, _uikitUtils.confirmAndMarkAsDelivered)(sdk, channel));
106
+ if (deliveryReceiptEnabled) (0, _uikitUtils.confirmAndMarkAsDelivered)(channels);
103
107
  }
104
108
  });
105
109
  return {
@@ -1 +1 @@
1
- {"version":3,"names":["HOOK_NAME","createGroupChannelListQuery","sdk","queryCreator","passedQuery","groupChannel","createMyGroupChannelListQuery","includeEmpty","limit","order","GroupChannelListOrder","LATEST_LAST_MESSAGE","useGroupChannelListWithQuery","userId","options","deliveryReceiptEnabled","useAppFeatures","queryRef","useRef","loading","groupChannels","refreshing","updateChannels","setChannels","deleteChannels","updateRefreshing","updateLoading","updateOrder","useGroupChannelListReducer","updateChannelsAndMarkAsDelivered","channels","forEach","channel","confirmAndMarkAsDelivered","init","useFreshCallback","uid","current","hasNext","next","useAsyncEffect","useChannelHandler","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelMemberCountChanged","onChannelDeleted","url","onUserJoined","onUserLeft","user","isMe","onUserBanned","refresh"],"sources":["useGroupChannelListWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport { GroupChannelListOrder } from '@sendbird/chat/groupChannel';\nimport type { SendbirdChannel, SendbirdChatSDK, SendbirdGroupChannelListQuery } from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelList, UseGroupChannelListOptions } from '../../types';\nimport { useGroupChannelListReducer } from './reducer';\n\nconst HOOK_NAME = 'useGroupChannelListWithQuery';\n\nconst createGroupChannelListQuery = (\n sdk: SendbirdChatSDK,\n queryCreator: UseGroupChannelListOptions['queryCreator'],\n) => {\n const passedQuery = queryCreator?.();\n if (passedQuery) return passedQuery;\n\n return sdk.groupChannel.createMyGroupChannelListQuery({\n includeEmpty: false,\n limit: 20,\n order: GroupChannelListOrder.LATEST_LAST_MESSAGE,\n });\n};\n\nexport const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, options) => {\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n const queryRef = useRef<SendbirdGroupChannelListQuery>();\n\n const {\n loading,\n groupChannels,\n refreshing,\n updateChannels,\n setChannels,\n deleteChannels,\n updateRefreshing,\n updateLoading,\n updateOrder,\n } = useGroupChannelListReducer();\n\n const updateChannelsAndMarkAsDelivered = (channels: SendbirdChannel[]) => {\n updateChannels(channels);\n if (deliveryReceiptEnabled) channels.forEach((channel) => confirmAndMarkAsDelivered(sdk, channel));\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createGroupChannelListQuery(sdk, options?.queryCreator);\n updateOrder(queryRef.current?.order);\n\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n\n setChannels(channels, true);\n if (deliveryReceiptEnabled) channels.forEach((channel) => confirmAndMarkAsDelivered(sdk, channel));\n }\n }\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [init, userId]);\n\n useChannelHandler(sdk, HOOK_NAME, {\n onChannelChanged: (channel) => updateChannelsAndMarkAsDelivered([channel]),\n onChannelFrozen: (channel) => updateChannels([channel]),\n onChannelUnfrozen: (channel) => updateChannels([channel]),\n onChannelMemberCountChanged: (channels) => updateChannels(channels),\n onChannelDeleted: (url) => deleteChannels([url]),\n onUserJoined: (channel) => updateChannelsAndMarkAsDelivered([channel]),\n onUserLeft: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannelsAndMarkAsDelivered([channel]);\n },\n onUserBanned(channel, user) {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannelsAndMarkAsDelivered([channel]);\n },\n });\n\n const refresh = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const next = useFreshCallback(async () => {\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n setChannels(channels, false);\n if (deliveryReceiptEnabled) channels.forEach((channel) => confirmAndMarkAsDelivered(sdk, channel));\n }\n });\n\n return {\n loading,\n groupChannels,\n refresh,\n refreshing,\n next,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["HOOK_NAME","createGroupChannelListQuery","sdk","queryCreator","passedQuery","groupChannel","createMyGroupChannelListQuery","includeEmpty","limit","order","GroupChannelListOrder","LATEST_LAST_MESSAGE","useGroupChannelListWithQuery","userId","options","deliveryReceiptEnabled","useAppFeatures","queryRef","useRef","loading","groupChannels","refreshing","updateChannels","setChannels","deleteChannels","updateRefreshing","updateLoading","updateOrder","useGroupChannelListReducer","updateChannelsAndMarkAsDelivered","channels","confirmAndMarkAsDelivered","init","useFreshCallback","uid","current","hasNext","next","useAsyncEffect","useChannelHandler","onChannelChanged","channel","onChannelFrozen","onChannelUnfrozen","onChannelMemberCountChanged","onChannelDeleted","url","onUserJoined","onUserLeft","user","isMe","onUserBanned","onMessageReceived","refresh"],"sources":["useGroupChannelListWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport { GroupChannelListOrder } from '@sendbird/chat/groupChannel';\nimport type { SendbirdChannel, SendbirdChatSDK, SendbirdGroupChannelListQuery } from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelList, UseGroupChannelListOptions } from '../../types';\nimport { useGroupChannelListReducer } from './reducer';\n\nconst HOOK_NAME = 'useGroupChannelListWithQuery';\n\nconst createGroupChannelListQuery = (\n sdk: SendbirdChatSDK,\n queryCreator: UseGroupChannelListOptions['queryCreator'],\n) => {\n const passedQuery = queryCreator?.();\n if (passedQuery) return passedQuery;\n\n return sdk.groupChannel.createMyGroupChannelListQuery({\n includeEmpty: false,\n limit: 20,\n order: GroupChannelListOrder.LATEST_LAST_MESSAGE,\n });\n};\n\nexport const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, options) => {\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n const queryRef = useRef<SendbirdGroupChannelListQuery>();\n\n const {\n loading,\n groupChannels,\n refreshing,\n updateChannels,\n setChannels,\n deleteChannels,\n updateRefreshing,\n updateLoading,\n updateOrder,\n } = useGroupChannelListReducer();\n\n const updateChannelsAndMarkAsDelivered = (channels: SendbirdChannel[]) => {\n updateChannels(channels);\n if (deliveryReceiptEnabled) confirmAndMarkAsDelivered(channels);\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createGroupChannelListQuery(sdk, options?.queryCreator);\n updateOrder(queryRef.current?.order);\n\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n\n setChannels(channels, true);\n if (deliveryReceiptEnabled) confirmAndMarkAsDelivered(channels);\n }\n }\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [init, userId]);\n\n useChannelHandler(sdk, HOOK_NAME, {\n onChannelChanged: (channel) => updateChannels([channel]),\n onChannelFrozen: (channel) => updateChannels([channel]),\n onChannelUnfrozen: (channel) => updateChannels([channel]),\n onChannelMemberCountChanged: (channels) => updateChannels(channels),\n onChannelDeleted: (url) => deleteChannels([url]),\n onUserJoined: (channel) => updateChannels([channel]),\n onUserLeft: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannels([channel]);\n },\n onUserBanned(channel, user) {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannels([channel]);\n },\n onMessageReceived(channel) {\n updateChannelsAndMarkAsDelivered([channel]);\n },\n });\n\n const refresh = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const next = useFreshCallback(async () => {\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n setChannels(channels, false);\n if (deliveryReceiptEnabled) confirmAndMarkAsDelivered(channels);\n }\n });\n\n return {\n loading,\n groupChannels,\n refresh,\n refreshing,\n next,\n };\n};\n"],"mappings":"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"}
@@ -11,8 +11,6 @@ var _groupChannel = require("@sendbird/chat/groupChannel");
11
11
 
12
12
  var _uikitUtils = require("@sendbird/uikit-utils");
13
13
 
14
- var _useAppFeatures = require("../../common/useAppFeatures");
15
-
16
14
  var _useChannelHandler = require("../../handler/useChannelHandler");
17
15
 
18
16
  var _useActiveGroupChannel = require("../useActiveGroupChannel");
@@ -31,9 +29,6 @@ const createMessageCollection = (channel, creator) => {
31
29
  const HOOK_NAME = 'useGroupChannelMessagesWithCollection';
32
30
 
33
31
  const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) => {
34
- const {
35
- deliveryReceiptEnabled
36
- } = (0, _useAppFeatures.useAppFeatures)(sdk);
37
32
  const collectionRef = (0, _react.useRef)(); // NOTE: We cannot determine the channel object of Sendbird SDK is stale or not, so force update af
38
33
 
39
34
  const {
@@ -57,13 +52,7 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
57
52
 
58
53
  const channelMarkAs = async () => {
59
54
  try {
60
- if (deliveryReceiptEnabled) await (0, _uikitUtils.confirmAndMarkAsDelivered)(sdk, activeChannel);
61
- } catch (e) {
62
- _uikitUtils.Logger.warn(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);
63
- }
64
-
65
- try {
66
- await (0, _uikitUtils.confirmAndMarkAsRead)(sdk, [activeChannel]);
55
+ await (0, _uikitUtils.confirmAndMarkAsRead)([activeChannel]);
67
56
  } catch (e) {
68
57
  _uikitUtils.Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);
69
58
  }
@@ -87,8 +76,15 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
87
76
  updateNextMessages([], true, sdk.currentUser.userId);
88
77
  channelMarkAs();
89
78
  (_collectionRef$curren2 = collectionRef.current) === null || _collectionRef$curren2 === void 0 ? void 0 : _collectionRef$curren2.setMessageCollectionHandler({
90
- onMessagesAdded: (_, channel, messages) => {
91
- channelMarkAs();
79
+ onMessagesAdded: (_, __, messages) => {
80
+ switch (_.source) {
81
+ case _groupChannel.MessageEventSource.EVENT_MESSAGE_RECEIVED:
82
+ case _groupChannel.MessageEventSource.EVENT_MESSAGE_SENT_SUCCESS:
83
+ case _groupChannel.MessageEventSource.SYNC_MESSAGE_FILL:
84
+ channelMarkAs();
85
+ break;
86
+ }
87
+
92
88
  updateNextMessages(messages, false, sdk.currentUser.userId);
93
89
  updateChannel(channel);
94
90
  },
@@ -1 +1 @@
1
- {"version":3,"names":["createMessageCollection","channel","creator","filter","MessageFilter","limit","HOOK_NAME","useGroupChannelMessagesWithCollection","sdk","userId","options","deliveryReceiptEnabled","useAppFeatures","collectionRef","useRef","activeChannel","setActiveChannel","useActiveGroupChannel","forceUpdate","useForceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useGroupChannelMessagesReducer","sortComparator","channelMarkAs","confirmAndMarkAsDelivered","e","Logger","warn","confirmAndMarkAsRead","updateChannel","isGroupChannel","isDifferentChannel","init","useCallback","uid","callback","current","dispose","collectionCreator","currentUser","setMessageCollectionHandler","onMessagesAdded","_","onMessagesUpdated","onMessagesDeleted","messageIds","onChannelDeleted","onChannelUpdated","onHugeGapDetected","initialize","MessageCollectionInitPolicy","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","error","debug","length","pendingMessages","failedMessages","onApiResult","url","useChannelHandler","onUserBanned","bannedUser","useEffect","setTimeout","refresh","prev","hasPrevious","list","loadPrevious","next","hasNext","fetchedList","loadNext","push","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","sendFileMessage","isFileMessage","updateUserMessage","messageId","updatedMessage","updateFileMessage","resendMessage","failedMessage","message","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","removeFailedMessage","reqId"],"sources":["useGroupChannelMessagesWithCollection.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nimport { MessageCollectionInitPolicy, MessageFilter } from '@sendbird/chat/groupChannel';\nimport type {\n SendbirdChannel,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessageCollection,\n} from '@sendbird/uikit-utils';\nimport {\n Logger,\n confirmAndMarkAsDelivered,\n confirmAndMarkAsRead,\n isDifferentChannel,\n useForceUpdate,\n} from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useActiveGroupChannel } from '../useActiveGroupChannel';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageCollection = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['collectionCreator'],\n) => {\n if (creator) return creator();\n const filter = new MessageFilter();\n return channel.createMessageCollection({ filter, limit: 100 });\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithCollection';\n\nexport const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const collectionRef = useRef<SendbirdMessageCollection>();\n\n // NOTE: We cannot determine the channel object of Sendbird SDK is stale or not, so force update af\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAs = async () => {\n try {\n if (deliveryReceiptEnabled) await confirmAndMarkAsDelivered(sdk, activeChannel);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);\n }\n try {\n await confirmAndMarkAsRead(sdk, [activeChannel]);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);\n }\n };\n\n const updateChannel = (channel: SendbirdChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n forceUpdate();\n }\n };\n\n const init = useCallback(\n async (uid?: string, callback?: () => void) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createMessageCollection(activeChannel, options?.collectionCreator);\n updateNextMessages([], true, sdk.currentUser.userId);\n channelMarkAs();\n\n collectionRef.current?.setMessageCollectionHandler({\n onMessagesAdded: (_, channel, messages) => {\n channelMarkAs();\n updateNextMessages(messages, false, sdk.currentUser.userId);\n updateChannel(channel);\n },\n onMessagesUpdated: (_, channel, messages) => {\n updateMessages(messages, false, sdk.currentUser.userId);\n updateChannel(channel);\n },\n onMessagesDeleted: (_, channel, messageIds) => {\n deleteMessages(messageIds, []);\n deleteNextMessages(messageIds, []);\n updateChannel(channel);\n },\n onChannelDeleted: () => {\n options?.onChannelDeleted?.();\n },\n onChannelUpdated: (_, channel) => {\n updateChannel(channel);\n },\n onHugeGapDetected: () => {\n init(uid);\n },\n });\n\n collectionRef.current\n .initialize(MessageCollectionInitPolicy.CACHE_AND_REPLACE_BY_API)\n .onCacheResult((err, messages) => {\n if (err) sdk.isCacheEnabled && Logger.error(`[${HOOK_NAME}/onCacheResult]`, err);\n else {\n Logger.debug(`[${HOOK_NAME}/onCacheResult]`, 'message length:', messages.length);\n updateMessages(messages, true, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n if (messages?.length) callback?.();\n }\n })\n .onApiResult((err, messages) => {\n if (err) Logger.warn(`[${HOOK_NAME}/onApiResult]`, err);\n else {\n Logger.debug(`[${HOOK_NAME}/onApiResult]`, 'message length:', messages.length);\n updateMessages(messages, true, sdk.currentUser.userId);\n if (sdk.isCacheEnabled) {\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n }\n }\n callback?.();\n });\n }\n },\n [sdk, activeChannel.url, options?.collectionCreator],\n );\n\n useChannelHandler(sdk, HOOK_NAME, {\n onUserBanned(channel, bannedUser) {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n setActiveChannel(channel);\n forceUpdate();\n }\n }\n },\n });\n\n useEffect(() => {\n // NOTE: Cache read is heavy synchronous task, and it prevents smooth ui transition\n setTimeout(async () => {\n updateLoading(true);\n init(userId, () => updateLoading(false));\n }, 0);\n }, [init, userId]);\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useCallback(async () => {\n updateRefreshing(true);\n init(userId, () => updateRefreshing(false));\n }, [init, userId]);\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasPrevious) {\n try {\n const list = await collectionRef.current?.loadPrevious();\n updateMessages(list, false, sdk.currentUser.userId);\n } catch {}\n }\n }, []);\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useCallback(async () => {\n const list = [];\n if (collectionRef.current && collectionRef.current?.hasNext) {\n try {\n const fetchedList = await collectionRef.current?.loadNext();\n list.push(...fetchedList);\n } catch {}\n }\n if (nextMessages.length > 0) {\n list.push(...nextMessages);\n }\n if (list.length > 0) {\n updateMessages(list, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n }, [nextMessages.length]);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n activeChannel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n onPending?.(pendingMessage);\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err) => {\n reject(err);\n });\n });\n },\n [activeChannel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n activeChannel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage as SendbirdFileMessage);\n }\n })\n .onFailed((err) => {\n reject(err);\n });\n });\n },\n [activeChannel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage);\n // FIXME: v4 bugs\n // @ts-ignore\n if (failedMessage.isFileMessage()) return activeChannel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser.userId);\n },\n [activeChannel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await activeChannel.deleteMessage(message);\n if (message.isFileMessage()) await activeChannel.deleteMessage(message);\n } else {\n try {\n await collectionRef.current?.removeFailedMessage(message.reqId);\n } finally {\n deleteMessages([message.messageId], [message.reqId]);\n }\n }\n },\n [activeChannel],\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n activeChannel,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createMessageCollection","channel","creator","filter","MessageFilter","limit","HOOK_NAME","useGroupChannelMessagesWithCollection","sdk","userId","options","collectionRef","useRef","activeChannel","setActiveChannel","useActiveGroupChannel","forceUpdate","useForceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useGroupChannelMessagesReducer","sortComparator","channelMarkAs","confirmAndMarkAsRead","e","Logger","warn","updateChannel","isGroupChannel","isDifferentChannel","init","useCallback","uid","callback","current","dispose","collectionCreator","currentUser","setMessageCollectionHandler","onMessagesAdded","_","__","source","MessageEventSource","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT_SUCCESS","SYNC_MESSAGE_FILL","onMessagesUpdated","onMessagesDeleted","messageIds","onChannelDeleted","onChannelUpdated","onHugeGapDetected","initialize","MessageCollectionInitPolicy","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","error","debug","length","pendingMessages","failedMessages","onApiResult","url","useChannelHandler","onUserBanned","bannedUser","useEffect","setTimeout","refresh","prev","hasPrevious","list","loadPrevious","next","hasNext","fetchedList","loadNext","push","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","sendFileMessage","isFileMessage","updateUserMessage","messageId","updatedMessage","updateFileMessage","resendMessage","failedMessage","message","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","removeFailedMessage","reqId"],"sources":["useGroupChannelMessagesWithCollection.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nimport { MessageCollectionInitPolicy, MessageEventSource, MessageFilter } from '@sendbird/chat/groupChannel';\nimport type {\n SendbirdChannel,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessageCollection,\n} from '@sendbird/uikit-utils';\nimport { Logger, confirmAndMarkAsRead, isDifferentChannel, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useActiveGroupChannel } from '../useActiveGroupChannel';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageCollection = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['collectionCreator'],\n) => {\n if (creator) return creator();\n const filter = new MessageFilter();\n return channel.createMessageCollection({ filter, limit: 100 });\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithCollection';\n\nexport const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const collectionRef = useRef<SendbirdMessageCollection>();\n\n // NOTE: We cannot determine the channel object of Sendbird SDK is stale or not, so force update af\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAs = async () => {\n try {\n await confirmAndMarkAsRead([activeChannel]);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);\n }\n };\n\n const updateChannel = (channel: SendbirdChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n forceUpdate();\n }\n };\n\n const init = useCallback(\n async (uid?: string, callback?: () => void) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createMessageCollection(activeChannel, options?.collectionCreator);\n updateNextMessages([], true, sdk.currentUser.userId);\n channelMarkAs();\n\n collectionRef.current?.setMessageCollectionHandler({\n onMessagesAdded: (_, __, messages) => {\n switch (_.source) {\n case MessageEventSource.EVENT_MESSAGE_RECEIVED:\n case MessageEventSource.EVENT_MESSAGE_SENT_SUCCESS:\n case MessageEventSource.SYNC_MESSAGE_FILL:\n channelMarkAs();\n break;\n }\n updateNextMessages(messages, false, sdk.currentUser.userId);\n updateChannel(channel);\n },\n onMessagesUpdated: (_, channel, messages) => {\n updateMessages(messages, false, sdk.currentUser.userId);\n updateChannel(channel);\n },\n onMessagesDeleted: (_, channel, messageIds) => {\n deleteMessages(messageIds, []);\n deleteNextMessages(messageIds, []);\n updateChannel(channel);\n },\n onChannelDeleted: () => {\n options?.onChannelDeleted?.();\n },\n onChannelUpdated: (_, channel) => {\n updateChannel(channel);\n },\n onHugeGapDetected: () => {\n init(uid);\n },\n });\n\n collectionRef.current\n .initialize(MessageCollectionInitPolicy.CACHE_AND_REPLACE_BY_API)\n .onCacheResult((err, messages) => {\n if (err) sdk.isCacheEnabled && Logger.error(`[${HOOK_NAME}/onCacheResult]`, err);\n else {\n Logger.debug(`[${HOOK_NAME}/onCacheResult]`, 'message length:', messages.length);\n updateMessages(messages, true, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n if (messages?.length) callback?.();\n }\n })\n .onApiResult((err, messages) => {\n if (err) Logger.warn(`[${HOOK_NAME}/onApiResult]`, err);\n else {\n Logger.debug(`[${HOOK_NAME}/onApiResult]`, 'message length:', messages.length);\n updateMessages(messages, true, sdk.currentUser.userId);\n if (sdk.isCacheEnabled) {\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n }\n }\n callback?.();\n });\n }\n },\n [sdk, activeChannel.url, options?.collectionCreator],\n );\n\n useChannelHandler(sdk, HOOK_NAME, {\n onUserBanned(channel, bannedUser) {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n setActiveChannel(channel);\n forceUpdate();\n }\n }\n },\n });\n\n useEffect(() => {\n // NOTE: Cache read is heavy synchronous task, and it prevents smooth ui transition\n setTimeout(async () => {\n updateLoading(true);\n init(userId, () => updateLoading(false));\n }, 0);\n }, [init, userId]);\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useCallback(async () => {\n updateRefreshing(true);\n init(userId, () => updateRefreshing(false));\n }, [init, userId]);\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasPrevious) {\n try {\n const list = await collectionRef.current?.loadPrevious();\n updateMessages(list, false, sdk.currentUser.userId);\n } catch {}\n }\n }, []);\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useCallback(async () => {\n const list = [];\n if (collectionRef.current && collectionRef.current?.hasNext) {\n try {\n const fetchedList = await collectionRef.current?.loadNext();\n list.push(...fetchedList);\n } catch {}\n }\n if (nextMessages.length > 0) {\n list.push(...nextMessages);\n }\n if (list.length > 0) {\n updateMessages(list, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n }, [nextMessages.length]);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n activeChannel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n onPending?.(pendingMessage);\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err) => {\n reject(err);\n });\n });\n },\n [activeChannel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n activeChannel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage as SendbirdFileMessage);\n }\n })\n .onFailed((err) => {\n reject(err);\n });\n });\n },\n [activeChannel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage);\n // FIXME: v4 bugs\n // @ts-ignore\n if (failedMessage.isFileMessage()) return activeChannel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser.userId);\n },\n [activeChannel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await activeChannel.deleteMessage(message);\n if (message.isFileMessage()) await activeChannel.deleteMessage(message);\n } else {\n try {\n await collectionRef.current?.removeFailedMessage(message.reqId);\n } finally {\n deleteMessages([message.messageId], [message.reqId]);\n }\n }\n },\n [activeChannel],\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n activeChannel,\n };\n};\n"],"mappings":"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"}
@@ -9,8 +9,6 @@ var _react = require("react");
9
9
 
10
10
  var _uikitUtils = require("@sendbird/uikit-utils");
11
11
 
12
- var _useAppFeatures = require("../../common/useAppFeatures");
13
-
14
12
  var _useChannelHandler = require("../../handler/useChannelHandler");
15
13
 
16
14
  var _useActiveGroupChannel = require("../useActiveGroupChannel");
@@ -28,9 +26,6 @@ const createMessageQuery = (channel, creator) => {
28
26
  const HOOK_NAME = 'useGroupChannelMessagesWithQuery';
29
27
 
30
28
  const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
31
- const {
32
- deliveryReceiptEnabled
33
- } = (0, _useAppFeatures.useAppFeatures)(sdk);
34
29
  const queryRef = (0, _react.useRef)(); // NOTE: We cannot determine the channel object of Sendbird SDK is stale or not, so force update after setActiveChannel
35
30
 
36
31
  const {
@@ -54,13 +49,7 @@ const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options) => {
54
49
 
55
50
  const channelMarkAs = async () => {
56
51
  try {
57
- if (deliveryReceiptEnabled) await (0, _uikitUtils.confirmAndMarkAsDelivered)(sdk, activeChannel);
58
- } catch (e) {
59
- _uikitUtils.Logger.warn(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);
60
- }
61
-
62
- try {
63
- await (0, _uikitUtils.confirmAndMarkAsRead)(sdk, [activeChannel]);
52
+ await (0, _uikitUtils.confirmAndMarkAsRead)([channel]);
64
53
  } catch (e) {
65
54
  _uikitUtils.Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);
66
55
  }
@@ -1 +1 @@
1
- {"version":3,"names":["createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","HOOK_NAME","useGroupChannelMessagesWithQuery","sdk","userId","options","deliveryReceiptEnabled","useAppFeatures","queryRef","useRef","activeChannel","setActiveChannel","useActiveGroupChannel","forceUpdate","useForceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useGroupChannelMessagesReducer","sortComparator","channelMarkAs","confirmAndMarkAsDelivered","e","Logger","warn","confirmAndMarkAsRead","init","useCallback","uid","current","queryCreator","catch","hasNext","list","load","currentUser","url","channelUpdater","isGroupChannel","isDifferentChannel","useChannelHandler","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","find","c","onChannelDeleted","channelUrl","onOperatorUpdated","onUserLeft","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","useAsyncEffect","refresh","prev","next","length","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","err","sendFileMessage","isFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nimport type { SendbirdBaseChannel, SendbirdGroupChannel } from '@sendbird/uikit-utils';\nimport {\n Logger,\n confirmAndMarkAsDelivered,\n confirmAndMarkAsRead,\n isDifferentChannel,\n useAsyncEffect,\n useForceUpdate,\n} from '@sendbird/uikit-utils';\nimport type { SendbirdPreviousMessageListQuery } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useActiveGroupChannel } from '../useActiveGroupChannel';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageQuery = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['queryCreator'],\n) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithQuery';\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n\n // NOTE: We cannot determine the channel object of Sendbird SDK is stale or not, so force update after setActiveChannel\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAs = async () => {\n try {\n if (deliveryReceiptEnabled) await confirmAndMarkAsDelivered(sdk, activeChannel);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);\n }\n try {\n await confirmAndMarkAsRead(sdk, [activeChannel]);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);\n }\n };\n\n const init = useCallback(\n async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(activeChannel, options?.queryCreator);\n channelMarkAs().catch();\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser.userId);\n }\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n },\n [sdk, activeChannel.url, options?.queryCreator],\n );\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n setActiveChannel(channel);\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, HOOK_NAME, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n channelMarkAs();\n updateNextMessages([message], false, sdk.currentUser.userId);\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNextMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const channel = channels.find((c) => !isDifferentChannel(c, activeChannel));\n if (channel) channelUpdater(channel);\n },\n onChannelDeleted(channelUrl: string) {\n if (activeChannel.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(activeChannel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [init, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n }, [init, userId]);\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser.userId);\n }\n }, []);\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useCallback(async () => {\n if (nextMessages.length > 0) {\n updateMessages(nextMessages, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n }, [nextMessages.length]);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n activeChannel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err) => {\n reject(err);\n });\n });\n },\n [activeChannel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n activeChannel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err) => {\n reject(err);\n });\n });\n },\n [activeChannel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage);\n // FIXME: v4 bugs\n // @ts-ignore\n if (failedMessage.isFileMessage()) return activeChannel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateNextMessages([message], false, sdk.currentUser.userId);\n },\n [activeChannel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await activeChannel.deleteMessage(message);\n if (message.isFileMessage()) await activeChannel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n },\n [activeChannel],\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n activeChannel,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","HOOK_NAME","useGroupChannelMessagesWithQuery","sdk","userId","options","queryRef","useRef","activeChannel","setActiveChannel","useActiveGroupChannel","forceUpdate","useForceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useGroupChannelMessagesReducer","sortComparator","channelMarkAs","confirmAndMarkAsRead","e","Logger","warn","init","useCallback","uid","current","queryCreator","catch","hasNext","list","load","currentUser","url","channelUpdater","isGroupChannel","isDifferentChannel","useChannelHandler","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelHidden","onChannelMemberCountChanged","channels","find","c","onChannelDeleted","channelUrl","onOperatorUpdated","onUserLeft","onUserJoined","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","useAsyncEffect","refresh","prev","next","length","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","err","sendFileMessage","isFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId"],"sources":["useGroupChannelMessagesWithQuery.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nimport type { SendbirdBaseChannel, SendbirdGroupChannel } from '@sendbird/uikit-utils';\nimport {\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n useAsyncEffect,\n useForceUpdate,\n} from '@sendbird/uikit-utils';\nimport type { SendbirdPreviousMessageListQuery } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useActiveGroupChannel } from '../useActiveGroupChannel';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageQuery = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['queryCreator'],\n) => {\n if (creator) return creator();\n return channel.createPreviousMessageListQuery({\n limit: 100,\n reverse: true,\n });\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithQuery';\nexport const useGroupChannelMessagesWithQuery: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const queryRef = useRef<SendbirdPreviousMessageListQuery>();\n\n // NOTE: We cannot determine the channel object of Sendbird SDK is stale or not, so force update after setActiveChannel\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAs = async () => {\n try {\n await confirmAndMarkAsRead([channel]);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);\n }\n };\n\n const init = useCallback(\n async (uid?: string) => {\n if (uid) {\n queryRef.current = createMessageQuery(activeChannel, options?.queryCreator);\n channelMarkAs().catch();\n if (queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, true, sdk.currentUser.userId);\n }\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n },\n [sdk, activeChannel.url, options?.queryCreator],\n );\n\n const channelUpdater = (channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n setActiveChannel(channel);\n forceUpdate();\n }\n };\n\n useChannelHandler(sdk, HOOK_NAME, {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n channelMarkAs();\n updateNextMessages([message], false, sdk.currentUser.userId);\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(activeChannel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNextMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n onChannelHidden: channelUpdater,\n onChannelMemberCountChanged(channels) {\n const channel = channels.find((c) => !isDifferentChannel(c, activeChannel));\n if (channel) channelUpdater(channel);\n },\n onChannelDeleted(channelUrl: string) {\n if (activeChannel.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(activeChannel, eventChannel)) return;\n\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n channelUpdater(eventChannel);\n }\n },\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [init, userId]);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n }, [init, userId]);\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useCallback(async () => {\n if (queryRef.current && queryRef.current?.hasNext) {\n const list = await queryRef.current?.load();\n updateMessages(list, false, sdk.currentUser.userId);\n }\n }, []);\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useCallback(async () => {\n if (nextMessages.length > 0) {\n updateMessages(nextMessages, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n }, [nextMessages.length]);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n activeChannel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err) => {\n reject(err);\n });\n });\n },\n [activeChannel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n activeChannel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err) => {\n reject(err);\n });\n });\n },\n [activeChannel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage);\n // FIXME: v4 bugs\n // @ts-ignore\n if (failedMessage.isFileMessage()) return activeChannel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateNextMessages([message], false, sdk.currentUser.userId);\n },\n [activeChannel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await activeChannel.deleteMessage(message);\n if (message.isFileMessage()) await activeChannel.deleteMessage(message);\n } else {\n deleteMessages([message.messageId], [message.reqId]);\n }\n },\n [activeChannel],\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n activeChannel,\n };\n};\n"],"mappings":"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"}
@@ -32,6 +32,7 @@ const useMessageOutgoingStatus = (sdk, channel, message) => {
32
32
  }
33
33
 
34
34
  });
35
+ if (channel.isBroadcast || channel.isSuper) return 'NONE';
35
36
  if (!message) return 'NONE';
36
37
 
37
38
  if ('sendingStatus' in message) {
@@ -1 +1 @@
1
- {"version":3,"names":["HOOK_NAME","useMessageOutgoingStatus","sdk","channel","message","features","useAppFeatures","forceUpdate","useForceUpdate","currentUser","uniqId","useUniqId","useChannelHandler","onUndeliveredMemberStatusUpdated","eventChannel","isDifferentChannel","isMyMessage","userId","onUnreadMemberStatusUpdated","sendingStatus","getUnreadMemberCount","deliveryReceiptEnabled","getUndeliveredMemberCount"],"sources":["useMessageOutgoingStatus.ts"],"sourcesContent":["import type { SendbirdChatSDK, SendbirdGroupChannel, SendbirdMessage } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, isMyMessage, useForceUpdate, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../handler/useChannelHandler';\nimport { useAppFeatures } from './useAppFeatures';\n\nconst HOOK_NAME = 'useMessageOutgoingStatus';\n\nexport type SBUOutgoingStatus = 'NONE' | 'PENDING' | 'FAILED' | 'UNDELIVERED' | 'DELIVERED' | 'UNREAD' | 'READ';\n\nexport const useMessageOutgoingStatus = (\n sdk: SendbirdChatSDK,\n channel: SendbirdGroupChannel,\n message?: SendbirdMessage | null,\n): SBUOutgoingStatus => {\n const features = useAppFeatures(sdk);\n const forceUpdate = useForceUpdate();\n const currentUser = sdk.currentUser;\n\n const uniqId = useUniqId(HOOK_NAME);\n useChannelHandler(sdk, `${HOOK_NAME}_${uniqId}`, {\n onUndeliveredMemberStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!isMyMessage(message, currentUser?.userId)) return;\n\n forceUpdate();\n },\n onUnreadMemberStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!isMyMessage(message, currentUser?.userId)) return;\n\n forceUpdate();\n },\n });\n\n if (!message) return 'NONE';\n\n if ('sendingStatus' in message) {\n if (message.sendingStatus === 'pending') return 'PENDING';\n if (message.sendingStatus === 'failed') return 'FAILED';\n }\n\n if (channel.getUnreadMemberCount(message) === 0) return 'READ';\n\n if (features.deliveryReceiptEnabled) {\n if (channel.getUndeliveredMemberCount(message) === 0) return 'DELIVERED';\n return 'UNDELIVERED';\n }\n\n return 'UNREAD';\n};\n"],"mappings":";;;;;;;AACA;;AAEA;;AACA;;AAEA,MAAMA,SAAS,GAAG,0BAAlB;;AAIO,MAAMC,wBAAwB,GAAG,CACtCC,GADsC,EAEtCC,OAFsC,EAGtCC,OAHsC,KAIhB;EACtB,MAAMC,QAAQ,GAAG,IAAAC,8BAAA,EAAeJ,GAAf,CAAjB;EACA,MAAMK,WAAW,GAAG,IAAAC,0BAAA,GAApB;EACA,MAAMC,WAAW,GAAGP,GAAG,CAACO,WAAxB;EAEA,MAAMC,MAAM,GAAG,IAAAC,qBAAA,EAAUX,SAAV,CAAf;EACA,IAAAY,oCAAA,EAAkBV,GAAlB,EAAwB,GAAEF,SAAU,IAAGU,MAAO,EAA9C,EAAiD;IAC/CG,gCAAgC,CAACC,YAAD,EAAe;MAC7C,IAAI,IAAAC,8BAAA,EAAmBZ,OAAnB,EAA4BW,YAA5B,CAAJ,EAA+C;MAC/C,IAAI,CAAC,IAAAE,uBAAA,EAAYZ,OAAZ,EAAqBK,WAArB,aAAqBA,WAArB,uBAAqBA,WAAW,CAAEQ,MAAlC,CAAL,EAAgD;MAEhDV,WAAW;IACZ,CAN8C;;IAO/CW,2BAA2B,CAACJ,YAAD,EAAe;MACxC,IAAI,IAAAC,8BAAA,EAAmBZ,OAAnB,EAA4BW,YAA5B,CAAJ,EAA+C;MAC/C,IAAI,CAAC,IAAAE,uBAAA,EAAYZ,OAAZ,EAAqBK,WAArB,aAAqBA,WAArB,uBAAqBA,WAAW,CAAEQ,MAAlC,CAAL,EAAgD;MAEhDV,WAAW;IACZ;;EAZ8C,CAAjD;EAeA,IAAI,CAACH,OAAL,EAAc,OAAO,MAAP;;EAEd,IAAI,mBAAmBA,OAAvB,EAAgC;IAC9B,IAAIA,OAAO,CAACe,aAAR,KAA0B,SAA9B,EAAyC,OAAO,SAAP;IACzC,IAAIf,OAAO,CAACe,aAAR,KAA0B,QAA9B,EAAwC,OAAO,QAAP;EACzC;;EAED,IAAIhB,OAAO,CAACiB,oBAAR,CAA6BhB,OAA7B,MAA0C,CAA9C,EAAiD,OAAO,MAAP;;EAEjD,IAAIC,QAAQ,CAACgB,sBAAb,EAAqC;IACnC,IAAIlB,OAAO,CAACmB,yBAAR,CAAkClB,OAAlC,MAA+C,CAAnD,EAAsD,OAAO,WAAP;IACtD,OAAO,aAAP;EACD;;EAED,OAAO,QAAP;AACD,CAxCM"}
1
+ {"version":3,"names":["HOOK_NAME","useMessageOutgoingStatus","sdk","channel","message","features","useAppFeatures","forceUpdate","useForceUpdate","currentUser","uniqId","useUniqId","useChannelHandler","onUndeliveredMemberStatusUpdated","eventChannel","isDifferentChannel","isMyMessage","userId","onUnreadMemberStatusUpdated","isBroadcast","isSuper","sendingStatus","getUnreadMemberCount","deliveryReceiptEnabled","getUndeliveredMemberCount"],"sources":["useMessageOutgoingStatus.ts"],"sourcesContent":["import type { SendbirdChatSDK, SendbirdGroupChannel, SendbirdMessage } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, isMyMessage, useForceUpdate, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../handler/useChannelHandler';\nimport { useAppFeatures } from './useAppFeatures';\n\nconst HOOK_NAME = 'useMessageOutgoingStatus';\n\nexport type SBUOutgoingStatus = 'NONE' | 'PENDING' | 'FAILED' | 'UNDELIVERED' | 'DELIVERED' | 'UNREAD' | 'READ';\n\nexport const useMessageOutgoingStatus = (\n sdk: SendbirdChatSDK,\n channel: SendbirdGroupChannel,\n message?: SendbirdMessage | null,\n): SBUOutgoingStatus => {\n const features = useAppFeatures(sdk);\n const forceUpdate = useForceUpdate();\n const currentUser = sdk.currentUser;\n\n const uniqId = useUniqId(HOOK_NAME);\n useChannelHandler(sdk, `${HOOK_NAME}_${uniqId}`, {\n onUndeliveredMemberStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!isMyMessage(message, currentUser?.userId)) return;\n\n forceUpdate();\n },\n onUnreadMemberStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!isMyMessage(message, currentUser?.userId)) return;\n\n forceUpdate();\n },\n });\n\n if (channel.isBroadcast || channel.isSuper) return 'NONE';\n if (!message) return 'NONE';\n\n if ('sendingStatus' in message) {\n if (message.sendingStatus === 'pending') return 'PENDING';\n if (message.sendingStatus === 'failed') return 'FAILED';\n }\n\n if (channel.getUnreadMemberCount(message) === 0) return 'READ';\n\n if (features.deliveryReceiptEnabled) {\n if (channel.getUndeliveredMemberCount(message) === 0) return 'DELIVERED';\n return 'UNDELIVERED';\n }\n\n return 'UNREAD';\n};\n"],"mappings":";;;;;;;AACA;;AAEA;;AACA;;AAEA,MAAMA,SAAS,GAAG,0BAAlB;;AAIO,MAAMC,wBAAwB,GAAG,CACtCC,GADsC,EAEtCC,OAFsC,EAGtCC,OAHsC,KAIhB;EACtB,MAAMC,QAAQ,GAAG,IAAAC,8BAAA,EAAeJ,GAAf,CAAjB;EACA,MAAMK,WAAW,GAAG,IAAAC,0BAAA,GAApB;EACA,MAAMC,WAAW,GAAGP,GAAG,CAACO,WAAxB;EAEA,MAAMC,MAAM,GAAG,IAAAC,qBAAA,EAAUX,SAAV,CAAf;EACA,IAAAY,oCAAA,EAAkBV,GAAlB,EAAwB,GAAEF,SAAU,IAAGU,MAAO,EAA9C,EAAiD;IAC/CG,gCAAgC,CAACC,YAAD,EAAe;MAC7C,IAAI,IAAAC,8BAAA,EAAmBZ,OAAnB,EAA4BW,YAA5B,CAAJ,EAA+C;MAC/C,IAAI,CAAC,IAAAE,uBAAA,EAAYZ,OAAZ,EAAqBK,WAArB,aAAqBA,WAArB,uBAAqBA,WAAW,CAAEQ,MAAlC,CAAL,EAAgD;MAEhDV,WAAW;IACZ,CAN8C;;IAO/CW,2BAA2B,CAACJ,YAAD,EAAe;MACxC,IAAI,IAAAC,8BAAA,EAAmBZ,OAAnB,EAA4BW,YAA5B,CAAJ,EAA+C;MAC/C,IAAI,CAAC,IAAAE,uBAAA,EAAYZ,OAAZ,EAAqBK,WAArB,aAAqBA,WAArB,uBAAqBA,WAAW,CAAEQ,MAAlC,CAAL,EAAgD;MAEhDV,WAAW;IACZ;;EAZ8C,CAAjD;EAeA,IAAIJ,OAAO,CAACgB,WAAR,IAAuBhB,OAAO,CAACiB,OAAnC,EAA4C,OAAO,MAAP;EAC5C,IAAI,CAAChB,OAAL,EAAc,OAAO,MAAP;;EAEd,IAAI,mBAAmBA,OAAvB,EAAgC;IAC9B,IAAIA,OAAO,CAACiB,aAAR,KAA0B,SAA9B,EAAyC,OAAO,SAAP;IACzC,IAAIjB,OAAO,CAACiB,aAAR,KAA0B,QAA9B,EAAwC,OAAO,QAAP;EACzC;;EAED,IAAIlB,OAAO,CAACmB,oBAAR,CAA6BlB,OAA7B,MAA0C,CAA9C,EAAiD,OAAO,MAAP;;EAEjD,IAAIC,QAAQ,CAACkB,sBAAb,EAAqC;IACnC,IAAIpB,OAAO,CAACqB,yBAAR,CAAkCpB,OAAlC,MAA+C,CAAnD,EAAsD,OAAO,WAAP;IACtD,OAAO,aAAP;EACD;;EAED,OAAO,QAAP;AACD,CAzCM"}
@@ -1,5 +1,5 @@
1
1
  import { useEffect, useRef } from 'react';
2
- import { GroupChannelFilter, GroupChannelListOrder } from '@sendbird/chat/groupChannel';
2
+ import { GroupChannelEventSource, GroupChannelFilter, GroupChannelListOrder } from '@sendbird/chat/groupChannel';
3
3
  import { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback, useUniqId } from '@sendbird/uikit-utils';
4
4
  import { useAppFeatures } from '../../common/useAppFeatures';
5
5
  import { useChannelHandler } from '../../handler/useChannelHandler';
@@ -34,14 +34,22 @@ export const useGroupChannelListWithCollection = (sdk, userId, options) => {
34
34
  updateLoading
35
35
  } = useGroupChannelListReducer();
36
36
 
37
- const updateChannelsAndMarkAsDelivered = markAsDelivered => {
37
+ const updateChannelsAndMarkAsDelivered = (markAsDelivered, source, updatedChannels) => {
38
38
  var _collectionRef$curren;
39
39
 
40
40
  const channels = ((_collectionRef$curren = collectionRef.current) === null || _collectionRef$curren === void 0 ? void 0 : _collectionRef$curren.channels) ?? [];
41
41
  setChannels(channels, true);
42
42
 
43
43
  if (markAsDelivered && deliveryReceiptEnabled) {
44
- channels.forEach(channel => confirmAndMarkAsDelivered(sdk, channel));
44
+ switch (source) {
45
+ case GroupChannelEventSource.EVENT_MESSAGE_RECEIVED:
46
+ case GroupChannelEventSource.EVENT_MESSAGE_SENT:
47
+ case GroupChannelEventSource.SYNC_CHANNEL_BACKGROUND:
48
+ case GroupChannelEventSource.SYNC_CHANNEL_CHANGELOGS:
49
+ case undefined:
50
+ confirmAndMarkAsDelivered(updatedChannels ?? channels);
51
+ break;
52
+ }
45
53
  }
46
54
  };
47
55
 
@@ -55,11 +63,11 @@ export const useGroupChannelListWithCollection = (sdk, userId, options) => {
55
63
 
56
64
  collectionRef.current = createGroupChannelListCollection(sdk, options === null || options === void 0 ? void 0 : options.collectionCreator);
57
65
  (_collectionRef$curren3 = collectionRef.current) === null || _collectionRef$curren3 === void 0 ? void 0 : _collectionRef$curren3.setGroupChannelCollectionHandler({
58
- onChannelsAdded: () => {
59
- updateChannelsAndMarkAsDelivered(true);
66
+ onChannelsAdded: (context, channels) => {
67
+ updateChannelsAndMarkAsDelivered(true, context.source, channels);
60
68
  },
61
- onChannelsUpdated: () => {
62
- updateChannelsAndMarkAsDelivered(true);
69
+ onChannelsUpdated: (context, channels) => {
70
+ updateChannelsAndMarkAsDelivered(true, context.source, channels);
63
71
  },
64
72
  onChannelsDeleted: () => {
65
73
  updateChannelsAndMarkAsDelivered(false);