@sendbird/uikit-chat-hooks 2.4.1 → 2.4.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 (124) hide show
  1. package/README.md +2 -2
  2. package/lib/commonjs/channel/useGroupChannel.js +0 -4
  3. package/lib/commonjs/channel/useGroupChannel.js.map +1 -1
  4. package/lib/commonjs/channel/useGroupChannelList/index.js +0 -5
  5. package/lib/commonjs/channel/useGroupChannelList/index.js.map +1 -1
  6. package/lib/commonjs/channel/useGroupChannelList/reducer.js +12 -29
  7. package/lib/commonjs/channel/useGroupChannelList/reducer.js.map +1 -1
  8. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js +1 -22
  9. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
  10. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js +1 -18
  11. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
  12. package/lib/commonjs/channel/useGroupChannelMessages/index.js +0 -5
  13. package/lib/commonjs/channel/useGroupChannelMessages/index.js.map +1 -1
  14. package/lib/commonjs/channel/useGroupChannelMessages/reducer.js +18 -28
  15. package/lib/commonjs/channel/useGroupChannelMessages/reducer.js.map +1 -1
  16. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +8 -37
  17. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  18. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +21 -49
  19. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  20. package/lib/commonjs/channel/useOpenChannel.js +0 -4
  21. package/lib/commonjs/channel/useOpenChannel.js.map +1 -1
  22. package/lib/commonjs/channel/useOpenChannelList/index.js +0 -3
  23. package/lib/commonjs/channel/useOpenChannelList/index.js.map +1 -1
  24. package/lib/commonjs/channel/useOpenChannelList/reducer.js +2 -21
  25. package/lib/commonjs/channel/useOpenChannelList/reducer.js.map +1 -1
  26. package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js +1 -18
  27. package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -1
  28. package/lib/commonjs/channel/useOpenChannelMessages/index.js +0 -3
  29. package/lib/commonjs/channel/useOpenChannelMessages/index.js.map +1 -1
  30. package/lib/commonjs/channel/useOpenChannelMessages/reducer.js +18 -28
  31. package/lib/commonjs/channel/useOpenChannelMessages/reducer.js.map +1 -1
  32. package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +1 -30
  33. package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
  34. package/lib/commonjs/common/useAppFeatures.js +0 -3
  35. package/lib/commonjs/common/useAppFeatures.js.map +1 -1
  36. package/lib/commonjs/common/useMessageOutgoingStatus.js +0 -11
  37. package/lib/commonjs/common/useMessageOutgoingStatus.js.map +1 -1
  38. package/lib/commonjs/common/usePushTrigger.js +0 -6
  39. package/lib/commonjs/common/usePushTrigger.js.map +1 -1
  40. package/lib/commonjs/common/useTotalUnreadMessageCount.js +0 -7
  41. package/lib/commonjs/common/useTotalUnreadMessageCount.js.map +1 -1
  42. package/lib/commonjs/common/useUserList.js +3 -18
  43. package/lib/commonjs/common/useUserList.js.map +1 -1
  44. package/lib/commonjs/handler/useChannelHandler.js +15 -41
  45. package/lib/commonjs/handler/useChannelHandler.js.map +1 -1
  46. package/lib/commonjs/handler/useConnectionHandler.js +14 -11
  47. package/lib/commonjs/handler/useConnectionHandler.js.map +1 -1
  48. package/lib/commonjs/handler/useUserEventHandler.js +0 -8
  49. package/lib/commonjs/handler/useUserEventHandler.js.map +1 -1
  50. package/lib/commonjs/index.js +0 -23
  51. package/lib/commonjs/index.js.map +1 -1
  52. package/lib/commonjs/model/CustomQuery.js +0 -6
  53. package/lib/commonjs/model/CustomQuery.js.map +1 -1
  54. package/lib/module/channel/useGroupChannel.js.map +1 -1
  55. package/lib/module/channel/useGroupChannelList/index.js.map +1 -1
  56. package/lib/module/channel/useGroupChannelList/reducer.js +12 -26
  57. package/lib/module/channel/useGroupChannelList/reducer.js.map +1 -1
  58. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js +1 -15
  59. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
  60. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js +1 -11
  61. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
  62. package/lib/module/channel/useGroupChannelMessages/index.js.map +1 -1
  63. package/lib/module/channel/useGroupChannelMessages/reducer.js +18 -25
  64. package/lib/module/channel/useGroupChannelMessages/reducer.js.map +1 -1
  65. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +9 -30
  66. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  67. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +23 -46
  68. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  69. package/lib/module/channel/useOpenChannel.js.map +1 -1
  70. package/lib/module/channel/useOpenChannelList/index.js.map +1 -1
  71. package/lib/module/channel/useOpenChannelList/reducer.js +2 -18
  72. package/lib/module/channel/useOpenChannelList/reducer.js.map +1 -1
  73. package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js +1 -13
  74. package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -1
  75. package/lib/module/channel/useOpenChannelMessages/index.js.map +1 -1
  76. package/lib/module/channel/useOpenChannelMessages/reducer.js +18 -25
  77. package/lib/module/channel/useOpenChannelMessages/reducer.js.map +1 -1
  78. package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +1 -25
  79. package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
  80. package/lib/module/common/useAppFeatures.js.map +1 -1
  81. package/lib/module/common/useMessageOutgoingStatus.js +0 -6
  82. package/lib/module/common/useMessageOutgoingStatus.js.map +1 -1
  83. package/lib/module/common/usePushTrigger.js.map +1 -1
  84. package/lib/module/common/useTotalUnreadMessageCount.js +0 -1
  85. package/lib/module/common/useTotalUnreadMessageCount.js.map +1 -1
  86. package/lib/module/common/useUserList.js +3 -13
  87. package/lib/module/common/useUserList.js.map +1 -1
  88. package/lib/module/handler/useChannelHandler.js +15 -35
  89. package/lib/module/handler/useChannelHandler.js.map +1 -1
  90. package/lib/module/handler/useConnectionHandler.js +15 -6
  91. package/lib/module/handler/useConnectionHandler.js.map +1 -1
  92. package/lib/module/handler/useUserEventHandler.js +0 -2
  93. package/lib/module/handler/useUserEventHandler.js.map +1 -1
  94. package/lib/module/index.js +0 -1
  95. package/lib/module/index.js.map +1 -1
  96. package/lib/module/model/CustomQuery.js +0 -4
  97. package/lib/module/model/CustomQuery.js.map +1 -1
  98. package/lib/typescript/src/channel/useGroupChannelList/reducer.d.ts +1 -1
  99. package/lib/typescript/src/channel/useGroupChannelMessages/reducer.d.ts +2 -2
  100. package/lib/typescript/src/channel/useOpenChannelMessages/reducer.d.ts +2 -2
  101. package/lib/typescript/src/common/useUserList.d.ts +1 -1
  102. package/lib/typescript/src/handler/useChannelHandler.d.ts +1 -1
  103. package/lib/typescript/src/handler/useConnectionHandler.d.ts +1 -2
  104. package/lib/typescript/src/index.d.ts +0 -1
  105. package/package.json +15 -9
  106. package/src/channel/useGroupChannelList/reducer.ts +11 -7
  107. package/src/channel/useGroupChannelList/useGroupChannelListWithCollection.ts +1 -1
  108. package/src/channel/useGroupChannelList/useGroupChannelListWithQuery.ts +1 -1
  109. package/src/channel/useGroupChannelMessages/reducer.ts +11 -10
  110. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +69 -72
  111. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +32 -42
  112. package/src/channel/useOpenChannelList/useOpenChannelListWithQuery.ts +1 -1
  113. package/src/channel/useOpenChannelMessages/reducer.ts +11 -10
  114. package/src/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.ts +1 -1
  115. package/src/common/useUserList.ts +2 -2
  116. package/src/handler/useChannelHandler.ts +11 -24
  117. package/src/handler/useConnectionHandler.ts +11 -5
  118. package/src/index.ts +0 -1
  119. package/lib/commonjs/common/useTotalUnreadChannelCount.js +0 -29
  120. package/lib/commonjs/common/useTotalUnreadChannelCount.js.map +0 -1
  121. package/lib/module/common/useTotalUnreadChannelCount.js +0 -17
  122. package/lib/module/common/useTotalUnreadChannelCount.js.map +0 -1
  123. package/lib/typescript/src/common/useTotalUnreadChannelCount.d.ts +0 -6
  124. package/src/common/useTotalUnreadChannelCount.ts +0 -26
