@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":["useGroupChannelMessages","sdk","channel","userId","options","isCacheEnabled","enableCollectionWithoutLocalCache","queryCreator","Logger","warn","useGroupChannelMessagesWithCollection","useGroupChannelMessagesWithQuery"],"sources":["index.ts"],"sourcesContent":["import { Logger } from '@sendbird/uikit-utils';\n\nimport type { UseGroupChannelMessages } from '../../types';\nimport { useGroupChannelMessagesWithCollection } from './useGroupChannelMessagesWithCollection';\nimport { useGroupChannelMessagesWithQuery } from './useGroupChannelMessagesWithQuery';\n\nexport const useGroupChannelMessages: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {\n if (options?.queryCreator) Logger.warn('`queryCreator` is ignored, please use `collectionCreator` instead.');\n return useGroupChannelMessagesWithCollection(sdk, channel, userId, options);\n } else {\n return useGroupChannelMessagesWithQuery(sdk, channel, userId, options);\n }\n};\n"],"mappings":";;;;;;;AAAA;;AAGA;;AACA;;AAEO,MAAMA,uBAAgD,GAAG,CAACC,GAAD,EAAMC,OAAN,EAAeC,MAAf,EAAuBC,OAAvB,KAAmC;EACjG,IAAIH,GAAG,CAACI,cAAJ,IAAsBD,OAAtB,aAAsBA,OAAtB,eAAsBA,OAAO,CAAEE,iCAAnC,EAAsE;IACpE,IAAIF,OAAJ,aAAIA,OAAJ,eAAIA,OAAO,CAAEG,YAAb,EAA2BC,kBAAA,CAAOC,IAAP,CAAY,oEAAZ;IAC3B,OAAO,IAAAC,4EAAA,EAAsCT,GAAtC,EAA2CC,OAA3C,EAAoDC,MAApD,EAA4DC,OAA5D,CAAP;EACD,CAHD,MAGO;IACL,OAAO,IAAAO,kEAAA,EAAiCV,GAAjC,EAAsCC,OAAtC,EAA+CC,MAA/C,EAAuDC,OAAvD,CAAP;EACD;AACF,CAPM"}
1
+ {"version":3,"names":["_uikitUtils","require","_useGroupChannelMessagesWithCollection","_useGroupChannelMessagesWithQuery","useGroupChannelMessages","sdk","channel","userId","options","isCacheEnabled","enableCollectionWithoutLocalCache","queryCreator","Logger","warn","useGroupChannelMessagesWithCollection","useGroupChannelMessagesWithQuery","exports"],"sources":["index.ts"],"sourcesContent":["import { Logger } from '@sendbird/uikit-utils';\n\nimport type { UseGroupChannelMessages } from '../../types';\nimport { useGroupChannelMessagesWithCollection } from './useGroupChannelMessagesWithCollection';\nimport { useGroupChannelMessagesWithQuery } from './useGroupChannelMessagesWithQuery';\n\nexport const useGroupChannelMessages: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {\n if (options?.queryCreator) Logger.warn('`queryCreator` is ignored, please use `collectionCreator` instead.');\n return useGroupChannelMessagesWithCollection(sdk, channel, userId, options);\n } else {\n return useGroupChannelMessagesWithQuery(sdk, channel, userId, options);\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAGA,IAAAC,sCAAA,GAAAD,OAAA;AACA,IAAAE,iCAAA,GAAAF,OAAA;AAEO,MAAMG,uBAAgD,GAAGA,CAACC,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,KAAK;EACjG,IAAIH,GAAG,CAACI,cAAc,IAAID,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEE,iCAAiC,EAAE;IACpE,IAAIF,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEG,YAAY,EAAEC,kBAAM,CAACC,IAAI,CAAC,oEAAoE,CAAC;IAC5G,OAAO,IAAAC,4EAAqC,EAACT,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAC7E,CAAC,MAAM;IACL,OAAO,IAAAO,kEAAgC,EAACV,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,CAAC;EACxE;AACF,CAAC;AAACQ,OAAA,CAAAZ,uBAAA,GAAAA,uBAAA"}
@@ -4,50 +4,49 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useGroupChannelMessagesReducer = 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 useGroupChannelMessagesReducer = (userId, sortComparator) => {
60
58
  const [{
61
59
  loading,
@@ -68,18 +66,16 @@ const useGroupChannelMessagesReducer = (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 useGroupChannelMessagesReducer = (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 useGroupChannelMessagesReducer = (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 useGroupChannelMessagesReducer = (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 useGroupChannelMessagesReducer = (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 useGroupChannelMessagesReducer = (userId, sortComparator) => {
149
140
  newMessagesFromMembers
150
141
  };
151
142
  };
152
-
153
143
  exports.useGroupChannelMessagesReducer = useGroupChannelMessagesReducer;
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","useGroupChannelMessagesReducer","userId","sortComparator","loading","refreshing","messageMap","nextMessageMap","dispatch","useReducer","updateMessages","deleteMessages","updateNextMessages","deleteNextMessages","updateLoading","updateRefreshing","useIIFE","Object","values","sort","nextMessages","newMessagesFromMembers","msg","isNewMessage"],"sources":["reducer.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport type { SendbirdBaseMessage, SendbirdFileMessage, SendbirdUserMessage } from '@sendbird/uikit-utils';\nimport { arrayToMapWithGetter, getMessageUniqId, isMyMessage, isNewMessage, useIIFE } from '@sendbird/uikit-utils';\n\nimport type { UseGroupChannelMessagesOptions } from '../../types';\n\ntype Action =\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_messages' | 'update_next_messages';\n value: { messages: SendbirdBaseMessage[]; clearPrev: boolean; currentUserId?: string };\n }\n | {\n type: 'delete_messages' | 'delete_next_messages';\n value: { messageIds: number[]; reqIds: string[] };\n };\n\ntype State = {\n loading: boolean;\n refreshing: boolean;\n messageMap: Record<string, SendbirdBaseMessage>;\n nextMessageMap: Record<string, SendbirdBaseMessage>;\n};\n\nconst defaultReducer = ({ ...draft }: State, action: Action) => {\n switch (action.type) {\n case 'update_refreshing':\n case 'update_loading': {\n const key = action.type === 'update_loading' ? 'loading' : 'refreshing';\n draft[key] = action.value.status;\n\n return draft;\n }\n case 'update_messages':\n case 'update_next_messages': {\n const key = action.type === 'update_messages' ? 'messageMap' : 'nextMessageMap';\n const receivedMessagesAsMap = arrayToMapWithGetter(action.value.messages, getMessageUniqId);\n if (action.value.clearPrev) {\n draft[key] = receivedMessagesAsMap;\n } else {\n draft[key] = { ...draft[key], ...receivedMessagesAsMap };\n\n // NOTE: Replace pending message to succeeded message\n action.value.messages\n .filter((m): m is SendbirdUserMessage | SendbirdFileMessage => {\n return (\n (m.isFileMessage() || m.isUserMessage()) &&\n Boolean(draft[key][m.reqId]) &&\n m.sendingStatus === 'succeeded' &&\n isMyMessage(m, action.value.currentUserId)\n );\n })\n .forEach((m) => delete draft[key][m.reqId]);\n }\n\n return draft;\n }\n case 'delete_messages':\n case 'delete_next_messages': {\n const key = action.type === 'delete_messages' ? 'messageMap' : 'nextMessageMap';\n draft[key] = { ...draft[key] };\n action.value.messageIds.forEach((msgId) => delete draft[key][msgId]);\n action.value.reqIds.forEach((reqId) => delete draft[key][reqId]);\n\n return draft;\n }\n }\n};\n\nexport const useGroupChannelMessagesReducer = (\n userId?: string,\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'],\n) => {\n const [{ loading, refreshing, messageMap, nextMessageMap }, dispatch] = useReducer(defaultReducer, {\n loading: true,\n refreshing: false,\n messageMap: {},\n nextMessageMap: {},\n });\n\n const updateMessages = (messages: SendbirdBaseMessage[], clearPrev: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_messages', value: { messages, clearPrev, currentUserId } });\n };\n const deleteMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_messages', value: { messageIds, reqIds } });\n };\n const updateNextMessages = (messages: SendbirdBaseMessage[], clearPrev: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_next_messages', value: { messages, clearPrev, currentUserId } });\n };\n const deleteNextMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_next_messages', value: { messageIds, reqIds } });\n };\n const updateLoading = (status: boolean) => {\n dispatch({ type: 'update_loading', value: { status } });\n };\n const updateRefreshing = (status: boolean) => {\n dispatch({ type: 'update_refreshing', value: { status } });\n };\n\n const messages = useIIFE(() => {\n if (sortComparator) return Object.values(messageMap).sort(sortComparator);\n return Object.values(messageMap);\n });\n const nextMessages = Object.values(nextMessageMap);\n const newMessagesFromMembers = nextMessages.filter((msg) => isNewMessage(msg, userId));\n\n return {\n updateLoading,\n updateRefreshing,\n updateMessages,\n updateNextMessages,\n deleteMessages,\n deleteNextMessages,\n\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n };\n};\n"],"mappings":"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"}
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","useGroupChannelMessagesReducer","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 { UseGroupChannelMessagesOptions } from '../../types';\n\ntype Action =\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_messages' | 'update_next_messages';\n value: { messages: SendbirdBaseMessage[]; 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 useGroupChannelMessagesReducer = (\n userId?: string,\n sortComparator?: UseGroupChannelMessagesOptions['sortComparator'],\n) => {\n const [{ loading, refreshing, messageMap, nextMessageMap }, dispatch] = useReducer(defaultReducer, {\n loading: true,\n refreshing: false,\n messageMap: {},\n nextMessageMap: {},\n });\n\n const updateMessages = (messages: SendbirdBaseMessage[], 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,17 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useGroupChannelMessagesWithCollection = void 0;
7
-
8
7
  var _react = require("react");
9
-
10
8
  var _groupChannel = require("@sendbird/chat/groupChannel");
11
-
12
9
  var _uikitUtils = require("@sendbird/uikit-utils");
13
-
14
10
  var _useChannelHandler = require("../../handler/useChannelHandler");
15
-
16
11
  var _reducer = require("./reducer");
17
-
18
12
  const createMessageCollection = (channel, creator) => {
19
13
  if (creator) return creator();
20
14
  const filter = new _groupChannel.MessageFilter();
@@ -23,7 +17,6 @@ const createMessageCollection = (channel, creator) => {
23
17
  limit: 100
24
18
  });
25
19
  };
26
-
27
20
  const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) => {
28
21
  const forceUpdate = (0, _uikitUtils.useForceUpdate)();
29
22
  const collectionRef = (0, _react.useRef)();
@@ -41,7 +34,6 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
41
34
  updateLoading,
42
35
  updateRefreshing
43
36
  } = (0, _reducer.useGroupChannelMessagesReducer)(userId, options === null || options === void 0 ? void 0 : options.sortComparator);