@@ -1 +1 @@
1
- {"version":3,"names":["createOpenChannelListQuery","sdk","queryCreator","passedQuery","openChannel","useOpenChannelListWithQuery","userId","options","queryRef","useRef","handlerId","useUniqHandlerId","error","loading","openChannels","refreshing","updateChannels","appendChannels","deleteChannels","updateRefreshing","updateLoading","updateError","useOpenChannelListReducer","init","useFreshCallback","uid","current","hasNext","channels","next","updateChannel","channel","isOpenChannel","useChannelHandler","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelDeleted","url","onUserBanned","user","isMe","onUserEntered","find","it","refresh","useAsyncEffect","e"],"sources":["useOpenChannelListWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { SendbirdBaseChannel, SendbirdChatSDK, SendbirdOpenChannelListQuery } from '@sendbird/uikit-utils';\nimport { useAsyncEffect, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseOpenChannelList, UseOpenChannelListOptions } from '../../types';\nimport { useOpenChannelListReducer } from './reducer';\n\nconst createOpenChannelListQuery = (sdk: SendbirdChatSDK, queryCreator: UseOpenChannelListOptions['queryCreator']) => {\n const passedQuery = queryCreator?.();\n if (passedQuery) return passedQuery;\n return sdk.openChannel.createOpenChannelListQuery({});\n};\n\nexport const useOpenChannelListWithQuery: UseOpenChannelList = (sdk, userId, options) => {\n const queryRef = useRef<SendbirdOpenChannelListQuery>();\n const handlerId = useUniqHandlerId('useOpenChannelListWithQuery');\n\n const {\n error,\n loading,\n openChannels,\n refreshing,\n updateChannels,\n appendChannels,\n deleteChannels,\n updateRefreshing,\n updateLoading,\n updateError,\n } = useOpenChannelListReducer();\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createOpenChannelListQuery(sdk, options?.queryCreator);\n\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n appendChannels(channels, true);\n }\n }\n });\n\n const updateChannel = (channel: SendbirdBaseChannel) => {\n if (channel.isOpenChannel()) updateChannels([channel]);\n };\n\n useChannelHandler(\n sdk,\n handlerId,\n {\n onChannelChanged: updateChannel,\n onChannelFrozen: updateChannel,\n onChannelUnfrozen: updateChannel,\n onChannelDeleted: (url) => deleteChannels([url]),\n onUserBanned(channel, user) {\n const isMe = user.userId === userId;\n if (isMe && channel.isOpenChannel()) deleteChannels([channel.url]);\n },\n onUserEntered: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe && channel.isOpenChannel() && !openChannels.find((it) => it.url === channel.url)) {\n appendChannels([], true);\n refresh();\n }\n },\n },\n 'open',\n );\n\n useAsyncEffect(async () => {\n updateLoading(true);\n updateError(null);\n try {\n await init(userId);\n } catch (e) {\n updateError(e);\n appendChannels([], true);\n } finally {\n updateLoading(false);\n }\n }, [init, userId]);\n\n const refresh = useFreshCallback(async () => {\n updateRefreshing(true);\n updateError(null);\n try {\n await init(userId);\n } catch (e) {\n updateError(e);\n appendChannels([], true);\n } finally {\n updateRefreshing(false);\n }\n });\n\n const next = useFreshCallback(async () => {\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n appendChannels(channels, false);\n }\n });\n\n return {\n error,\n loading,\n openChannels,\n refresh,\n refreshing,\n next,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_reducer","createOpenChannelListQuery","sdk","queryCreator","passedQuery","openChannel","useOpenChannelListWithQuery","userId","options","queryRef","useRef","handlerId","useUniqHandlerId","error","loading","openChannels","refreshing","updateChannels","appendChannels","deleteChannels","updateRefreshing","updateLoading","updateError","useOpenChannelListReducer","init","useFreshCallback","uid","_queryRef$current","current","hasNext","channels","next","updateChannel","channel","isOpenChannel","useChannelHandler","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelDeleted","url","onUserBanned","user","isMe","onUserEntered","find","it","refresh","useAsyncEffect","e","_queryRef$current2","exports"],"sources":["useOpenChannelListWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { SendbirdBaseChannel, SendbirdChatSDK, SendbirdOpenChannelListQuery } from '@sendbird/uikit-utils';\nimport { useAsyncEffect, useFreshCallback, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseOpenChannelList, UseOpenChannelListOptions } from '../../types';\nimport { useOpenChannelListReducer } from './reducer';\n\nconst createOpenChannelListQuery = (sdk: SendbirdChatSDK, queryCreator: UseOpenChannelListOptions['queryCreator']) => {\n const passedQuery = queryCreator?.();\n if (passedQuery) return passedQuery;\n return sdk.openChannel.createOpenChannelListQuery({});\n};\n\nexport const useOpenChannelListWithQuery: UseOpenChannelList = (sdk, userId, options) => {\n const queryRef = useRef<SendbirdOpenChannelListQuery>();\n const handlerId = useUniqHandlerId('useOpenChannelListWithQuery');\n\n const {\n error,\n loading,\n openChannels,\n refreshing,\n updateChannels,\n appendChannels,\n deleteChannels,\n updateRefreshing,\n updateLoading,\n updateError,\n } = useOpenChannelListReducer();\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createOpenChannelListQuery(sdk, options?.queryCreator);\n\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n appendChannels(channels, true);\n }\n }\n });\n\n const updateChannel = (channel: SendbirdBaseChannel) => {\n if (channel.isOpenChannel()) updateChannels([channel]);\n };\n\n useChannelHandler(\n sdk,\n handlerId,\n {\n onChannelChanged: updateChannel,\n onChannelFrozen: updateChannel,\n onChannelUnfrozen: updateChannel,\n onChannelDeleted: (url) => deleteChannels([url]),\n onUserBanned(channel, user) {\n const isMe = user.userId === userId;\n if (isMe && channel.isOpenChannel()) deleteChannels([channel.url]);\n },\n onUserEntered: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe && channel.isOpenChannel() && !openChannels.find((it) => it.url === channel.url)) {\n appendChannels([], true);\n refresh();\n }\n },\n },\n 'open',\n );\n\n useAsyncEffect(async () => {\n updateLoading(true);\n updateError(null);\n try {\n await init(userId);\n } catch (e) {\n updateError(e);\n appendChannels([], true);\n } finally {\n updateLoading(false);\n }\n }, [userId]);\n\n const refresh = useFreshCallback(async () => {\n updateRefreshing(true);\n updateError(null);\n try {\n await init(userId);\n } catch (e) {\n updateError(e);\n appendChannels([], true);\n } finally {\n updateRefreshing(false);\n }\n });\n\n const next = useFreshCallback(async () => {\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n appendChannels(channels, false);\n }\n });\n\n return {\n error,\n loading,\n openChannels,\n refresh,\n refreshing,\n next,\n };\n};\n"],"mappings":"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"}
@@ -4,12 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useOpenChannelMessages = void 0;
7
-
8
7
  var _useOpenChannelMessagesWithQuery = require("./useOpenChannelMessagesWithQuery");
9
-
10
8
  const useOpenChannelMessages = (sdk, channel, userId, options) => {
11
9
  return (0, _useOpenChannelMessagesWithQuery.useOpenChannelMessagesWithQuery)(sdk, channel, userId, options);
12
10
  };
13
-
14
11
  exports.useOpenChannelMessages = useOpenChannelMessages;
15
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useOpenChannelMessages","sdk","channel","userId","options","useOpenChannelMessagesWithQuery"],"sources":["index.ts"],"sourcesContent":["import type { UseOpenChannelMessages } from '../../types';\nimport { useOpenChannelMessagesWithQuery } from './useOpenChannelMessagesWithQuery';\n\nexport const useOpenChannelMessages: UseOpenChannelMessages = (sdk, channel, userId, options) => {\n return useOpenChannelMessagesWithQuery(sdk, channel, userId, options);\n};\n"],"mappings":";;;;;;;AACA;;AAEO,MAAMA,sBAA8C,GAAG,CAACC,GAAD,EAAMC,OAAN,EAAeC,MAAf,EAAuBC,OAAvB,KAAmC;EAC/F,OAAO,IAAAC,gEAAA,EAAgCJ,GAAhC,EAAqCC,OAArC,EAA8CC,MAA9C,EAAsDC,OAAtD,CAAP;AACD,CAFM"}
1
+ {"version":3,"names":["_useOpenChannelMessagesWithQuery","require","useOpenChannelMessages","sdk","channel","userId","options","useOpenChannelMessagesWithQuery","exports"],"sources":["index.ts"],"sourcesContent":["import type { UseOpenChannelMessages } from '../../types';\nimport { useOpenChannelMessagesWithQuery } from './useOpenChannelMessagesWithQuery';\n\nexport const useOpenChannelMessages: UseOpenChannelMessages = (sdk, channel, userId, options) => {\n return useOpenChannelMessagesWithQuery(sdk, channel, userId, options);\n};\n"],"mappings":";;;;;;AACA,IAAAA,gCAAA,GAAAC,OAAA;AAEO,MAAMC,sBAA8C,GAAGA,CAACC,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,KAAK;EAC/F,OAAO,IAAAC,gEAA+B,EAACJ,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,CAAC;AACvE,CAAC;AAACE,OAAA,CAAAN,sBAAA,GAAAA,sBAAA"}
@@ -4,50 +4,49 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useOpenChannelMessagesReducer = void 0;
7
-
8
7
  var _react = require("react");
9
-
10
8
  var _uikitUtils = require("@sendbird/uikit-utils");