44
-
45
37
  const channelMarkAsRead = async source => {
46
38
  try {
47
39
  switch (source) {
@@ -56,15 +48,11 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
56
48
  _uikitUtils.Logger.warn('[useGroupChannelMessagesWithCollection/channelMarkAsRead]', e);
57
49
  }
58
50
  };
59
-
60
- const init = (0, _react.useCallback)(async (uid, callback) => {
51
+ const init = (0, _uikitUtils.useFreshCallback)(async (uid, callback) => {
61
52
  var _collectionRef$curren;
62
-
63
53
  if (collectionRef.current) (_collectionRef$curren = collectionRef.current) === null || _collectionRef$curren === void 0 ? void 0 : _collectionRef$curren.dispose();
64
-
65
54
  if (uid) {
66
55
  var _collectionRef$curren2;
67
-
68
56
  collectionRef.current = createMessageCollection(channel, options === null || options === void 0 ? void 0 : options.collectionCreator);
69
57
  updateNextMessages([], true, sdk.currentUser.userId);
70
58
  channelMarkAsRead();
@@ -74,16 +62,17 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
74
62
  updateNextMessages(messages, false, sdk.currentUser.userId);
75
63
  },
76
64
  onMessagesUpdated: (_, __, messages) => {
77
- channelMarkAsRead(_.source); // NOTE: admin message is not added via onMessagesAdded handler, not checked yet is this a bug.
65
+ channelMarkAsRead(_.source);
78
66
 
67
+ // NOTE: admin message is not added via onMessagesAdded handler, not checked yet is this a bug.
79
68
  if (_.source === _groupChannel.MessageEventSource.EVENT_MESSAGE_RECEIVED) {
80
69
  const nextMessageIds = nextMessages.map(it => it.messageId);
81
70
  const nonAddedMessagesFromReceivedEvent = messages.filter(it => nextMessageIds.indexOf(it.messageId) === -1);
82
71
  updateNextMessages(nonAddedMessagesFromReceivedEvent, false, sdk.currentUser.userId);
83
- } // NOTE: v4 MESSAGE_RECEIVED is called twice from onMessagesAdded and onMessagesUpdated when receiving new message.
84
- // This is not intended behavior but not bugs.
85
-
72
+ }
86
73
 
74
+ // NOTE: v4 MESSAGE_RECEIVED is called twice from onMessagesAdded and onMessagesUpdated when receiving new message.
75
+ // This is not intended behavior but not bugs.
87
76
  if (_.source !== _groupChannel.MessageEventSource.EVENT_MESSAGE_RECEIVED) {
88
77
  updateMessages(messages, false, sdk.currentUser.userId);
89
78
  }
@@ -94,7 +83,6 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
94
83
  },
95
84
  onChannelDeleted: () => {
96
85
  var _options$onChannelDel;
97
-
98
86
  options === null || options === void 0 ? void 0 : (_options$onChannelDel = options.onChannelDeleted) === null || _options$onChannelDel === void 0 ? void 0 : _options$onChannelDel.call(options);
99
87
  },
100
88
  onChannelUpdated: (_, eventChannel) => {
@@ -109,9 +97,7 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
109
97
  collectionRef.current.initialize(_groupChannel.MessageCollectionInitPolicy.CACHE_AND_REPLACE_BY_API).onCacheResult((err, messages) => {
110
98
  if (err) sdk.isCacheEnabled && _uikitUtils.Logger.error('[useGroupChannelMessagesWithCollection/onCacheResult]', err);else {
111
99
  var _collectionRef$curren3, _collectionRef$curren4;
112
-
113
100
  _uikitUtils.Logger.debug('[useGroupChannelMessagesWithCollection/onCacheResult]', 'message length:', messages.length);
114
-
115
101
  updateMessages(messages, true, sdk.currentUser.userId);
116
102
  updateMessages(((_collectionRef$curren3 = collectionRef.current) === null || _collectionRef$curren3 === void 0 ? void 0 : _collectionRef$curren3.pendingMessages) ?? [], false, sdk.currentUser.userId);
117
103
  updateMessages(((_collectionRef$curren4 = collectionRef.current) === null || _collectionRef$curren4 === void 0 ? void 0 : _collectionRef$curren4.failedMessages) ?? [], false, sdk.currentUser.userId);
@@ -120,12 +106,9 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
120
106
  }).onApiResult((err, messages) => {
121
107
  if (err) _uikitUtils.Logger.warn('[useGroupChannelMessagesWithCollection/onApiResult]', err);else {
122
108
  _uikitUtils.Logger.debug('[useGroupChannelMessagesWithCollection/onApiResult]', 'message length:', messages.length);
123
-
124
109
  updateMessages(messages, true, sdk.currentUser.userId);
125
-
126
110
  if (sdk.isCacheEnabled) {
127
111
  var _collectionRef$curren5, _collectionRef$curren6;
128
-
129
112
  updateMessages(((_collectionRef$curren5 = collectionRef.current) === null || _collectionRef$curren5 === void 0 ? void 0 : _collectionRef$curren5.pendingMessages) ?? [], false, sdk.currentUser.userId);
130
113
  updateMessages(((_collectionRef$curren6 = collectionRef.current) === null || _collectionRef$curren6 === void 0 ? void 0 : _collectionRef$curren6.failedMessages) ?? [], false, sdk.currentUser.userId);
131
114
  }
@@ -133,20 +116,18 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
133
116
  callback === null || callback === void 0 ? void 0 : callback();
134
117
  });
135
118
  }
136
- }, [sdk, channel.url, options === null || options === void 0 ? void 0 : options.collectionCreator]);
119
+ });
137
120
  (0, _useChannelHandler.useChannelHandler)(sdk, handlerId, {
138
121
  onUserBanned(channel, bannedUser) {
139
122
  if (channel.isGroupChannel() && !(0, _uikitUtils.isDifferentChannel)(channel, channel)) {
140
123
  if (bannedUser.userId === sdk.currentUser.userId) {
141
124
  var _options$onChannelDel2;
142
-
143
125
  options === null || options === void 0 ? void 0 : (_options$onChannelDel2 = options.onChannelDeleted) === null || _options$onChannelDel2 === void 0 ? void 0 : _options$onChannelDel2.call(options);
144
126
  } else {
145
127
  forceUpdate();
146
128
  }
147
129
  }
148
130
  }
149
-
150
131
  });
151
132
  (0, _react.useEffect)(() => {
152
133
  // NOTE: Cache read is heavy task, and it prevents smooth ui transition
@@ -154,11 +135,10 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
154
135
  updateLoading(true);
155
136
  init(userId, () => updateLoading(false));
156
137
  }, 0);
157
- }, [init, userId]);
138
+ }, [channel.url, userId]);
158
139
  (0, _react.useEffect)(() => {
159
140
  return () => {
160
141
  var _collectionRef$curren7;
161
-
162
142
  if (collectionRef.current) (_collectionRef$curren7 = collectionRef.current) === null || _collectionRef$curren7 === void 0 ? void 0 : _collectionRef$curren7.dispose();
163
143
  };
164
144
  }, []);