11
-
12
9
  const defaultReducer = (_ref, action) => {
13
- let { ...draft
10
+ let {
11
+ ...draft
14
12
  } = _ref;
15
-
16
13
  switch (action.type) {
17
14
  case 'update_refreshing':
15
+ {
16
+ draft['refreshing'] = action.value.status;
17
+ return draft;
18
+ }
18
19
  case 'update_loading':
19
20
  {
20
- const key = action.type === 'update_loading' ? 'loading' : 'refreshing';
21
- draft[key] = action.value.status;
21
+ draft['loading'] = action.value.status;
22
22
  return draft;
23
23
  }
24
-
25
24
  case 'update_messages':
26
25
  case 'update_next_messages':
27
26
  {
28
27
  const key = action.type === 'update_messages' ? 'messageMap' : 'nextMessageMap';
29
28
  const receivedMessagesAsMap = (0, _uikitUtils.arrayToMapWithGetter)(action.value.messages, _uikitUtils.getMessageUniqId);
30
-
31
- if (action.value.clearPrev) {
29
+ if (action.value.clearBeforeAction) {
32
30
  draft[key] = receivedMessagesAsMap;
33
31
  } else {
34
- draft[key] = { ...draft[key],
32
+ draft[key] = {
33
+ ...draft[key],
35
34
  ...receivedMessagesAsMap
36
- }; // NOTE: Replace pending message to succeeded message
35
+ };
37
36
 
37
+ // NOTE: Replace pending message to succeeded message
38
38
  action.value.messages.filter(m => {
39
39
  return (m.isFileMessage() || m.isUserMessage()) && Boolean(draft[key][m.reqId]) && m.sendingStatus === 'succeeded' && (0, _uikitUtils.isMyMessage)(m, action.value.currentUserId);
40
40
  }).forEach(m => delete draft[key][m.reqId]);
41
41
  }
42
-
43
42
  return draft;
44
43
  }
45
-
46
44
  case 'delete_messages':
47
45
  case 'delete_next_messages':
48
46
  {
49
47
  const key = action.type === 'delete_messages' ? 'messageMap' : 'nextMessageMap';
50
- draft[key] = { ...draft[key]
48
+ draft[key] = {
49
+ ...draft[key]
51
50
  };
52
51
  action.value.messageIds.forEach(msgId => delete draft[key][msgId]);
53
52
  action.value.reqIds.forEach(reqId => delete draft[key][reqId]);
@@ -55,7 +54,6 @@ const defaultReducer = (_ref, action) => {
55
54
  }
56
55
  }
57
56
  };
58
-
59
57
  const useOpenChannelMessagesReducer = (userId, sortComparator) => {
60
58
  const [{
61
59
  loading,
@@ -68,18 +66,16 @@ const useOpenChannelMessagesReducer = (userId, sortComparator) => {
68
66
  messageMap: {},
69
67
  nextMessageMap: {}
70
68
  });
71
-
72
- const updateMessages = (messages, clearPrev, currentUserId) => {
69
+ const updateMessages = (messages, clearBeforeAction, currentUserId) => {
73
70
  dispatch({
74
71
  type: 'update_messages',
75
72
  value: {
76
73
  messages,
77
- clearPrev,
74
+ clearBeforeAction,
78
75
  currentUserId
79
76
  }
80
77
  });
81
78
  };
82
-
83
79
  const deleteMessages = (messageIds, reqIds) => {
84
80
  dispatch({
85
81
  type: 'delete_messages',
@@ -89,18 +85,16 @@ const useOpenChannelMessagesReducer = (userId, sortComparator) => {
89
85
  }
90
86
  });
91
87
  };
92
-
93
- const updateNextMessages = (messages, clearPrev, currentUserId) => {
88
+ const updateNextMessages = (messages, clearBeforeAction, currentUserId) => {
94
89
  dispatch({
95
90
  type: 'update_next_messages',
96
91
  value: {
97
92
  messages,
98
- clearPrev,
93
+ clearBeforeAction,
99
94
  currentUserId
100
95
  }
101
96
  });
102
97
  };
103
-
104
98
  const deleteNextMessages = (messageIds, reqIds) => {
105
99
  dispatch({
106
100
  type: 'delete_next_messages',
@@ -110,7 +104,6 @@ const useOpenChannelMessagesReducer = (userId, sortComparator) => {
110
104
  }
111
105
  });
112
106
  };
113
-
114
107
  const updateLoading = status => {
115
108
  dispatch({
116
109
  type: 'update_loading',
@@ -119,7 +112,6 @@ const useOpenChannelMessagesReducer = (userId, sortComparator) => {
119
112
  }
120
113
  });
121
114
  };
122
-
123
115
  const updateRefreshing = status => {
124
116
  dispatch({
125
117
  type: 'update_refreshing',
@@ -128,7 +120,6 @@ const useOpenChannelMessagesReducer = (userId, sortComparator) => {
128
120
  }
129
121
  });
130
122
  };
131
-
132
123
  const messages = (0, _uikitUtils.useIIFE)(() => {
133
124
  if (sortComparator) return Object.values(messageMap).sort(sortComparator);
134
125
  return Object.values(messageMap);
@@ -149,6 +140,5 @@ const useOpenChannelMessagesReducer = (userId, sortComparator) => {
149
140
  newMessagesFromMembers
150
141
  };
151
142
  };
152
-
153
143
  exports.useOpenChannelMessagesReducer = useOpenChannelMessagesReducer;
154
144
  //# sourceMappingURL=reducer.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["defaultReducer","action","draft","type","key","value","status","receivedMessagesAsMap","arrayToMapWithGetter","messages","getMessageUniqId","clearPrev","filter","m","isFileMessage","isUserMessage","Boolean","reqId","sendingStatus","isMyMessage","currentUserId","forEach","messageIds","msgId","reqIds","useOpenChannelMessagesReducer","userId","sortComparator","loading","refreshing","messageMap","nextMessageMap","dispatch","useReducer","updateMessages","deleteMessages","updateNextMessages","deleteNextMessages","updateLoading","updateRefreshing","useIIFE","Object","values","sort","nextMessages","newMessagesFromMembers","msg","isNewMessage"],"sources":["reducer.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport type { SendbirdBaseMessage, SendbirdFileMessage, SendbirdUserMessage } from '@sendbird/uikit-utils';\nimport { arrayToMapWithGetter, getMessageUniqId, isMyMessage, isNewMessage, useIIFE } from '@sendbird/uikit-utils';\n\nimport type { UseOpenChannelMessagesOptions } from '../../types';\n\ntype Action =\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_messages' | 'update_next_messages';\n value: { messages: SendbirdBaseMessage[]; clearPrev: boolean; currentUserId?: string };\n }\n | {\n type: 'delete_messages' | 'delete_next_messages';\n value: { messageIds: number[]; reqIds: string[] };\n };\n\ntype State = {\n loading: boolean;\n refreshing: boolean;\n messageMap: Record<string, SendbirdBaseMessage>;\n nextMessageMap: Record<string, SendbirdBaseMessage>;\n};\n\nconst defaultReducer = ({ ...draft }: State, action: Action) => {\n switch (action.type) {\n case 'update_refreshing':\n case 'update_loading': {\n const key = action.type === 'update_loading' ? 'loading' : 'refreshing';\n draft[key] = action.value.status;\n\n return draft;\n }\n case 'update_messages':\n case 'update_next_messages': {\n const key = action.type === 'update_messages' ? 'messageMap' : 'nextMessageMap';\n const receivedMessagesAsMap = arrayToMapWithGetter(action.value.messages, getMessageUniqId);\n if (action.value.clearPrev) {\n draft[key] = receivedMessagesAsMap;\n } else {\n draft[key] = { ...draft[key], ...receivedMessagesAsMap };\n\n // NOTE: Replace pending message to succeeded message\n action.value.messages\n .filter((m): m is SendbirdUserMessage | SendbirdFileMessage => {\n return (\n (m.isFileMessage() || m.isUserMessage()) &&\n Boolean(draft[key][m.reqId]) &&\n m.sendingStatus === 'succeeded' &&\n isMyMessage(m, action.value.currentUserId)\n );\n })\n .forEach((m) => delete draft[key][m.reqId]);\n }\n\n return draft;\n }\n case 'delete_messages':\n case 'delete_next_messages': {\n const key = action.type === 'delete_messages' ? 'messageMap' : 'nextMessageMap';\n draft[key] = { ...draft[key] };\n action.value.messageIds.forEach((msgId) => delete draft[key][msgId]);\n action.value.reqIds.forEach((reqId) => delete draft[key][reqId]);\n\n return draft;\n }\n }\n};\n\nexport const useOpenChannelMessagesReducer = (\n userId?: string,\n sortComparator?: UseOpenChannelMessagesOptions['sortComparator'],\n) => {\n const [{ loading, refreshing, messageMap, nextMessageMap }, dispatch] = useReducer(defaultReducer, {\n loading: true,\n refreshing: false,\n messageMap: {},\n nextMessageMap: {},\n });\n\n const updateMessages = (messages: SendbirdBaseMessage[], clearPrev: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_messages', value: { messages, clearPrev, currentUserId } });\n };\n const deleteMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_messages', value: { messageIds, reqIds } });\n };\n const updateNextMessages = (messages: SendbirdBaseMessage[], clearPrev: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_next_messages', value: { messages, clearPrev, currentUserId } });\n };\n const deleteNextMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_next_messages', value: { messageIds, reqIds } });\n };\n const updateLoading = (status: boolean) => {\n dispatch({ type: 'update_loading', value: { status } });\n };\n const updateRefreshing = (status: boolean) => {\n dispatch({ type: 'update_refreshing', value: { status } });\n };\n\n const messages = useIIFE(() => {\n if (sortComparator) return Object.values(messageMap).sort(sortComparator);\n return Object.values(messageMap);\n });\n const nextMessages = Object.values(nextMessageMap);\n const newMessagesFromMembers = nextMessages.filter((msg) => isNewMessage(msg, userId));\n\n return {\n updateLoading,\n updateRefreshing,\n updateMessages,\n updateNextMessages,\n deleteMessages,\n deleteNextMessages,\n\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","require","_uikitUtils","defaultReducer","_ref","action","draft","type","value","status","key","receivedMessagesAsMap","arrayToMapWithGetter","messages","getMessageUniqId","clearBeforeAction","filter","m","isFileMessage","isUserMessage","Boolean","reqId","sendingStatus","isMyMessage","currentUserId","forEach","messageIds","msgId","reqIds","useOpenChannelMessagesReducer","userId","sortComparator","loading","refreshing","messageMap","nextMessageMap","dispatch","useReducer","updateMessages","deleteMessages","updateNextMessages","deleteNextMessages","updateLoading","updateRefreshing","useIIFE","Object","values","sort","nextMessages","newMessagesFromMembers","msg","isNewMessage","exports"],"sources":["reducer.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport type { SendbirdBaseMessage, SendbirdFileMessage, SendbirdUserMessage } from '@sendbird/uikit-utils';\nimport { arrayToMapWithGetter, getMessageUniqId, isMyMessage, isNewMessage, useIIFE } from '@sendbird/uikit-utils';\n\nimport type { UseOpenChannelMessagesOptions } from '../../types';\n\ntype Action =\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_messages' | 'update_next_messages';\n value: { messages: SendbirdBaseMessage[]; clearBeforeAction: boolean; currentUserId?: string };\n }\n | {\n type: 'delete_messages' | 'delete_next_messages';\n value: { messageIds: number[]; reqIds: string[] };\n };\n\ntype State = {\n loading: boolean;\n refreshing: boolean;\n messageMap: Record<string, SendbirdBaseMessage>;\n nextMessageMap: Record<string, SendbirdBaseMessage>;\n};\n\nconst defaultReducer = ({ ...draft }: State, action: Action) => {\n switch (action.type) {\n case 'update_refreshing': {\n 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 case 'update_next_messages': {\n const key = action.type === 'update_messages' ? 'messageMap' : 'nextMessageMap';\n const receivedMessagesAsMap = arrayToMapWithGetter(action.value.messages, getMessageUniqId);\n if (action.value.clearBeforeAction) {\n draft[key] = receivedMessagesAsMap;\n } else {\n draft[key] = { ...draft[key], ...receivedMessagesAsMap };\n\n // NOTE: Replace pending message to succeeded message\n action.value.messages\n .filter((m): m is SendbirdUserMessage | SendbirdFileMessage => {\n return (\n (m.isFileMessage() || m.isUserMessage()) &&\n Boolean(draft[key][m.reqId]) &&\n m.sendingStatus === 'succeeded' &&\n isMyMessage(m, action.value.currentUserId)\n );\n })\n .forEach((m) => delete draft[key][m.reqId]);\n }\n\n return draft;\n }\n case 'delete_messages':\n case 'delete_next_messages': {\n const key = action.type === 'delete_messages' ? 'messageMap' : 'nextMessageMap';\n draft[key] = { ...draft[key] };\n action.value.messageIds.forEach((msgId) => delete draft[key][msgId]);\n action.value.reqIds.forEach((reqId) => delete draft[key][reqId]);\n\n return draft;\n }\n }\n};\n\nexport const useOpenChannelMessagesReducer = (\n userId?: string,\n sortComparator?: UseOpenChannelMessagesOptions['sortComparator'],\n) => {\n const [{ loading, refreshing, messageMap, nextMessageMap }, dispatch] = useReducer(defaultReducer, {\n loading: true,\n refreshing: false,\n messageMap: {},\n nextMessageMap: {},\n });\n\n const updateMessages = (messages: SendbirdBaseMessage[], 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 updateNextMessages = (messages: SendbirdBaseMessage[], clearBeforeAction: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_next_messages', value: { messages, clearBeforeAction, currentUserId } });\n };\n const deleteNextMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_next_messages', value: { messageIds, reqIds } });\n };\n const updateLoading = (status: boolean) => {\n dispatch({ type: 'update_loading', value: { status } });\n };\n const updateRefreshing = (status: boolean) => {\n dispatch({ type: 'update_refreshing', value: { status } });\n };\n\n const messages = useIIFE(() => {\n if (sortComparator) return Object.values(messageMap).sort(sortComparator);\n return Object.values(messageMap);\n });\n const nextMessages = Object.values(nextMessageMap);\n const newMessagesFromMembers = nextMessages.filter((msg) => isNewMessage(msg, userId));\n\n return {\n updateLoading,\n updateRefreshing,\n updateMessages,\n updateNextMessages,\n deleteMessages,\n deleteNextMessages,\n\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n };\n};\n"],"mappings":"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"}
@@ -4,15 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useOpenChannelMessagesWithQuery = void 0;
7
-
8
7
  var _react = require("react");
9
-
10
8
  var _uikitUtils = require("@sendbird/uikit-utils");
11
-
12
9
  var _useChannelHandler = require("../../handler/useChannelHandler");
13
-
14
10
  var _reducer = require("./reducer");
15
-
16
11
  const createMessageQuery = (channel, creator) => {
17
12
  if (creator) return creator();
18
13
  return channel.createPreviousMessageListQuery({
@@ -20,7 +15,6 @@ const createMessageQuery = (channel, creator) => {
20
15
  reverse: true
21
16
  });
22
17
  };
23
-
24
18
  const useOpenChannelMessagesWithQuery = (sdk, channel, userId, options) => {
25
19
  const queryRef = (0, _react.useRef)();
26
20
  const forceUpdate = (0, _uikitUtils.useForceUpdate)();
@@ -41,100 +35,80 @@ const useOpenChannelMessagesWithQuery = (sdk, channel, userId, options) => {
41
35
  const init = (0, _uikitUtils.useFreshCallback)(async uid => {
42
36
  if (uid) {
43
37
  var _queryRef$current;
44
-
45
38
  queryRef.current = createMessageQuery(channel, options === null || options === void 0 ? void 0 : options.queryCreator);
46
-
47
39
  if ((_queryRef$current = queryRef.current) !== null && _queryRef$current !== void 0 && _queryRef$current.hasNext) {
48
40
  var _queryRef$current2;
49
-
50
41
  const list = await ((_queryRef$current2 = queryRef.current) === null || _queryRef$current2 === void 0 ? void 0 : _queryRef$current2.load());
51
42
  updateMessages(list, true, sdk.currentUser.userId);
52
43
  }
53
-
54
44
  updateNextMessages([], true, sdk.currentUser.userId);
55
45
  }
56
46
  });
57
-
58
47
  const channelUpdater = channel => {
59
48
  if (channel.isOpenChannel() && !(0, _uikitUtils.isDifferentChannel)(channel, channel)) {
60
49
  forceUpdate();
61
50
  }
62
51
  };
63
-
64
52
  (0, _useChannelHandler.useChannelHandler)(sdk, handlerId, {
65
53
  // Messages
66
54
  onMessageReceived(eventChannel, message) {
67
55
  if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
68
56
  updateNextMessages([message], false, sdk.currentUser.userId);
69
57
  },
70
-
71
58
  onMessageUpdated(eventChannel, message) {
72
59
  if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
73
60
  updateMessages([message], false, sdk.currentUser.userId);
74
61
  },
75
-
76
62
  onMessageDeleted(eventChannel, messageId) {
77
63
  if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
78
64
  deleteMessages([messageId], []);
79
65
  deleteNextMessages([messageId], []);
80
66
  },
81
-
82
67
  // Channels
83
68
  onChannelChanged: channelUpdater,
84
69
  onChannelFrozen: channelUpdater,
85
70
  onChannelUnfrozen: channelUpdater,
86
-
87
71
  onChannelParticipantCountChanged(eventChannel) {
88
72
  if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
89
73
  channelUpdater(eventChannel);
90
74
  },
91
-
92
75
  onChannelDeleted(channelUrl, type) {
93
76
  if (channel.url === channelUrl && type === 'open') {
94
77
  var _options$onChannelDel;
95
-
96
78
  options === null || options === void 0 ? void 0 : (_options$onChannelDel = options.onChannelDeleted) === null || _options$onChannelDel === void 0 ? void 0 : _options$onChannelDel.call(options);
97
79
  }
98
80
  },
99
-
100
81
  // Users
101
82
  onOperatorUpdated: channelUpdater,
102
83
  onUserUnbanned: channelUpdater,
103
84
  onUserMuted: channelUpdater,
104
85
  onUserUnmuted: channelUpdater,
105
-
106
86
  onUserBanned(eventChannel, bannedUser) {
107
87
  if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
108
-
109
88
  if (bannedUser.userId === sdk.currentUser.userId) {
110
89
  var _options$onChannelDel2;
111
-
112
90
  options === null || options === void 0 ? void 0 : (_options$onChannelDel2 = options.onChannelDeleted) === null || _options$onChannelDel2 === void 0 ? void 0 : _options$onChannelDel2.call(options);
113
91
  } else {
114
92
  channelUpdater(eventChannel);
115
93
  }
116
94
  }
117
-
118
95
  }, 'open');
119
96
  (0, _uikitUtils.useAsyncEffect)(async () => {
120
97
  updateLoading(true);
121
-
122
98
  try {
123
99
  await channel.enter();
124
100
  await init(userId);
125
101
  } catch (error) {
126
102
  var _options$onError, _options$onChannelDel3;
127
-
128
103
  options === null || options === void 0 ? void 0 : (_options$onError = options.onError) === null || _options$onError === void 0 ? void 0 : _options$onError.call(options, error);
129
104
  options === null || options === void 0 ? void 0 : (_options$onChannelDel3 = options.onChannelDeleted) === null || _options$onChannelDel3 === void 0 ? void 0 : _options$onChannelDel3.call(options);
130
105
  } finally {
131
106
  updateLoading(false);
132
107
  }
133
-
134
108
  return () => {
135
109
  channel.exit().catch(_uikitUtils.NOOP);
136
110
  };
137
- }, [init, userId]);
111
+ }, [channel.url, userId]);
138
112
  const refresh = (0, _uikitUtils.useFreshCallback)(async () => {
139
113
  updateRefreshing(true);
140
114
  await init(userId);
@@ -142,10 +116,8 @@ const useOpenChannelMessagesWithQuery = (sdk, channel, userId, options) => {
142
116
  });
143
117
  const prev = (0, _uikitUtils.useFreshCallback)(async () => {
144
118
  var _queryRef$current3;
145
-
146
119
  if (queryRef.current && (_queryRef$current3 = queryRef.current) !== null && _queryRef$current3 !== void 0 && _queryRef$current3.hasNext) {
147
120
  var _queryRef$current4;
148
-
149
121
  const list = await ((_queryRef$current4 = queryRef.current) === null || _queryRef$current4 === void 0 ? void 0 : _queryRef$current4.load());
150
122
  updateMessages(list, false, sdk.currentUser.userId);
151
123
  }
@@ -235,6 +207,5 @@ const useOpenChannelMessagesWithQuery = (sdk, channel, userId, options) => {
235
207
  deleteMessage
236
208
  };
237
209
  };
238
-
239
210
  exports.useOpenChannelMessagesWithQuery = useOpenChannelMessagesWithQuery;
240
211
  //# sourceMappingURL=useOpenChannelMessagesWithQuery.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useOpenChannelMessagesWithQuery","sdk","userId","options","queryRef","useRef","forceUpdate","useForceUpdate","handlerId","useUniqHandlerId","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useOpenChannelMessagesReducer","sortComparator","init","useFreshCallback","uid","current","queryCreator","hasNext","list","load","currentUser","channelUpdater","isOpenChannel","isDifferentChannel","useChannelHandler","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelParticipantCountChanged","onChannelDeleted","channelUrl","type","url","onOperatorUpdated","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","useAsyncEffect","enter","error","onError","exit","catch","NOOP","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":["useOpenChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { SendbirdBaseChannel, SendbirdOpenChannel, SendbirdPreviousMessageListQuery } from '@sendbird/uikit-utils';\nimport {\n NOOP,\n isDifferentChannel,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseOpenChannelMessages, UseOpenChannelMessagesOptions } from '../../types';\nimport { useOpenChannelMessagesReducer } from './reducer';\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 nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useOpenChannelMessagesReducer(userId, 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 updateNextMessages([], 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 useChannelHandler(\n sdk,\n handlerId,\n {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n updateNextMessages([message], false, sdk.currentUser.userId);\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNextMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n 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 }, [init, 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\n const next: ReturnType<UseOpenChannelMessages>['next'] = useFreshCallback(async () => {\n if (nextMessages.length > 0) {\n updateMessages(nextMessages, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n });\n\n const sendUserMessage: ReturnType<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 updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, sentMessage) => {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n\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 updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, sentMessage) => {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n\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) updateNextMessages([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\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","require","_uikitUtils","_useChannelHandler","_reducer","createMessageQuery","channel","creator","createPreviousMessageListQuery","limit","reverse","useOpenChannelMessagesWithQuery","sdk","userId","options","queryRef","useRef","forceUpdate","useForceUpdate","handlerId","useUniqHandlerId","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useOpenChannelMessagesReducer","sortComparator","init","useFreshCallback","uid","_queryRef$current","current","queryCreator","hasNext","_queryRef$current2","list","load","currentUser","channelUpdater","isOpenChannel","isDifferentChannel","useChannelHandler","onMessageReceived","eventChannel","message","onMessageUpdated","onMessageDeleted","messageId","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelParticipantCountChanged","onChannelDeleted","channelUrl","type","url","_options$onChannelDel","call","onOperatorUpdated","onUserUnbanned","onUserMuted","onUserUnmuted","onUserBanned","bannedUser","_options$onChannelDel2","useAsyncEffect","enter","error","_options$onError","_options$onChannelDel3","onError","exit","catch","NOOP","refresh","prev","_queryRef$current3","_queryRef$current4","next","length","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","err","sendFileMessage","isFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","resendUserMessage","resendFileMessage","deleteMessage","sendingStatus","reqId","exports"],"sources":["useOpenChannelMessagesWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\n\nimport type { SendbirdBaseChannel, SendbirdOpenChannel, SendbirdPreviousMessageListQuery } from '@sendbird/uikit-utils';\nimport {\n NOOP,\n isDifferentChannel,\n useAsyncEffect,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseOpenChannelMessages, UseOpenChannelMessagesOptions } from '../../types';\nimport { useOpenChannelMessagesReducer } from './reducer';\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 nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useOpenChannelMessagesReducer(userId, 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 updateNextMessages([], 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 useChannelHandler(\n sdk,\n handlerId,\n {\n // Messages\n onMessageReceived(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n updateNextMessages([message], false, sdk.currentUser.userId);\n },\n onMessageUpdated(eventChannel, message) {\n if (isDifferentChannel(channel, eventChannel)) return;\n updateMessages([message], false, sdk.currentUser.userId);\n },\n onMessageDeleted(eventChannel, messageId) {\n if (isDifferentChannel(channel, eventChannel)) return;\n deleteMessages([messageId], []);\n deleteNextMessages([messageId], []);\n },\n // Channels\n onChannelChanged: channelUpdater,\n onChannelFrozen: channelUpdater,\n onChannelUnfrozen: channelUpdater,\n 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\n const next: ReturnType<UseOpenChannelMessages>['next'] = useFreshCallback(async () => {\n if (nextMessages.length > 0) {\n updateMessages(nextMessages, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n });\n\n const sendUserMessage: ReturnType<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 updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, sentMessage) => {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n\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 updateNextMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, sentMessage) => {\n updateNextMessages([sentMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n\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) updateNextMessages([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\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n };\n};\n"],"mappings":"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"}
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useAppFeatures = void 0;
7
-
8
7
  var _uikitUtils = require("@sendbird/uikit-utils");
9
-
10
8
  const useAppFeatures = sdk => {
11
9
  const {
12
10
  premiumFeatureList = [],
@@ -19,6 +17,5 @@ const useAppFeatures = sdk => {
19
17
  reactionEnabled: applicationAttributes.includes(_uikitUtils.ApplicationAttributes.reactions)
20
18
  };
21
19
  };
22
-
23
20
  exports.useAppFeatures = useAppFeatures;
24
21
  //# sourceMappingURL=useAppFeatures.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useAppFeatures","sdk","premiumFeatureList","applicationAttributes","appInfo","deliveryReceiptEnabled","includes","PremiumFeatures","delivery_receipt","broadcastChannelEnabled","ApplicationAttributes","allow_broadcast_channel","superGroupChannelEnabled","allow_super_group_channel","reactionEnabled","reactions"],"sources":["useAppFeatures.ts"],"sourcesContent":["import { ApplicationAttributes, PremiumFeatures, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useAppFeatures = (sdk: SendbirdChatSDK) => {\n const { premiumFeatureList = [], applicationAttributes = [] } = sdk.appInfo ?? {};\n return {\n deliveryReceiptEnabled: premiumFeatureList.includes(PremiumFeatures.delivery_receipt),\n broadcastChannelEnabled: applicationAttributes.includes(ApplicationAttributes.allow_broadcast_channel),\n superGroupChannelEnabled: applicationAttributes.includes(ApplicationAttributes.allow_super_group_channel),\n reactionEnabled: applicationAttributes.includes(ApplicationAttributes.reactions),\n };\n};\n"],"mappings":";;;;;;;AAAA;;AAEO,MAAMA,cAAc,GAAIC,GAAD,IAA0B;EACtD,MAAM;IAAEC,kBAAkB,GAAG,EAAvB;IAA2BC,qBAAqB,GAAG;EAAnD,IAA0DF,GAAG,CAACG,OAAJ,IAAe,EAA/E;EACA,OAAO;IACLC,sBAAsB,EAAEH,kBAAkB,CAACI,QAAnB,CAA4BC,2BAAA,CAAgBC,gBAA5C,CADnB;IAELC,uBAAuB,EAAEN,qBAAqB,CAACG,QAAtB,CAA+BI,iCAAA,CAAsBC,uBAArD,CAFpB;IAGLC,wBAAwB,EAAET,qBAAqB,CAACG,QAAtB,CAA+BI,iCAAA,CAAsBG,yBAArD,CAHrB;IAILC,eAAe,EAAEX,qBAAqB,CAACG,QAAtB,CAA+BI,iCAAA,CAAsBK,SAArD;EAJZ,CAAP;AAMD,CARM"}
1
+ {"version":3,"names":["_uikitUtils","require","useAppFeatures","sdk","premiumFeatureList","applicationAttributes","appInfo","deliveryReceiptEnabled","includes","PremiumFeatures","delivery_receipt","broadcastChannelEnabled","ApplicationAttributes","allow_broadcast_channel","superGroupChannelEnabled","allow_super_group_channel","reactionEnabled","reactions","exports"],"sources":["useAppFeatures.ts"],"sourcesContent":["import { ApplicationAttributes, PremiumFeatures, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useAppFeatures = (sdk: SendbirdChatSDK) => {\n const { premiumFeatureList = [], applicationAttributes = [] } = sdk.appInfo ?? {};\n return {\n deliveryReceiptEnabled: premiumFeatureList.includes(PremiumFeatures.delivery_receipt),\n broadcastChannelEnabled: applicationAttributes.includes(ApplicationAttributes.allow_broadcast_channel),\n superGroupChannelEnabled: applicationAttributes.includes(ApplicationAttributes.allow_super_group_channel),\n reactionEnabled: applicationAttributes.includes(ApplicationAttributes.reactions),\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAEO,MAAMC,cAAc,GAAIC,GAAoB,IAAK;EACtD,MAAM;IAAEC,kBAAkB,GAAG,EAAE;IAAEC,qBAAqB,GAAG;EAAG,CAAC,GAAGF,GAAG,CAACG,OAAO,IAAI,CAAC,CAAC;EACjF,OAAO;IACLC,sBAAsB,EAAEH,kBAAkB,CAACI,QAAQ,CAACC,2BAAe,CAACC,gBAAgB,CAAC;IACrFC,uBAAuB,EAAEN,qBAAqB,CAACG,QAAQ,CAACI,iCAAqB,CAACC,uBAAuB,CAAC;IACtGC,wBAAwB,EAAET,qBAAqB,CAACG,QAAQ,CAACI,iCAAqB,CAACG,yBAAyB,CAAC;IACzGC,eAAe,EAAEX,qBAAqB,CAACG,QAAQ,CAACI,iCAAqB,CAACK,SAAS;EACjF,CAAC;AACH,CAAC;AAACC,OAAA,CAAAhB,cAAA,GAAAA,cAAA"}
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useMessageOutgoingStatus = void 0;
7
-
8
7
  var _uikitUtils = require("@sendbird/uikit-utils");
9
-
10
8
  var _useChannelHandler = require("../handler/useChannelHandler");
11
-
12
9
  var _useAppFeatures = require("./useAppFeatures");
13
-
14
10
  const useMessageOutgoingStatus = (sdk, channel, message) => {
15
11
  const features = (0, _useAppFeatures.useAppFeatures)(sdk);
16
12
  const forceUpdate = (0, _uikitUtils.useForceUpdate)();
@@ -22,31 +18,24 @@ const useMessageOutgoingStatus = (sdk, channel, message) => {
22
18
  if (!(0, _uikitUtils.isMyMessage)(message, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
23
19
  forceUpdate();
24
20
  },
25
-
26
21
  onUnreadMemberStatusUpdated(eventChannel) {
27
22
  if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
28
23
  if (!(0, _uikitUtils.isMyMessage)(message, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
29
24
  forceUpdate();
30
25
  }
31
-
32
26
  });
33
27
  if (!message) return 'NONE';
34
-
35
28
  if ('sendingStatus' in message) {
36
29
  if (message.sendingStatus === 'pending') return 'PENDING';
37
30
  if (message.sendingStatus === 'failed') return 'FAILED';
38
31
  }
39
-
40
32
  if (channel.isBroadcast || channel.isSuper) return 'NONE';
41
33
  if (channel.getUnreadMemberCount(message) === 0) return 'READ';
42
-
43
34
  if (features.deliveryReceiptEnabled) {
44
35
  if (channel.getUndeliveredMemberCount(message) === 0) return 'DELIVERED';
45
36
  return 'UNDELIVERED';
46
37
  }
47
-
48
38
  return 'UNREAD';
49
39
  };
50
-
51
40
  exports.useMessageOutgoingStatus = useMessageOutgoingStatus;
52
41
  //# sourceMappingURL=useMessageOutgoingStatus.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useMessageOutgoingStatus","sdk","channel","message","features","useAppFeatures","forceUpdate","useForceUpdate","currentUser","handlerId","useUniqHandlerId","useChannelHandler","onUndeliveredMemberStatusUpdated","eventChannel","isDifferentChannel","isMyMessage","userId","onUnreadMemberStatusUpdated","sendingStatus","isBroadcast","isSuper","getUnreadMemberCount","deliveryReceiptEnabled","getUndeliveredMemberCount"],"sources":["useMessageOutgoingStatus.ts"],"sourcesContent":["import type { SendbirdChatSDK, SendbirdGroupChannel, SendbirdMessage } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, isMyMessage, useForceUpdate, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../handler/useChannelHandler';\nimport { useAppFeatures } from './useAppFeatures';\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 const handlerId = useUniqHandlerId('useMessageOutgoingStatus');\n\n useChannelHandler(sdk, handlerId, {\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.isBroadcast || channel.isSuper) return 'NONE';\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;;AAIO,MAAMA,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;EACA,MAAMC,SAAS,GAAG,IAAAC,4BAAA,EAAiB,0BAAjB,CAAlB;EAEA,IAAAC,oCAAA,EAAkBV,GAAlB,EAAuBQ,SAAvB,EAAkC;IAChCG,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,CAN+B;;IAOhCW,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;;EAZ+B,CAAlC;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,WAAR,IAAuBjB,OAAO,CAACkB,OAAnC,EAA4C,OAAO,MAAP;EAE5C,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,CA1CM"}
1
+ {"version":3,"names":["_uikitUtils","require","_useChannelHandler","_useAppFeatures","useMessageOutgoingStatus","sdk","channel","message","features","useAppFeatures","forceUpdate","useForceUpdate","currentUser","handlerId","useUniqHandlerId","useChannelHandler","onUndeliveredMemberStatusUpdated","eventChannel","isDifferentChannel","isMyMessage","userId","onUnreadMemberStatusUpdated","sendingStatus","isBroadcast","isSuper","getUnreadMemberCount","deliveryReceiptEnabled","getUndeliveredMemberCount","exports"],"sources":["useMessageOutgoingStatus.ts"],"sourcesContent":["import type { SendbirdChatSDK, SendbirdGroupChannel, SendbirdMessage } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, isMyMessage, useForceUpdate, useUniqHandlerId } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../handler/useChannelHandler';\nimport { useAppFeatures } from './useAppFeatures';\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 const handlerId = useUniqHandlerId('useMessageOutgoingStatus');\n\n useChannelHandler(sdk, handlerId, {\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.isBroadcast || channel.isSuper) return 'NONE';\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,IAAAA,WAAA,GAAAC,OAAA;AAEA,IAAAC,kBAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AAIO,MAAMG,wBAAwB,GAAGA,CACtCC,GAAoB,EACpBC,OAA6B,EAC7BC,OAAgC,KACV;EACtB,MAAMC,QAAQ,GAAG,IAAAC,8BAAc,EAACJ,GAAG,CAAC;EACpC,MAAMK,WAAW,GAAG,IAAAC,0BAAc,GAAE;EACpC,MAAMC,WAAW,GAAGP,GAAG,CAACO,WAAW;EACnC,MAAMC,SAAS,GAAG,IAAAC,4BAAgB,EAAC,0BAA0B,CAAC;EAE9D,IAAAC,oCAAiB,EAACV,GAAG,EAAEQ,SAAS,EAAE;IAChCG,gCAAgCA,CAACC,YAAY,EAAE;MAC7C,IAAI,IAAAC,8BAAkB,EAACZ,OAAO,EAAEW,YAAY,CAAC,EAAE;MAC/C,IAAI,CAAC,IAAAE,uBAAW,EAACZ,OAAO,EAAEK,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEQ,MAAM,CAAC,EAAE;MAEhDV,WAAW,EAAE;IACf,CAAC;IACDW,2BAA2BA,CAACJ,YAAY,EAAE;MACxC,IAAI,IAAAC,8BAAkB,EAACZ,OAAO,EAAEW,YAAY,CAAC,EAAE;MAC/C,IAAI,CAAC,IAAAE,uBAAW,EAACZ,OAAO,EAAEK,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEQ,MAAM,CAAC,EAAE;MAEhDV,WAAW,EAAE;IACf;EACF,CAAC,CAAC;EAEF,IAAI,CAACH,OAAO,EAAE,OAAO,MAAM;EAE3B,IAAI,eAAe,IAAIA,OAAO,EAAE;IAC9B,IAAIA,OAAO,CAACe,aAAa,KAAK,SAAS,EAAE,OAAO,SAAS;IACzD,IAAIf,OAAO,CAACe,aAAa,KAAK,QAAQ,EAAE,OAAO,QAAQ;EACzD;EAEA,IAAIhB,OAAO,CAACiB,WAAW,IAAIjB,OAAO,CAACkB,OAAO,EAAE,OAAO,MAAM;EAEzD,IAAIlB,OAAO,CAACmB,oBAAoB,CAAClB,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,MAAM;EAE9D,IAAIC,QAAQ,CAACkB,sBAAsB,EAAE;IACnC,IAAIpB,OAAO,CAACqB,yBAAyB,CAACpB,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,WAAW;IACxE,OAAO,aAAa;EACtB;EAEA,OAAO,QAAQ;AACjB,CAAC;AAACqB,OAAA,CAAAxB,wBAAA,GAAAA,wBAAA"}