@@ -168,11 +148,9 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
168
148
  });
169
149
  const prev = (0, _uikitUtils.useFreshCallback)(async () => {
170
150
  var _collectionRef$curren8;
171
-
172
151
  if (collectionRef.current && (_collectionRef$curren8 = collectionRef.current) !== null && _collectionRef$curren8 !== void 0 && _collectionRef$curren8.hasPrevious) {
173
152
  try {
174
153
  var _collectionRef$curren9;
175
-
176
154
  const list = await ((_collectionRef$curren9 = collectionRef.current) === null || _collectionRef$curren9 === void 0 ? void 0 : _collectionRef$curren9.loadPrevious());
177
155
  updateMessages(list, false, sdk.currentUser.userId);
178
156
  } catch {}
@@ -180,22 +158,17 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
180
158
  });
181
159
  const next = (0, _uikitUtils.useFreshCallback)(async () => {
182
160
  var _collectionRef$curren10;
183
-
184
161
  const messageCandidates = [];
185
-
186
162
  if (collectionRef.current && (_collectionRef$curren10 = collectionRef.current) !== null && _collectionRef$curren10 !== void 0 && _collectionRef$curren10.hasNext) {
187
163
  try {
188
164
  var _collectionRef$curren11;
189
-
190
165
  const fetchedList = await ((_collectionRef$curren11 = collectionRef.current) === null || _collectionRef$curren11 === void 0 ? void 0 : _collectionRef$curren11.loadNext());
191
166
  messageCandidates.push(...fetchedList);
192
167
  } catch {}
193
168
  }
194
-
195
169
  if (nextMessages.length > 0) {
196
170
  messageCandidates.push(...nextMessages);
197
171
  }
198
-
199
172
  if (messageCandidates.length > 0) {
200
173
  updateMessages(messageCandidates, false, sdk.currentUser.userId);
201
174
  updateNextMessages([], true, sdk.currentUser.userId);
@@ -262,7 +235,6 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
262
235
  } else {
263
236
  try {
264
237
  var _collectionRef$curren12;
265
-
266
238
  await ((_collectionRef$curren12 = collectionRef.current) === null || _collectionRef$curren12 === void 0 ? void 0 : _collectionRef$curren12.removeFailedMessage(message.reqId));
267
239
  } finally {
268
240
  deleteMessages([message.messageId], [message.reqId]);
@@ -286,6 +258,5 @@ const useGroupChannelMessagesWithCollection = (sdk, channel, userId, options) =>
286
258
  deleteMessage
287
259
  };
288
260
  };
289
-
290
261
  exports.useGroupChannelMessagesWithCollection = useGroupChannelMessagesWithCollection;
291
262
  //# sourceMappingURL=useGroupChannelMessagesWithCollection.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createMessageCollection","channel","creator","filter","MessageFilter","limit","useGroupChannelMessagesWithCollection","sdk","userId","options","forceUpdate","useForceUpdate","collectionRef","useRef","handlerId","useUniqHandlerId","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useGroupChannelMessagesReducer","sortComparator","channelMarkAsRead","source","MessageEventSource","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT_SUCCESS","SYNC_MESSAGE_FILL","undefined","confirmAndMarkAsRead","e","Logger","warn","init","useCallback","uid","callback","current","dispose","collectionCreator","currentUser","setMessageCollectionHandler","onMessagesAdded","_","__","onMessagesUpdated","nextMessageIds","map","it","messageId","nonAddedMessagesFromReceivedEvent","indexOf","onMessagesDeleted","messageIds","onChannelDeleted","onChannelUpdated","eventChannel","isGroupChannel","isDifferentChannel","onHugeGapDetected","initialize","MessageCollectionInitPolicy","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","error","debug","length","pendingMessages","failedMessages","onApiResult","url","useChannelHandler","onUserBanned","bannedUser","useEffect","setTimeout","refresh","useFreshCallback","prev","hasPrevious","list","loadPrevious","next","messageCandidates","hasNext","fetchedList","loadNext","push","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","_failedMessage","sendFileMessage","isFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","resentMessage","resendUserMessage","resendFileMessage","deleteMessage","message","sendingStatus","removeFailedMessage","reqId"],"sources":["useGroupChannelMessagesWithCollection.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nimport { MessageCollectionInitPolicy, MessageEventSource, MessageFilter } from '@sendbird/chat/groupChannel';\nimport type {\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessageCollection,\n} from '@sendbird/uikit-utils';\nimport {\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageCollection = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['collectionCreator'],\n) => {\n if (creator) return creator();\n const filter = new MessageFilter();\n return channel.createMessageCollection({ filter, limit: 100 });\n};\n\nexport const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const forceUpdate = useForceUpdate();\n const collectionRef = useRef<SendbirdMessageCollection>();\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithCollection');\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAsRead = async (source?: MessageEventSource) => {\n try {\n switch (source) {\n case MessageEventSource.EVENT_MESSAGE_RECEIVED:\n case MessageEventSource.EVENT_MESSAGE_SENT_SUCCESS:\n case MessageEventSource.SYNC_MESSAGE_FILL:\n case undefined:\n await confirmAndMarkAsRead([channel]);\n break;\n }\n } catch (e) {\n Logger.warn('[useGroupChannelMessagesWithCollection/channelMarkAsRead]', e);\n }\n };\n\n const init = useCallback(\n async (uid?: string, callback?: () => void) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createMessageCollection(channel, options?.collectionCreator);\n updateNextMessages([], true, sdk.currentUser.userId);\n channelMarkAsRead();\n\n collectionRef.current?.setMessageCollectionHandler({\n onMessagesAdded: (_, __, messages) => {\n channelMarkAsRead(_.source);\n updateNextMessages(messages, false, sdk.currentUser.userId);\n },\n onMessagesUpdated: (_, __, messages) => {\n channelMarkAsRead(_.source);\n\n // NOTE: admin message is not added via onMessagesAdded handler, not checked yet is this a bug.\n if (_.source === MessageEventSource.EVENT_MESSAGE_RECEIVED) {\n const nextMessageIds = nextMessages.map((it) => it.messageId);\n const nonAddedMessagesFromReceivedEvent = messages.filter(\n (it) => nextMessageIds.indexOf(it.messageId) === -1,\n );\n updateNextMessages(nonAddedMessagesFromReceivedEvent, false, sdk.currentUser.userId);\n }\n\n // NOTE: v4 MESSAGE_RECEIVED is called twice from onMessagesAdded and onMessagesUpdated when receiving new message.\n // This is not intended behavior but not bugs.\n if (_.source !== MessageEventSource.EVENT_MESSAGE_RECEIVED) {\n updateMessages(messages, false, sdk.currentUser.userId);\n }\n },\n onMessagesDeleted: (_, __, messageIds) => {\n deleteMessages(messageIds, []);\n deleteNextMessages(messageIds, []);\n },\n onChannelDeleted: () => {\n options?.onChannelDeleted?.();\n },\n onChannelUpdated: (_, eventChannel) => {\n if (eventChannel.isGroupChannel() && !isDifferentChannel(eventChannel, channel)) {\n forceUpdate();\n }\n },\n onHugeGapDetected: () => {\n init(uid);\n },\n });\n\n collectionRef.current\n .initialize(MessageCollectionInitPolicy.CACHE_AND_REPLACE_BY_API)\n .onCacheResult((err, messages) => {\n if (err) sdk.isCacheEnabled && Logger.error('[useGroupChannelMessagesWithCollection/onCacheResult]', err);\n else {\n Logger.debug('[useGroupChannelMessagesWithCollection/onCacheResult]', 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n }\n callback?.();\n })\n .onApiResult((err, messages) => {\n if (err) Logger.warn('[useGroupChannelMessagesWithCollection/onApiResult]', err);\n else {\n Logger.debug('[useGroupChannelMessagesWithCollection/onApiResult]', 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser.userId);\n if (sdk.isCacheEnabled) {\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n }\n }\n callback?.();\n });\n }\n },\n [sdk, channel.url, options?.collectionCreator],\n );\n\n useChannelHandler(sdk, handlerId, {\n onUserBanned(channel, bannedUser) {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n forceUpdate();\n }\n }\n },\n });\n\n useEffect(() => {\n // NOTE: Cache read is heavy task, and it prevents smooth ui transition\n setTimeout(async () => {\n updateLoading(true);\n init(userId, () => updateLoading(false));\n }, 0);\n }, [init, userId]);\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n init(userId, () => updateRefreshing(false));\n });\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useFreshCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasPrevious) {\n try {\n const list = await collectionRef.current?.loadPrevious();\n updateMessages(list, false, sdk.currentUser.userId);\n } catch {}\n }\n });\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(async () => {\n const messageCandidates: SendbirdBaseMessage[] = [];\n\n if (collectionRef.current && collectionRef.current?.hasNext) {\n try {\n const fetchedList = await collectionRef.current?.loadNext();\n messageCandidates.push(...fetchedList);\n } catch {}\n }\n\n if (nextMessages.length > 0) {\n messageCandidates.push(...nextMessages);\n }\n\n if (messageCandidates.length > 0) {\n updateMessages(messageCandidates, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n });\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n onPending?.(pendingMessage);\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, _failedMessage) => {\n // updateMessages([failedMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage as SendbirdFileMessage);\n }\n })\n .onFailed((err, _failedMessage) => {\n // updateMessages([failedMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useFreshCallback(\n async (failedMessage) => {\n const resentMessage = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (resentMessage) updateMessages([resentMessage], false, sdk.currentUser.userId);\n },\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n try {\n await collectionRef.current?.removeFailedMessage(message.reqId);\n } finally {\n deleteMessages([message.messageId], [message.reqId]);\n }\n }\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","require","_groupChannel","_uikitUtils","_useChannelHandler","_reducer","createMessageCollection","channel","creator","filter","MessageFilter","limit","useGroupChannelMessagesWithCollection","sdk","userId","options","forceUpdate","useForceUpdate","collectionRef","useRef","handlerId","useUniqHandlerId","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","useGroupChannelMessagesReducer","sortComparator","channelMarkAsRead","source","MessageEventSource","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT_SUCCESS","SYNC_MESSAGE_FILL","undefined","confirmAndMarkAsRead","e","Logger","warn","init","useFreshCallback","uid","callback","_collectionRef$curren","current","dispose","_collectionRef$curren2","collectionCreator","currentUser","setMessageCollectionHandler","onMessagesAdded","_","__","onMessagesUpdated","nextMessageIds","map","it","messageId","nonAddedMessagesFromReceivedEvent","indexOf","onMessagesDeleted","messageIds","onChannelDeleted","_options$onChannelDel","call","onChannelUpdated","eventChannel","isGroupChannel","isDifferentChannel","onHugeGapDetected","initialize","MessageCollectionInitPolicy","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","error","_collectionRef$curren3","_collectionRef$curren4","debug","length","pendingMessages","failedMessages","onApiResult","_collectionRef$curren5","_collectionRef$curren6","useChannelHandler","onUserBanned","bannedUser","_options$onChannelDel2","useEffect","setTimeout","url","_collectionRef$curren7","refresh","prev","_collectionRef$curren8","hasPrevious","_collectionRef$curren9","list","loadPrevious","next","_collectionRef$curren10","messageCandidates","hasNext","_collectionRef$curren11","fetchedList","loadNext","push","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","isUserMessage","onSucceeded","sentMessage","onFailed","_failedMessage","sendFileMessage","isFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","resentMessage","resendUserMessage","resendFileMessage","deleteMessage","message","sendingStatus","_collectionRef$curren12","removeFailedMessage","reqId","exports"],"sources":["useGroupChannelMessagesWithCollection.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { MessageCollectionInitPolicy, MessageEventSource, MessageFilter } from '@sendbird/chat/groupChannel';\nimport type {\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessageCollection,\n} from '@sendbird/uikit-utils';\nimport {\n Logger,\n confirmAndMarkAsRead,\n isDifferentChannel,\n useForceUpdate,\n useFreshCallback,\n useUniqHandlerId,\n} from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageCollection = (\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['collectionCreator'],\n) => {\n if (creator) return creator();\n const filter = new MessageFilter();\n return channel.createMessageCollection({ filter, limit: 100 });\n};\n\nexport const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const forceUpdate = useForceUpdate();\n const collectionRef = useRef<SendbirdMessageCollection>();\n const handlerId = useUniqHandlerId('useGroupChannelMessagesWithCollection');\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAsRead = async (source?: MessageEventSource) => {\n try {\n switch (source) {\n case MessageEventSource.EVENT_MESSAGE_RECEIVED:\n case MessageEventSource.EVENT_MESSAGE_SENT_SUCCESS:\n case MessageEventSource.SYNC_MESSAGE_FILL:\n case undefined:\n await confirmAndMarkAsRead([channel]);\n break;\n }\n } catch (e) {\n Logger.warn('[useGroupChannelMessagesWithCollection/channelMarkAsRead]', e);\n }\n };\n\n const init = useFreshCallback(async (uid?: string, callback?: () => void) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createMessageCollection(channel, options?.collectionCreator);\n updateNextMessages([], true, sdk.currentUser.userId);\n channelMarkAsRead();\n\n collectionRef.current?.setMessageCollectionHandler({\n onMessagesAdded: (_, __, messages) => {\n channelMarkAsRead(_.source);\n updateNextMessages(messages, false, sdk.currentUser.userId);\n },\n onMessagesUpdated: (_, __, messages) => {\n channelMarkAsRead(_.source);\n\n // NOTE: admin message is not added via onMessagesAdded handler, not checked yet is this a bug.\n if (_.source === MessageEventSource.EVENT_MESSAGE_RECEIVED) {\n const nextMessageIds = nextMessages.map((it) => it.messageId);\n const nonAddedMessagesFromReceivedEvent = messages.filter(\n (it) => nextMessageIds.indexOf(it.messageId) === -1,\n );\n updateNextMessages(nonAddedMessagesFromReceivedEvent, false, sdk.currentUser.userId);\n }\n\n // NOTE: v4 MESSAGE_RECEIVED is called twice from onMessagesAdded and onMessagesUpdated when receiving new message.\n // This is not intended behavior but not bugs.\n if (_.source !== MessageEventSource.EVENT_MESSAGE_RECEIVED) {\n updateMessages(messages, false, sdk.currentUser.userId);\n }\n },\n onMessagesDeleted: (_, __, messageIds) => {\n deleteMessages(messageIds, []);\n deleteNextMessages(messageIds, []);\n },\n onChannelDeleted: () => {\n options?.onChannelDeleted?.();\n },\n onChannelUpdated: (_, eventChannel) => {\n if (eventChannel.isGroupChannel() && !isDifferentChannel(eventChannel, channel)) {\n forceUpdate();\n }\n },\n onHugeGapDetected: () => {\n init(uid);\n },\n });\n\n collectionRef.current\n .initialize(MessageCollectionInitPolicy.CACHE_AND_REPLACE_BY_API)\n .onCacheResult((err, messages) => {\n if (err) sdk.isCacheEnabled && Logger.error('[useGroupChannelMessagesWithCollection/onCacheResult]', err);\n else {\n Logger.debug('[useGroupChannelMessagesWithCollection/onCacheResult]', 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n }\n callback?.();\n })\n .onApiResult((err, messages) => {\n if (err) Logger.warn('[useGroupChannelMessagesWithCollection/onApiResult]', err);\n else {\n Logger.debug('[useGroupChannelMessagesWithCollection/onApiResult]', 'message length:', messages.length);\n\n updateMessages(messages, true, sdk.currentUser.userId);\n if (sdk.isCacheEnabled) {\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n }\n }\n callback?.();\n });\n }\n });\n\n useChannelHandler(sdk, handlerId, {\n onUserBanned(channel, bannedUser) {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, channel)) {\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n forceUpdate();\n }\n }\n },\n });\n\n useEffect(() => {\n // NOTE: Cache read is heavy task, and it prevents smooth ui transition\n setTimeout(async () => {\n updateLoading(true);\n init(userId, () => updateLoading(false));\n }, 0);\n }, [channel.url, userId]);\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useFreshCallback(async () => {\n updateRefreshing(true);\n init(userId, () => updateRefreshing(false));\n });\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useFreshCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasPrevious) {\n try {\n const list = await collectionRef.current?.loadPrevious();\n updateMessages(list, false, sdk.currentUser.userId);\n } catch {}\n }\n });\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useFreshCallback(async () => {\n const messageCandidates: SendbirdBaseMessage[] = [];\n\n if (collectionRef.current && collectionRef.current?.hasNext) {\n try {\n const fetchedList = await collectionRef.current?.loadNext();\n messageCandidates.push(...fetchedList);\n } catch {}\n }\n\n if (nextMessages.length > 0) {\n messageCandidates.push(...nextMessages);\n }\n\n if (messageCandidates.length > 0) {\n updateMessages(messageCandidates, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n });\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendUserMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isUserMessage()) {\n onPending?.(pendingMessage);\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isUserMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n })\n .onFailed((err, _failedMessage) => {\n // updateMessages([failedMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useFreshCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n channel\n .sendFileMessage(params)\n .onPending((pendingMessage) => {\n if (pendingMessage.isFileMessage()) {\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n }\n })\n .onSucceeded((sentMessage) => {\n if (sentMessage.isFileMessage()) {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage as SendbirdFileMessage);\n }\n })\n .onFailed((err, _failedMessage) => {\n // updateMessages([failedMessage], false, sdk.currentUser.userId);\n reject(err);\n });\n });\n },\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateUserMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useFreshCallback(\n async (messageId, params) => {\n const updatedMessage = await channel.updateFileMessage(messageId, params);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useFreshCallback(\n async (failedMessage) => {\n const resentMessage = await (() => {\n if (failedMessage.isUserMessage()) return channel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return channel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (resentMessage) updateMessages([resentMessage], false, sdk.currentUser.userId);\n },\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useFreshCallback(async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await channel.deleteMessage(message);\n if (message.isFileMessage()) await channel.deleteMessage(message);\n } else {\n try {\n await collectionRef.current?.removeFailedMessage(message.reqId);\n } finally {\n deleteMessages([message.messageId], [message.reqId]);\n }\n }\n });\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,aAAA,GAAAD,OAAA;AAOA,IAAAE,WAAA,GAAAF,OAAA;AASA,IAAAG,kBAAA,GAAAH,OAAA;AAEA,IAAAI,QAAA,GAAAJ,OAAA;AAEA,MAAMK,uBAAuB,GAAGA,CAC9BC,OAA6B,EAC7BC,OAA6D,KAC1D;EACH,IAAIA,OAAO,EAAE,OAAOA,OAAO,EAAE;EAC7B,MAAMC,MAAM,GAAG,IAAIC,2BAAa,EAAE;EAClC,OAAOH,OAAO,CAACD,uBAAuB,CAAC;IAAEG,MAAM;IAAEE,KAAK,EAAE;EAAI,CAAC,CAAC;AAChE,CAAC;AAEM,MAAMC,qCAA8D,GAAGA,CAACC,GAAG,EAAEN,OAAO,EAAEO,MAAM,EAAEC,OAAO,KAAK;EAC/G,MAAMC,WAAW,GAAG,IAAAC,0BAAc,GAAE;EACpC,MAAMC,aAAa,GAAG,IAAAC,aAAM,GAA6B;EACzD,MAAMC,SAAS,GAAG,IAAAC,4BAAgB,EAAC,uCAAuC,CAAC;EAE3E,MAAM;IACJC,OAAO;IACPC,UAAU;IACVC,QAAQ;IACRC,YAAY;IACZC,sBAAsB;IACtBC,cAAc;IACdC,kBAAkB;IAClBC,kBAAkB;IAClBC,cAAc;IACdC,aAAa;IACbC;EACF,CAAC,GAAG,IAAAC,uCAA8B,EAACnB,MAAM,EAAEC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEmB,cAAc,CAAC;EAEnE,MAAMC,iBAAiB,GAAG,MAAOC,MAA2B,IAAK;IAC/D,IAAI;MACF,QAAQA,MAAM;QACZ,KAAKC,gCAAkB,CAACC,sBAAsB;QAC9C,KAAKD,gCAAkB,CAACE,0BAA0B;QAClD,KAAKF,gCAAkB,CAACG,iBAAiB;QACzC,KAAKC,SAAS;UACZ,MAAM,IAAAC,gCAAoB,EAAC,CAACnC,OAAO,CAAC,CAAC;UACrC;MAAM;IAEZ,CAAC,CAAC,OAAOoC,CAAC,EAAE;MACVC,kBAAM,CAACC,IAAI,CAAC,2DAA2D,EAAEF,CAAC,CAAC;IAC7E;EACF,CAAC;EAED,MAAMG,IAAI,GAAG,IAAAC,4BAAgB,EAAC,OAAOC,GAAY,EAAEC,QAAqB,KAAK;IAAA,IAAAC,qBAAA;IAC3E,IAAIhC,aAAa,CAACiC,OAAO,EAAE,CAAAD,qBAAA,GAAAhC,aAAa,CAACiC,OAAO,cAAAD,qBAAA,uBAArBA,qBAAA,CAAuBE,OAAO,EAAE;IAE3D,IAAIJ,GAAG,EAAE;MAAA,IAAAK,sBAAA;MACPnC,aAAa,CAACiC,OAAO,GAAG7C,uBAAuB,CAACC,OAAO,EAAEQ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEuC,iBAAiB,CAAC;MACpF1B,kBAAkB,CAAC,EAAE,EAAE,IAAI,EAAEf,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;MACpDqB,iBAAiB,EAAE;MAEnB,CAAAkB,sBAAA,GAAAnC,aAAa,CAACiC,OAAO,cAAAE,sBAAA,uBAArBA,sBAAA,CAAuBG,2BAA2B,CAAC;QACjDC,eAAe,EAAEA,CAACC,CAAC,EAAEC,EAAE,EAAEnC,QAAQ,KAAK;UACpCW,iBAAiB,CAACuB,CAAC,CAACtB,MAAM,CAAC;UAC3BR,kBAAkB,CAACJ,QAAQ,EAAE,KAAK,EAAEX,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;QAC7D,CAAC;QACD8C,iBAAiB,EAAEA,CAACF,CAAC,EAAEC,EAAE,EAAEnC,QAAQ,KAAK;UACtCW,iBAAiB,CAACuB,CAAC,CAACtB,MAAM,CAAC;;UAE3B;UACA,IAAIsB,CAAC,CAACtB,MAAM,KAAKC,gCAAkB,CAACC,sBAAsB,EAAE;YAC1D,MAAMuB,cAAc,GAAGpC,YAAY,CAACqC,GAAG,CAAEC,EAAE,IAAKA,EAAE,CAACC,SAAS,CAAC;YAC7D,MAAMC,iCAAiC,GAAGzC,QAAQ,CAACf,MAAM,CACtDsD,EAAE,IAAKF,cAAc,CAACK,OAAO,CAACH,EAAE,CAACC,SAAS,CAAC,KAAK,CAAC,CAAC,CACpD;YACDpC,kBAAkB,CAACqC,iCAAiC,EAAE,KAAK,EAAEpD,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;UACtF;;UAEA;UACA;UACA,IAAI4C,CAAC,CAACtB,MAAM,KAAKC,gCAAkB,CAACC,sBAAsB,EAAE;YAC1DX,cAAc,CAACH,QAAQ,EAAE,KAAK,EAAEX,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;UACzD;QACF,CAAC;QACDqD,iBAAiB,EAAEA,CAACT,CAAC,EAAEC,EAAE,EAAES,UAAU,KAAK;UACxCtC,cAAc,CAACsC,UAAU,EAAE,EAAE,CAAC;UAC9BvC,kBAAkB,CAACuC,UAAU,EAAE,EAAE,CAAC;QACpC,CAAC;QACDC,gBAAgB,EAAEA,CAAA,KAAM;UAAA,IAAAC,qBAAA;UACtBvD,OAAO,aAAPA,OAAO,wBAAAuD,qBAAA,GAAPvD,OAAO,CAAEsD,gBAAgB,cAAAC,qBAAA,uBAAzBA,qBAAA,CAAAC,IAAA,CAAAxD,OAAO,CAAsB;QAC/B,CAAC;QACDyD,gBAAgB,EAAEA,CAACd,CAAC,EAAEe,YAAY,KAAK;UACrC,IAAIA,YAAY,CAACC,cAAc,EAAE,IAAI,CAAC,IAAAC,8BAAkB,EAACF,YAAY,EAAElE,OAAO,CAAC,EAAE;YAC/ES,WAAW,EAAE;UACf;QACF,CAAC;QACD4D,iBAAiB,EAAEA,CAAA,KAAM;UACvB9B,IAAI,CAACE,GAAG,CAAC;QACX;MACF,CAAC,CAAC;MAEF9B,aAAa,CAACiC,OAAO,CAClB0B,UAAU,CAACC,yCAA2B,CAACC,wBAAwB,CAAC,CAChEC,aAAa,CAAC,CAACC,GAAG,EAAEzD,QAAQ,KAAK;QAChC,IAAIyD,GAAG,EAAEpE,GAAG,CAACqE,cAAc,IAAItC,kBAAM,CAACuC,KAAK,CAAC,uDAAuD,EAAEF,GAAG,CAAC,CAAC,KACrG;UAAA,IAAAG,sBAAA,EAAAC,sBAAA;UACHzC,kBAAM,CAAC0C,KAAK,CAAC,uDAAuD,EAAE,iBAAiB,EAAE9D,QAAQ,CAAC+D,MAAM,CAAC;UAEzG5D,cAAc,CAACH,QAAQ,EAAE,IAAI,EAAEX,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;UACtDa,cAAc,CAAC,EAAAyD,sBAAA,GAAAlE,aAAa,CAACiC,OAAO,cAAAiC,sBAAA,uBAArBA,sBAAA,CAAuBI,eAAe,KAAI,EAAE,EAAE,KAAK,EAAE3E,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;UAC3Fa,cAAc,CAAC,EAAA0D,sBAAA,GAAAnE,aAAa,CAACiC,OAAO,cAAAkC,sBAAA,uBAArBA,sBAAA,CAAuBI,cAAc,KAAI,EAAE,EAAE,KAAK,EAAE5E,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;QAC5F;QACAmC,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,EAAI;MACd,CAAC,CAAC,CACDyC,WAAW,CAAC,CAACT,GAAG,EAAEzD,QAAQ,KAAK;QAC9B,IAAIyD,GAAG,EAAErC,kBAAM,CAACC,IAAI,CAAC,qDAAqD,EAAEoC,GAAG,CAAC,CAAC,KAC5E;UACHrC,kBAAM,CAAC0C,KAAK,CAAC,qDAAqD,EAAE,iBAAiB,EAAE9D,QAAQ,CAAC+D,MAAM,CAAC;UAEvG5D,cAAc,CAACH,QAAQ,EAAE,IAAI,EAAEX,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;UACtD,IAAID,GAAG,CAACqE,cAAc,EAAE;YAAA,IAAAS,sBAAA,EAAAC,sBAAA;YACtBjE,cAAc,CAAC,EAAAgE,sBAAA,GAAAzE,aAAa,CAACiC,OAAO,cAAAwC,sBAAA,uBAArBA,sBAAA,CAAuBH,eAAe,KAAI,EAAE,EAAE,KAAK,EAAE3E,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;YAC3Fa,cAAc,CAAC,EAAAiE,sBAAA,GAAA1E,aAAa,CAACiC,OAAO,cAAAyC,sBAAA,uBAArBA,sBAAA,CAAuBH,cAAc,KAAI,EAAE,EAAE,KAAK,EAAE5E,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;UAC5F;QACF;QACAmC,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,EAAI;MACd,CAAC,CAAC;IACN;EACF,CAAC,CAAC;EAEF,IAAA4C,oCAAiB,EAAChF,GAAG,EAAEO,SAAS,EAAE;IAChC0E,YAAYA,CAACvF,OAAO,EAAEwF,UAAU,EAAE;MAChC,IAAIxF,OAAO,CAACmE,cAAc,EAAE,IAAI,CAAC,IAAAC,8BAAkB,EAACpE,OAAO,EAAEA,OAAO,CAAC,EAAE;QACrE,IAAIwF,UAAU,CAACjF,MAAM,KAAKD,GAAG,CAAC0C,WAAW,CAACzC,MAAM,EAAE;UAAA,IAAAkF,sBAAA;UAChDjF,OAAO,aAAPA,OAAO,wBAAAiF,sBAAA,GAAPjF,OAAO,CAAEsD,gBAAgB,cAAA2B,sBAAA,uBAAzBA,sBAAA,CAAAzB,IAAA,CAAAxD,OAAO,CAAsB;QAC/B,CAAC,MAAM;UACLC,WAAW,EAAE;QACf;MACF;IACF;EACF,CAAC,CAAC;EAEF,IAAAiF,gBAAS,EAAC,MAAM;IACd;IACAC,UAAU,CAAC,YAAY;MACrBnE,aAAa,CAAC,IAAI,CAAC;MACnBe,IAAI,CAAChC,MAAM,EAAE,MAAMiB,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,EAAE,CAAC,CAAC;EACP,CAAC,EAAE,CAACxB,OAAO,CAAC4F,GAAG,EAAErF,MAAM,CAAC,CAAC;EAEzB,IAAAmF,gBAAS,EAAC,MAAM;IACd,OAAO,MAAM;MAAA,IAAAG,sBAAA;MACX,IAAIlF,aAAa,CAACiC,OAAO,EAAE,CAAAiD,sBAAA,GAAAlF,aAAa,CAACiC,OAAO,cAAAiD,sBAAA,uBAArBA,sBAAA,CAAuBhD,OAAO,EAAE;IAC7D,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMiD,OAAuD,GAAG,IAAAtD,4BAAgB,EAAC,YAAY;IAC3Ff,gBAAgB,CAAC,IAAI,CAAC;IACtBc,IAAI,CAAChC,MAAM,EAAE,MAAMkB,gBAAgB,CAAC,KAAK,CAAC,CAAC;EAC7C,CAAC,CAAC;EAEF,MAAMsE,IAAiD,GAAG,IAAAvD,4BAAgB,EAAC,YAAY;IAAA,IAAAwD,sBAAA;IACrF,IAAIrF,aAAa,CAACiC,OAAO,KAAAoD,sBAAA,GAAIrF,aAAa,CAACiC,OAAO,cAAAoD,sBAAA,eAArBA,sBAAA,CAAuBC,WAAW,EAAE;MAC/D,IAAI;QAAA,IAAAC,sBAAA;QACF,MAAMC,IAAI,GAAG,QAAAD,sBAAA,GAAMvF,aAAa,CAACiC,OAAO,cAAAsD,sBAAA,uBAArBA,sBAAA,CAAuBE,YAAY,EAAE;QACxDhF,cAAc,CAAC+E,IAAI,EAAE,KAAK,EAAE7F,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;MACrD,CAAC,CAAC,MAAM,CAAC;IACX;EACF,CAAC,CAAC;EAEF,MAAM8F,IAAiD,GAAG,IAAA7D,4BAAgB,EAAC,YAAY;IAAA,IAAA8D,uBAAA;IACrF,MAAMC,iBAAwC,GAAG,EAAE;IAEnD,IAAI5F,aAAa,CAACiC,OAAO,KAAA0D,uBAAA,GAAI3F,aAAa,CAACiC,OAAO,cAAA0D,uBAAA,eAArBA,uBAAA,CAAuBE,OAAO,EAAE;MAC3D,IAAI;QAAA,IAAAC,uBAAA;QACF,MAAMC,WAAW,GAAG,QAAAD,uBAAA,GAAM9F,aAAa,CAACiC,OAAO,cAAA6D,uBAAA,uBAArBA,uBAAA,CAAuBE,QAAQ,EAAE;QAC3DJ,iBAAiB,CAACK,IAAI,CAAC,GAAGF,WAAW,CAAC;MACxC,CAAC,CAAC,MAAM,CAAC;IACX;IAEA,IAAIxF,YAAY,CAAC8D,MAAM,GAAG,CAAC,EAAE;MAC3BuB,iBAAiB,CAACK,IAAI,CAAC,GAAG1F,YAAY,CAAC;IACzC;IAEA,IAAIqF,iBAAiB,CAACvB,MAAM,GAAG,CAAC,EAAE;MAChC5D,cAAc,CAACmF,iBAAiB,EAAE,KAAK,EAAEjG,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;MAChEc,kBAAkB,CAAC,EAAE,EAAE,IAAI,EAAEf,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;IACtD;EACF,CAAC,CAAC;EAEF,MAAMsG,eAAuE,GAAG,IAAArE,4BAAgB,EAC9F,CAACsE,MAAM,EAAEC,SAAS,KAAK;IACrB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtClH,OAAO,CACJ6G,eAAe,CAACC,MAAM,CAAC,CACvBC,SAAS,CAAEI,cAAc,IAAK;QAC7B,IAAIA,cAAc,CAACC,aAAa,EAAE,EAAE;UAClCL,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAGI,cAAc,CAAC;UAC3B/F,cAAc,CAAC,CAAC+F,cAAc,CAAC,EAAE,KAAK,EAAE7G,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;QACjE;MACF,CAAC,CAAC,CACD8G,WAAW,CAAEC,WAAW,IAAK;QAC5B,IAAIA,WAAW,CAACF,aAAa,EAAE,EAAE;UAC/BhG,cAAc,CAAC,CAACkG,WAAW,CAAC,EAAE,KAAK,EAAEhH,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;UAC5D0G,OAAO,CAACK,WAAW,CAAC;QACtB;MACF,CAAC,CAAC,CACDC,QAAQ,CAAC,CAAC7C,GAAG,EAAE8C,cAAc,KAAK;QACjC;QACAN,MAAM,CAACxC,GAAG,CAAC;MACb,CAAC,CAAC;IACN,CAAC,CAAC;EACJ,CAAC,CACF;EACD,MAAM+C,eAAuE,GAAG,IAAAjF,4BAAgB,EAC9F,CAACsE,MAAM,EAAEC,SAAS,KAAK;IACrB,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtClH,OAAO,CACJyH,eAAe,CAACX,MAAM,CAAC,CACvBC,SAAS,CAAEI,cAAc,IAAK;QAC7B,IAAIA,cAAc,CAACO,aAAa,EAAE,EAAE;UAClCtG,cAAc,CAAC,CAAC+F,cAAc,CAAC,EAAE,KAAK,EAAE7G,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;UAC/DwG,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAGI,cAAc,CAAC;QAC7B;MACF,CAAC,CAAC,CACDE,WAAW,CAAEC,WAAW,IAAK;QAC5B,IAAIA,WAAW,CAACI,aAAa,EAAE,EAAE;UAC/BtG,cAAc,CAAC,CAACkG,WAAW,CAAC,EAAE,KAAK,EAAEhH,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;UAC5D0G,OAAO,CAACK,WAAW,CAAwB;QAC7C;MACF,CAAC,CAAC,CACDC,QAAQ,CAAC,CAAC7C,GAAG,EAAE8C,cAAc,KAAK;QACjC;QACAN,MAAM,CAACxC,GAAG,CAAC;MACb,CAAC,CAAC;IACN,CAAC,CAAC;EACJ,CAAC,CACF;EACD,MAAMiD,iBAA2E,GAAG,IAAAnF,4BAAgB,EAClG,OAAOiB,SAAS,EAAEqD,MAAM,KAAK;IAC3B,MAAMc,cAAc,GAAG,MAAM5H,OAAO,CAAC2H,iBAAiB,CAAClE,SAAS,EAAEqD,MAAM,CAAC;IACzE1F,cAAc,CAAC,CAACwG,cAAc,CAAC,EAAE,KAAK,EAAEtH,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;IAC/D,OAAOqH,cAAc;EACvB,CAAC,CACF;EACD,MAAMC,iBAA2E,GAAG,IAAArF,4BAAgB,EAClG,OAAOiB,SAAS,EAAEqD,MAAM,KAAK;IAC3B,MAAMc,cAAc,GAAG,MAAM5H,OAAO,CAAC6H,iBAAiB,CAACpE,SAAS,EAAEqD,MAAM,CAAC;IACzE1F,cAAc,CAAC,CAACwG,cAAc,CAAC,EAAE,KAAK,EAAEtH,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;IAC/D,OAAOqH,cAAc;EACvB,CAAC,CACF;EACD,MAAME,aAAmE,GAAG,IAAAtF,4BAAgB,EAC1F,MAAOuF,aAAa,IAAK;IACvB,MAAMC,aAAa,GAAG,MAAM,CAAC,MAAM;MACjC,IAAID,aAAa,CAACX,aAAa,EAAE,EAAE,OAAOpH,OAAO,CAACiI,iBAAiB,CAACF,aAAa,CAAC;MAClF,IAAIA,aAAa,CAACL,aAAa,EAAE,EAAE,OAAO1H,OAAO,CAACkI,iBAAiB,CAACH,aAAa,CAAC;MAClF,OAAO,IAAI;IACb,CAAC,GAAG;IAEJ,IAAIC,aAAa,EAAE5G,cAAc,CAAC,CAAC4G,aAAa,CAAC,EAAE,KAAK,EAAE1H,GAAG,CAAC0C,WAAW,CAACzC,MAAM,CAAC;EACnF,CAAC,CACF;EACD,MAAM4H,aAAmE,GAAG,IAAA3F,4BAAgB,EAAC,MAAO4F,OAAO,IAAK;IAC9G,IAAIA,OAAO,CAACC,aAAa,KAAK,WAAW,EAAE;MACzC,IAAID,OAAO,CAAChB,aAAa,EAAE,EAAE,MAAMpH,OAAO,CAACmI,aAAa,CAACC,OAAO,CAAC;MACjE,IAAIA,OAAO,CAACV,aAAa,EAAE,EAAE,MAAM1H,OAAO,CAACmI,aAAa,CAACC,OAAO,CAAC;IACnE,CAAC,MAAM;MACL,IAAI;QAAA,IAAAE,uBAAA;QACF,QAAAA,uBAAA,GAAM3H,aAAa,CAACiC,OAAO,cAAA0F,uBAAA,uBAArBA,uBAAA,CAAuBC,mBAAmB,CAACH,OAAO,CAACI,KAAK,CAAC;MACjE,CAAC,SAAS;QACRjH,cAAc,CAAC,CAAC6G,OAAO,CAAC3E,SAAS,CAAC,EAAE,CAAC2E,OAAO,CAACI,KAAK,CAAC,CAAC;MACtD;IACF;EACF,CAAC,CAAC;EAEF,OAAO;IACLzH,OAAO;IACPC,UAAU;IACV8E,OAAO;IACP7E,QAAQ;IACRC,YAAY;IACZC,sBAAsB;IACtBkF,IAAI;IACJN,IAAI;IACJc,eAAe;IACfY,eAAe;IACfE,iBAAiB;IACjBE,iBAAiB;IACjBC,aAAa;IACbK;EACF,CAAC;AACH,CAAC;AAACM,OAAA,CAAApI,qCAAA,GAAAA,qCAAA"}