@sendbird/uikit-chat-hooks 1.1.1 → 2.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +1 -1
  2. package/lib/commonjs/channel/useActiveGroupChannel.js +1 -1
  3. package/lib/commonjs/channel/useActiveGroupChannel.js.map +1 -1
  4. package/lib/commonjs/channel/useGroupChannelList/index.js +3 -0
  5. package/lib/commonjs/channel/useGroupChannelList/index.js.map +1 -1
  6. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js +26 -27
  7. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
  8. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js +8 -11
  9. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
  10. package/lib/commonjs/channel/useGroupChannelMessages/index.js +3 -0
  11. package/lib/commonjs/channel/useGroupChannelMessages/index.js.map +1 -1
  12. package/lib/commonjs/channel/useGroupChannelMessages/reducer.js.map +1 -1
  13. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +83 -87
  14. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  15. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +32 -20
  16. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  17. package/lib/commonjs/common/useMessageOutgoingStatus.js +8 -4
  18. package/lib/commonjs/common/useMessageOutgoingStatus.js.map +1 -1
  19. package/lib/commonjs/common/usePushTrigger.js +13 -5
  20. package/lib/commonjs/common/usePushTrigger.js.map +1 -1
  21. package/lib/commonjs/common/useTotalUnreadChannelCount.js +4 -2
  22. package/lib/commonjs/common/useTotalUnreadChannelCount.js.map +1 -1
  23. package/lib/commonjs/common/useTotalUnreadMessageCount.js +12 -15
  24. package/lib/commonjs/common/useTotalUnreadMessageCount.js.map +1 -1
  25. package/lib/commonjs/handler/useChannelHandler.js +5 -3
  26. package/lib/commonjs/handler/useChannelHandler.js.map +1 -1
  27. package/lib/commonjs/handler/useConnectionHandler.js +5 -3
  28. package/lib/commonjs/handler/useConnectionHandler.js.map +1 -1
  29. package/lib/commonjs/handler/useUserEventHandler.js +19 -6
  30. package/lib/commonjs/handler/useUserEventHandler.js.map +1 -1
  31. package/lib/commonjs/types.js.map +1 -1
  32. package/lib/module/channel/useActiveGroupChannel.js +1 -1
  33. package/lib/module/channel/useActiveGroupChannel.js.map +1 -1
  34. package/lib/module/channel/useGroupChannelList/index.js +2 -0
  35. package/lib/module/channel/useGroupChannelList/index.js.map +1 -1
  36. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js +26 -28
  37. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
  38. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js +8 -12
  39. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
  40. package/lib/module/channel/useGroupChannelMessages/index.js +2 -0
  41. package/lib/module/channel/useGroupChannelMessages/index.js.map +1 -1
  42. package/lib/module/channel/useGroupChannelMessages/reducer.js.map +1 -1
  43. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +81 -87
  44. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  45. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +33 -21
  46. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  47. package/lib/module/common/useMessageOutgoingStatus.js +8 -4
  48. package/lib/module/common/useMessageOutgoingStatus.js.map +1 -1
  49. package/lib/module/common/usePushTrigger.js +11 -5
  50. package/lib/module/common/usePushTrigger.js.map +1 -1
  51. package/lib/module/common/useTotalUnreadChannelCount.js +4 -2
  52. package/lib/module/common/useTotalUnreadChannelCount.js.map +1 -1
  53. package/lib/module/common/useTotalUnreadMessageCount.js +12 -17
  54. package/lib/module/common/useTotalUnreadMessageCount.js.map +1 -1
  55. package/lib/module/handler/useChannelHandler.js +4 -3
  56. package/lib/module/handler/useChannelHandler.js.map +1 -1
  57. package/lib/module/handler/useConnectionHandler.js +4 -3
  58. package/lib/module/handler/useConnectionHandler.js.map +1 -1
  59. package/lib/module/handler/useUserEventHandler.js +19 -7
  60. package/lib/module/handler/useUserEventHandler.js.map +1 -1
  61. package/lib/module/types.js.map +1 -1
  62. package/lib/typescript/src/channel/useActiveGroupChannel.d.ts +2 -2
  63. package/lib/typescript/src/channel/useGroupChannelList/reducer.d.ts +1 -1
  64. package/lib/typescript/src/channel/useGroupChannelMessages/reducer.d.ts +4 -4
  65. package/lib/typescript/src/common/useMessageOutgoingStatus.d.ts +2 -2
  66. package/lib/typescript/src/common/usePushTrigger.d.ts +9 -3
  67. package/lib/typescript/src/common/useTotalUnreadMessageCount.d.ts +4 -4
  68. package/lib/typescript/src/common/useUserList.d.ts +1 -1
  69. package/lib/typescript/src/handler/useChannelHandler.d.ts +2 -2
  70. package/lib/typescript/src/handler/useConnectionHandler.d.ts +2 -2
  71. package/lib/typescript/src/handler/useUserEventHandler.d.ts +2 -3
  72. package/lib/typescript/src/types.d.ts +7 -8
  73. package/package.json +5 -5
  74. package/src/channel/useActiveGroupChannel.ts +1 -1
  75. package/src/channel/useGroupChannelList/index.ts +3 -0
  76. package/src/channel/useGroupChannelList/useGroupChannelListWithCollection.ts +22 -25
  77. package/src/channel/useGroupChannelList/useGroupChannelListWithQuery.ts +10 -15
  78. package/src/channel/useGroupChannelMessages/index.ts +3 -0
  79. package/src/channel/useGroupChannelMessages/reducer.ts +4 -9
  80. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +79 -78
  81. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +59 -34
  82. package/src/common/useMessageOutgoingStatus.ts +8 -13
  83. package/src/common/usePushTrigger.ts +13 -7
  84. package/src/common/useTotalUnreadChannelCount.ts +4 -2
  85. package/src/common/useTotalUnreadMessageCount.ts +14 -25
  86. package/src/handler/useChannelHandler.ts +5 -5
  87. package/src/handler/useConnectionHandler.ts +5 -5
  88. package/src/handler/useUserEventHandler.ts +15 -8
  89. package/src/types.ts +10 -10
@@ -19,13 +19,13 @@ const useMessageOutgoingStatus = (sdk, channel, message) => {
19
19
  const currentUser = sdk.currentUser;
20
20
  const uniqId = (0, _uikitUtils.useUniqId)(HOOK_NAME);
21
21
  (0, _useChannelHandler.useChannelHandler)(sdk, `${HOOK_NAME}_${uniqId}`, {
22
- onDeliveryReceiptUpdated(eventChannel) {
22
+ onUndeliveredMemberStatusUpdated(eventChannel) {
23
23
  if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
24
24
  if (!(0, _uikitUtils.isMyMessage)(message, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
25
25
  forceUpdate();
26
26
  },
27
27
 
28
- onReadReceiptUpdated(eventChannel) {
28
+ onUnreadMemberStatusUpdated(eventChannel) {
29
29
  if ((0, _uikitUtils.isDifferentChannel)(channel, eventChannel)) return;
30
30
  if (!(0, _uikitUtils.isMyMessage)(message, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId)) return;
31
31
  forceUpdate();
@@ -33,8 +33,12 @@ const useMessageOutgoingStatus = (sdk, channel, message) => {
33
33
 
34
34
  });
35
35
  if (!message) return 'NONE';
36
- if (message.sendingStatus === 'pending') return 'PENDING';
37
- if (message.sendingStatus === 'failed') return 'FAILED';
36
+
37
+ if ('sendingStatus' in message) {
38
+ if (message.sendingStatus === 'pending') return 'PENDING';
39
+ if (message.sendingStatus === 'failed') return 'FAILED';
40
+ }
41
+
38
42
  if (channel.getUnreadMemberCount(message) === 0) return 'READ';
39
43
 
40
44
  if (features.deliveryReceiptEnabled) {
@@ -1 +1 @@
1
- {"version":3,"names":["HOOK_NAME","useMessageOutgoingStatus","sdk","channel","message","features","useAppFeatures","forceUpdate","useForceUpdate","currentUser","uniqId","useUniqId","useChannelHandler","onDeliveryReceiptUpdated","eventChannel","isDifferentChannel","isMyMessage","userId","onReadReceiptUpdated","sendingStatus","getUnreadMemberCount","deliveryReceiptEnabled","getUndeliveredMemberCount"],"sources":["useMessageOutgoingStatus.ts"],"sourcesContent":["import type {\n SendbirdAdminMessage,\n SendbirdChatSDK,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdUserMessage,\n} from '@sendbird/uikit-utils';\nimport { isDifferentChannel, isMyMessage, useForceUpdate, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../handler/useChannelHandler';\nimport { useAppFeatures } from './useAppFeatures';\n\nconst HOOK_NAME = 'useMessageOutgoingStatus';\n\nexport type SBUOutgoingStatus = 'NONE' | 'PENDING' | 'FAILED' | 'UNDELIVERED' | 'DELIVERED' | 'UNREAD' | 'READ';\n\nexport const useMessageOutgoingStatus = (\n sdk: SendbirdChatSDK,\n channel: SendbirdGroupChannel,\n message?: SendbirdFileMessage | SendbirdUserMessage | SendbirdAdminMessage | null,\n): SBUOutgoingStatus => {\n const features = useAppFeatures(sdk);\n const forceUpdate = useForceUpdate();\n const currentUser = sdk.currentUser;\n\n const uniqId = useUniqId(HOOK_NAME);\n useChannelHandler(sdk, `${HOOK_NAME}_${uniqId}`, {\n onDeliveryReceiptUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!isMyMessage(message, currentUser?.userId)) return;\n\n forceUpdate();\n },\n onReadReceiptUpdated(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 (message.sendingStatus === 'pending') return 'PENDING';\n\n if (message.sendingStatus === 'failed') return 'FAILED';\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":";;;;;;;AAOA;;AAEA;;AACA;;AAEA,MAAMA,SAAS,GAAG,0BAAlB;;AAIO,MAAMC,wBAAwB,GAAG,CACtCC,GADsC,EAEtCC,OAFsC,EAGtCC,OAHsC,KAIhB;EACtB,MAAMC,QAAQ,GAAG,IAAAC,8BAAA,EAAeJ,GAAf,CAAjB;EACA,MAAMK,WAAW,GAAG,IAAAC,0BAAA,GAApB;EACA,MAAMC,WAAW,GAAGP,GAAG,CAACO,WAAxB;EAEA,MAAMC,MAAM,GAAG,IAAAC,qBAAA,EAAUX,SAAV,CAAf;EACA,IAAAY,oCAAA,EAAkBV,GAAlB,EAAwB,GAAEF,SAAU,IAAGU,MAAO,EAA9C,EAAiD;IAC/CG,wBAAwB,CAACC,YAAD,EAAe;MACrC,IAAI,IAAAC,8BAAA,EAAmBZ,OAAnB,EAA4BW,YAA5B,CAAJ,EAA+C;MAC/C,IAAI,CAAC,IAAAE,uBAAA,EAAYZ,OAAZ,EAAqBK,WAArB,aAAqBA,WAArB,uBAAqBA,WAAW,CAAEQ,MAAlC,CAAL,EAAgD;MAEhDV,WAAW;IACZ,CAN8C;;IAO/CW,oBAAoB,CAACJ,YAAD,EAAe;MACjC,IAAI,IAAAC,8BAAA,EAAmBZ,OAAnB,EAA4BW,YAA5B,CAAJ,EAA+C;MAC/C,IAAI,CAAC,IAAAE,uBAAA,EAAYZ,OAAZ,EAAqBK,WAArB,aAAqBA,WAArB,uBAAqBA,WAAW,CAAEQ,MAAlC,CAAL,EAAgD;MAEhDV,WAAW;IACZ;;EAZ8C,CAAjD;EAeA,IAAI,CAACH,OAAL,EAAc,OAAO,MAAP;EAEd,IAAIA,OAAO,CAACe,aAAR,KAA0B,SAA9B,EAAyC,OAAO,SAAP;EAEzC,IAAIf,OAAO,CAACe,aAAR,KAA0B,QAA9B,EAAwC,OAAO,QAAP;EAExC,IAAIhB,OAAO,CAACiB,oBAAR,CAA6BhB,OAA7B,MAA0C,CAA9C,EAAiD,OAAO,MAAP;;EAEjD,IAAIC,QAAQ,CAACgB,sBAAb,EAAqC;IACnC,IAAIlB,OAAO,CAACmB,yBAAR,CAAkClB,OAAlC,MAA+C,CAAnD,EAAsD,OAAO,WAAP;IACtD,OAAO,aAAP;EACD;;EAED,OAAO,QAAP;AACD,CAvCM"}
1
+ {"version":3,"names":["HOOK_NAME","useMessageOutgoingStatus","sdk","channel","message","features","useAppFeatures","forceUpdate","useForceUpdate","currentUser","uniqId","useUniqId","useChannelHandler","onUndeliveredMemberStatusUpdated","eventChannel","isDifferentChannel","isMyMessage","userId","onUnreadMemberStatusUpdated","sendingStatus","getUnreadMemberCount","deliveryReceiptEnabled","getUndeliveredMemberCount"],"sources":["useMessageOutgoingStatus.ts"],"sourcesContent":["import type { SendbirdChatSDK, SendbirdGroupChannel, SendbirdMessage } from '@sendbird/uikit-utils';\nimport { isDifferentChannel, isMyMessage, useForceUpdate, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useChannelHandler } from '../handler/useChannelHandler';\nimport { useAppFeatures } from './useAppFeatures';\n\nconst HOOK_NAME = 'useMessageOutgoingStatus';\n\nexport type SBUOutgoingStatus = 'NONE' | 'PENDING' | 'FAILED' | 'UNDELIVERED' | 'DELIVERED' | 'UNREAD' | 'READ';\n\nexport const useMessageOutgoingStatus = (\n sdk: SendbirdChatSDK,\n channel: SendbirdGroupChannel,\n message?: SendbirdMessage | null,\n): SBUOutgoingStatus => {\n const features = useAppFeatures(sdk);\n const forceUpdate = useForceUpdate();\n const currentUser = sdk.currentUser;\n\n const uniqId = useUniqId(HOOK_NAME);\n useChannelHandler(sdk, `${HOOK_NAME}_${uniqId}`, {\n onUndeliveredMemberStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!isMyMessage(message, currentUser?.userId)) return;\n\n forceUpdate();\n },\n onUnreadMemberStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n if (!isMyMessage(message, currentUser?.userId)) return;\n\n forceUpdate();\n },\n });\n\n if (!message) return 'NONE';\n\n if ('sendingStatus' in message) {\n if (message.sendingStatus === 'pending') return 'PENDING';\n if (message.sendingStatus === 'failed') return 'FAILED';\n }\n\n if (channel.getUnreadMemberCount(message) === 0) return 'READ';\n\n if (features.deliveryReceiptEnabled) {\n if (channel.getUndeliveredMemberCount(message) === 0) return 'DELIVERED';\n return 'UNDELIVERED';\n }\n\n return 'UNREAD';\n};\n"],"mappings":";;;;;;;AACA;;AAEA;;AACA;;AAEA,MAAMA,SAAS,GAAG,0BAAlB;;AAIO,MAAMC,wBAAwB,GAAG,CACtCC,GADsC,EAEtCC,OAFsC,EAGtCC,OAHsC,KAIhB;EACtB,MAAMC,QAAQ,GAAG,IAAAC,8BAAA,EAAeJ,GAAf,CAAjB;EACA,MAAMK,WAAW,GAAG,IAAAC,0BAAA,GAApB;EACA,MAAMC,WAAW,GAAGP,GAAG,CAACO,WAAxB;EAEA,MAAMC,MAAM,GAAG,IAAAC,qBAAA,EAAUX,SAAV,CAAf;EACA,IAAAY,oCAAA,EAAkBV,GAAlB,EAAwB,GAAEF,SAAU,IAAGU,MAAO,EAA9C,EAAiD;IAC/CG,gCAAgC,CAACC,YAAD,EAAe;MAC7C,IAAI,IAAAC,8BAAA,EAAmBZ,OAAnB,EAA4BW,YAA5B,CAAJ,EAA+C;MAC/C,IAAI,CAAC,IAAAE,uBAAA,EAAYZ,OAAZ,EAAqBK,WAArB,aAAqBA,WAArB,uBAAqBA,WAAW,CAAEQ,MAAlC,CAAL,EAAgD;MAEhDV,WAAW;IACZ,CAN8C;;IAO/CW,2BAA2B,CAACJ,YAAD,EAAe;MACxC,IAAI,IAAAC,8BAAA,EAAmBZ,OAAnB,EAA4BW,YAA5B,CAAJ,EAA+C;MAC/C,IAAI,CAAC,IAAAE,uBAAA,EAAYZ,OAAZ,EAAqBK,WAArB,aAAqBA,WAArB,uBAAqBA,WAAW,CAAEQ,MAAlC,CAAL,EAAgD;MAEhDV,WAAW;IACZ;;EAZ8C,CAAjD;EAeA,IAAI,CAACH,OAAL,EAAc,OAAO,MAAP;;EAEd,IAAI,mBAAmBA,OAAvB,EAAgC;IAC9B,IAAIA,OAAO,CAACe,aAAR,KAA0B,SAA9B,EAAyC,OAAO,SAAP;IACzC,IAAIf,OAAO,CAACe,aAAR,KAA0B,QAA9B,EAAwC,OAAO,QAAP;EACzC;;EAED,IAAIhB,OAAO,CAACiB,oBAAR,CAA6BhB,OAA7B,MAA0C,CAA9C,EAAiD,OAAO,MAAP;;EAEjD,IAAIC,QAAQ,CAACgB,sBAAb,EAAqC;IACnC,IAAIlB,OAAO,CAACmB,yBAAR,CAAkClB,OAAlC,MAA+C,CAAnD,EAAsD,OAAO,WAAP;IACtD,OAAO,aAAP;EACD;;EAED,OAAO,QAAP;AACD,CAxCM"}
@@ -7,21 +7,29 @@ exports.usePushTrigger = void 0;
7
7
 
8
8
  var _react = require("react");
9
9
 
10
+ var _chat = require("@sendbird/chat");
11
+
10
12
  var _uikitUtils = require("@sendbird/uikit-utils");
11
13
 
14
+ const PushTriggerMap = {
15
+ 'all': _chat.PushTriggerOption.ALL,
16
+ 'mention_only': _chat.PushTriggerOption.MENTION_ONLY,
17
+ 'off': _chat.PushTriggerOption.OFF,
18
+ 'default': _chat.PushTriggerOption.DEFAULT
19
+ };
20
+
12
21
  const usePushTrigger = sdk => {
13
- const [option, setOption] = (0, _react.useState)('off');
22
+ const [option, setOption] = (0, _react.useState)(_chat.PushTriggerOption.DEFAULT);
14
23
  const updateOption = (0, _react.useCallback)(async value => {
15
24
  try {
16
- await sdk.setPushTriggerOption(value);
17
- setOption(value);
25
+ const _option = PushTriggerMap[value];
26
+ await sdk.setPushTriggerOption(_option).then(() => setOption(_option));
18
27
  } catch (e) {
19
28
  _uikitUtils.Logger.warn('[usePushTrigger]', 'Cannot update push trigger option', e);
20
29
  }
21
30
  }, [sdk, sdk.currentUser]);
22
31
  (0, _uikitUtils.useAsyncEffect)(async () => {
23
- const currentOption = await sdk.getPushTriggerOption();
24
- setOption(currentOption);
32
+ setOption(await sdk.getPushTriggerOption());
25
33
  }, [sdk, sdk.currentUser]);
26
34
  return {
27
35
  option,
@@ -1 +1 @@
1
- {"version":3,"names":["usePushTrigger","sdk","option","setOption","useState","updateOption","useCallback","value","setPushTriggerOption","e","Logger","warn","currentUser","useAsyncEffect","currentOption","getPushTriggerOption"],"sources":["usePushTrigger.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { Logger, useAsyncEffect } from '@sendbird/uikit-utils';\n\ntype PushTriggerOptionType = 'all' | 'mention_only' | 'off';\nexport const usePushTrigger = (sdk: SendbirdChatSDK) => {\n const [option, setOption] = useState<PushTriggerOptionType>('off');\n\n const updateOption = useCallback(\n async (value: PushTriggerOptionType) => {\n try {\n await sdk.setPushTriggerOption(value);\n setOption(value);\n } catch (e) {\n Logger.warn('[usePushTrigger]', 'Cannot update push trigger option', e);\n }\n },\n [sdk, sdk.currentUser],\n );\n\n useAsyncEffect(async () => {\n const currentOption = await sdk.getPushTriggerOption();\n setOption(currentOption as PushTriggerOptionType);\n }, [sdk, sdk.currentUser]);\n\n return {\n option,\n updateOption,\n };\n};\n"],"mappings":";;;;;;;AAAA;;AAGA;;AAGO,MAAMA,cAAc,GAAIC,GAAD,IAA0B;EACtD,MAAM,CAACC,MAAD,EAASC,SAAT,IAAsB,IAAAC,eAAA,EAAgC,KAAhC,CAA5B;EAEA,MAAMC,YAAY,GAAG,IAAAC,kBAAA,EACnB,MAAOC,KAAP,IAAwC;IACtC,IAAI;MACF,MAAMN,GAAG,CAACO,oBAAJ,CAAyBD,KAAzB,CAAN;MACAJ,SAAS,CAACI,KAAD,CAAT;IACD,CAHD,CAGE,OAAOE,CAAP,EAAU;MACVC,kBAAA,CAAOC,IAAP,CAAY,kBAAZ,EAAgC,mCAAhC,EAAqEF,CAArE;IACD;EACF,CARkB,EASnB,CAACR,GAAD,EAAMA,GAAG,CAACW,WAAV,CATmB,CAArB;EAYA,IAAAC,0BAAA,EAAe,YAAY;IACzB,MAAMC,aAAa,GAAG,MAAMb,GAAG,CAACc,oBAAJ,EAA5B;IACAZ,SAAS,CAACW,aAAD,CAAT;EACD,CAHD,EAGG,CAACb,GAAD,EAAMA,GAAG,CAACW,WAAV,CAHH;EAKA,OAAO;IACLV,MADK;IAELG;EAFK,CAAP;AAID,CAxBM"}
1
+ {"version":3,"names":["PushTriggerMap","PushTriggerOption","ALL","MENTION_ONLY","OFF","DEFAULT","usePushTrigger","sdk","option","setOption","useState","updateOption","useCallback","value","_option","setPushTriggerOption","then","e","Logger","warn","currentUser","useAsyncEffect","getPushTriggerOption"],"sources":["usePushTrigger.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\nimport { PushTriggerOption } from '@sendbird/chat';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { Logger, useAsyncEffect } from '@sendbird/uikit-utils';\n\nconst PushTriggerMap = {\n 'all': PushTriggerOption.ALL,\n 'mention_only': PushTriggerOption.MENTION_ONLY,\n 'off': PushTriggerOption.OFF,\n 'default': PushTriggerOption.DEFAULT,\n};\n\nexport const usePushTrigger = (sdk: SendbirdChatSDK) => {\n const [option, setOption] = useState<PushTriggerOption>(PushTriggerOption.DEFAULT);\n\n const updateOption = useCallback(\n async (value: keyof typeof PushTriggerMap) => {\n try {\n const _option = PushTriggerMap[value];\n await sdk.setPushTriggerOption(_option).then(() => setOption(_option));\n } catch (e) {\n Logger.warn('[usePushTrigger]', 'Cannot update push trigger option', e);\n }\n },\n [sdk, sdk.currentUser],\n );\n\n useAsyncEffect(async () => {\n setOption(await sdk.getPushTriggerOption());\n }, [sdk, sdk.currentUser]);\n\n return {\n option,\n updateOption,\n };\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAEA;;AAEA,MAAMA,cAAc,GAAG;EACrB,OAAOC,uBAAA,CAAkBC,GADJ;EAErB,gBAAgBD,uBAAA,CAAkBE,YAFb;EAGrB,OAAOF,uBAAA,CAAkBG,GAHJ;EAIrB,WAAWH,uBAAA,CAAkBI;AAJR,CAAvB;;AAOO,MAAMC,cAAc,GAAIC,GAAD,IAA0B;EACtD,MAAM,CAACC,MAAD,EAASC,SAAT,IAAsB,IAAAC,eAAA,EAA4BT,uBAAA,CAAkBI,OAA9C,CAA5B;EAEA,MAAMM,YAAY,GAAG,IAAAC,kBAAA,EACnB,MAAOC,KAAP,IAA8C;IAC5C,IAAI;MACF,MAAMC,OAAO,GAAGd,cAAc,CAACa,KAAD,CAA9B;MACA,MAAMN,GAAG,CAACQ,oBAAJ,CAAyBD,OAAzB,EAAkCE,IAAlC,CAAuC,MAAMP,SAAS,CAACK,OAAD,CAAtD,CAAN;IACD,CAHD,CAGE,OAAOG,CAAP,EAAU;MACVC,kBAAA,CAAOC,IAAP,CAAY,kBAAZ,EAAgC,mCAAhC,EAAqEF,CAArE;IACD;EACF,CARkB,EASnB,CAACV,GAAD,EAAMA,GAAG,CAACa,WAAV,CATmB,CAArB;EAYA,IAAAC,0BAAA,EAAe,YAAY;IACzBZ,SAAS,CAAC,MAAMF,GAAG,CAACe,oBAAJ,EAAP,CAAT;EACD,CAFD,EAEG,CAACf,GAAD,EAAMA,GAAG,CAACa,WAAV,CAFH;EAIA,OAAO;IACLZ,MADK;IAELG;EAFK,CAAP;AAID,CAvBM"}
@@ -17,10 +17,12 @@ const useTotalUnreadChannelCount = (sdk, params) => {
17
17
  const id = (0, _uikitUtils.useUniqId)(HOOK_NAME);
18
18
  const [unreadChannelCount, setUnreadChannelCount] = (0, _react.useState)(0);
19
19
  (0, _uikitUtils.useAsyncEffect)(async () => {
20
- setUnreadChannelCount(await sdk.getTotalUnreadChannelCount());
20
+ setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());
21
21
  }, [sdk]);
22
22
  (0, _useUserEventHandler.useUserEventHandler)(sdk, HOOK_NAME + id, {
23
- onTotalUnreadMessageCountUpdated: async () => setUnreadChannelCount(await sdk.getTotalUnreadChannelCount())
23
+ onTotalUnreadMessageCountUpdated: async () => {
24
+ setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());
25
+ }
24
26
  });
25
27
  return (0, _uikitUtils.truncatedBadgeCount)(unreadChannelCount, params === null || params === void 0 ? void 0 : params.maxCount);
26
28
  };
@@ -1 +1 @@
1
- {"version":3,"names":["HOOK_NAME","useTotalUnreadChannelCount","sdk","params","id","useUniqId","unreadChannelCount","setUnreadChannelCount","useState","useAsyncEffect","getTotalUnreadChannelCount","useUserEventHandler","onTotalUnreadMessageCountUpdated","truncatedBadgeCount","maxCount"],"sources":["useTotalUnreadChannelCount.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedBadgeCount, useAsyncEffect } from '@sendbird/uikit-utils';\nimport { useUniqId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Params = {\n maxCount?: number;\n};\nconst HOOK_NAME = 'useTotalUnreadChannelCount';\nexport const useTotalUnreadChannelCount = (sdk: SendbirdChatSDK, params?: Params) => {\n const id = useUniqId(HOOK_NAME);\n const [unreadChannelCount, setUnreadChannelCount] = useState(0);\n\n useAsyncEffect(async () => {\n setUnreadChannelCount(await sdk.getTotalUnreadChannelCount());\n }, [sdk]);\n\n useUserEventHandler(sdk, HOOK_NAME + id, {\n onTotalUnreadMessageCountUpdated: async () => setUnreadChannelCount(await sdk.getTotalUnreadChannelCount()),\n });\n\n return truncatedBadgeCount(unreadChannelCount, params?.maxCount);\n};\n"],"mappings":";;;;;;;AAAA;;AAGA;;AAGA;;AAKA,MAAMA,SAAS,GAAG,4BAAlB;;AACO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,MAAvB,KAA2C;EACnF,MAAMC,EAAE,GAAG,IAAAC,qBAAA,EAAUL,SAAV,CAAX;EACA,MAAM,CAACM,kBAAD,EAAqBC,qBAArB,IAA8C,IAAAC,eAAA,EAAS,CAAT,CAApD;EAEA,IAAAC,0BAAA,EAAe,YAAY;IACzBF,qBAAqB,CAAC,MAAML,GAAG,CAACQ,0BAAJ,EAAP,CAArB;EACD,CAFD,EAEG,CAACR,GAAD,CAFH;EAIA,IAAAS,wCAAA,EAAoBT,GAApB,EAAyBF,SAAS,GAAGI,EAArC,EAAyC;IACvCQ,gCAAgC,EAAE,YAAYL,qBAAqB,CAAC,MAAML,GAAG,CAACQ,0BAAJ,EAAP;EAD5B,CAAzC;EAIA,OAAO,IAAAG,+BAAA,EAAoBP,kBAApB,EAAwCH,MAAxC,aAAwCA,MAAxC,uBAAwCA,MAAM,CAAEW,QAAhD,CAAP;AACD,CAbM"}
1
+ {"version":3,"names":["HOOK_NAME","useTotalUnreadChannelCount","sdk","params","id","useUniqId","unreadChannelCount","setUnreadChannelCount","useState","useAsyncEffect","groupChannel","getTotalUnreadChannelCount","useUserEventHandler","onTotalUnreadMessageCountUpdated","truncatedBadgeCount","maxCount"],"sources":["useTotalUnreadChannelCount.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedBadgeCount, useAsyncEffect } from '@sendbird/uikit-utils';\nimport { useUniqId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Params = {\n maxCount?: number;\n};\nconst HOOK_NAME = 'useTotalUnreadChannelCount';\nexport const useTotalUnreadChannelCount = (sdk: SendbirdChatSDK, params?: Params) => {\n const id = useUniqId(HOOK_NAME);\n const [unreadChannelCount, setUnreadChannelCount] = useState(0);\n\n useAsyncEffect(async () => {\n setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());\n }, [sdk]);\n\n useUserEventHandler(sdk, HOOK_NAME + id, {\n onTotalUnreadMessageCountUpdated: async () => {\n setUnreadChannelCount(await sdk.groupChannel.getTotalUnreadChannelCount());\n },\n });\n\n return truncatedBadgeCount(unreadChannelCount, params?.maxCount);\n};\n"],"mappings":";;;;;;;AAAA;;AAGA;;AAGA;;AAKA,MAAMA,SAAS,GAAG,4BAAlB;;AACO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,MAAvB,KAA2C;EACnF,MAAMC,EAAE,GAAG,IAAAC,qBAAA,EAAUL,SAAV,CAAX;EACA,MAAM,CAACM,kBAAD,EAAqBC,qBAArB,IAA8C,IAAAC,eAAA,EAAS,CAAT,CAApD;EAEA,IAAAC,0BAAA,EAAe,YAAY;IACzBF,qBAAqB,CAAC,MAAML,GAAG,CAACQ,YAAJ,CAAiBC,0BAAjB,EAAP,CAArB;EACD,CAFD,EAEG,CAACT,GAAD,CAFH;EAIA,IAAAU,wCAAA,EAAoBV,GAApB,EAAyBF,SAAS,GAAGI,EAArC,EAAyC;IACvCS,gCAAgC,EAAE,YAAY;MAC5CN,qBAAqB,CAAC,MAAML,GAAG,CAACQ,YAAJ,CAAiBC,0BAAjB,EAAP,CAArB;IACD;EAHsC,CAAzC;EAMA,OAAO,IAAAG,+BAAA,EAAoBR,kBAApB,EAAwCH,MAAxC,aAAwCA,MAAxC,uBAAwCA,MAAM,CAAEY,QAAhD,CAAP;AACD,CAfM"}
@@ -7,33 +7,30 @@ exports.useTotalUnreadMessageCount = void 0;
7
7
 
8
8
  var _react = require("react");
9
9
 
10
+ var _groupChannel = require("@sendbird/chat/groupChannel");
11
+
10
12
  var _uikitUtils = require("@sendbird/uikit-utils");
11
13
 
12
14
  var _useUserEventHandler = require("../handler/useUserEventHandler");
13
15
 
14
16
  const HOOK_NAME = 'useTotalUnreadMessageCount';
15
17
 
16
- const useTotalUnreadMessageCount = (sdk, params) => {
18
+ const useTotalUnreadMessageCount = (sdk, options) => {
19
+ var _options$params, _options$params2;
20
+
17
21
  const id = (0, _uikitUtils.useUniqId)(HOOK_NAME);
18
22
  const [unreadMessageCount, setUnreadMessageCount] = (0, _react.useState)(0);
19
23
  (0, _uikitUtils.useAsyncEffect)(async () => {
20
- let param;
21
-
22
- if (params !== null && params !== void 0 && params.paramCreator) {
23
- param = params.paramCreator();
24
- } else {
25
- const params = new sdk.GroupChannelTotalUnreadMessageCountParams();
26
- params.superChannelFilter = 'all';
27
- param = params;
28
- }
29
-
30
- const unreadCount = await sdk.getTotalUnreadMessageCount(param);
24
+ const unreadCount = await sdk.groupChannel.getTotalUnreadMessageCount({
25
+ superChannelFilter: _groupChannel.SuperChannelFilter.ALL,
26
+ ...(options === null || options === void 0 ? void 0 : options.params)
27
+ });
31
28
  setUnreadMessageCount(unreadCount);
32
- }, [sdk, params === null || params === void 0 ? void 0 : params.paramCreator]);
29
+ }, [sdk, options === null || options === void 0 ? void 0 : (_options$params = options.params) === null || _options$params === void 0 ? void 0 : _options$params.superChannelFilter, options === null || options === void 0 ? void 0 : (_options$params2 = options.params) === null || _options$params2 === void 0 ? void 0 : _options$params2.channelCustomTypesFilter]);
33
30
  (0, _useUserEventHandler.useUserEventHandler)(sdk, `${HOOK_NAME}_${id}`, {
34
31
  onTotalUnreadMessageCountUpdated: totalCount => setUnreadMessageCount(totalCount)
35
- }, [sdk]);
36
- return (0, _uikitUtils.truncatedBadgeCount)(unreadMessageCount, params === null || params === void 0 ? void 0 : params.maxCount);
32
+ });
33
+ return (0, _uikitUtils.truncatedBadgeCount)(unreadMessageCount, options === null || options === void 0 ? void 0 : options.maxCount);
37
34
  };
38
35
 
39
36
  exports.useTotalUnreadMessageCount = useTotalUnreadMessageCount;
@@ -1 +1 @@
1
- {"version":3,"names":["HOOK_NAME","useTotalUnreadMessageCount","sdk","params","id","useUniqId","unreadMessageCount","setUnreadMessageCount","useState","useAsyncEffect","param","paramCreator","GroupChannelTotalUnreadMessageCountParams","superChannelFilter","unreadCount","getTotalUnreadMessageCount","useUserEventHandler","onTotalUnreadMessageCountUpdated","totalCount","truncatedBadgeCount","maxCount"],"sources":["useTotalUnreadMessageCount.ts"],"sourcesContent":["import { useState } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedBadgeCount, useAsyncEffect } from '@sendbird/uikit-utils';\nimport { useUniqId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Params = {\n paramCreator?: () => Sendbird.GroupChannelTotalUnreadMessageCountParams;\n maxCount?: number;\n};\n\nconst HOOK_NAME = 'useTotalUnreadMessageCount';\nexport const useTotalUnreadMessageCount = (sdk: SendbirdChatSDK, params?: Params) => {\n const id = useUniqId(HOOK_NAME);\n const [unreadMessageCount, setUnreadMessageCount] = useState(0);\n\n useAsyncEffect(async () => {\n let param;\n if (params?.paramCreator) {\n param = params.paramCreator();\n } else {\n const params = new sdk.GroupChannelTotalUnreadMessageCountParams();\n params.superChannelFilter = 'all';\n param = params;\n }\n const unreadCount = await sdk.getTotalUnreadMessageCount(param);\n setUnreadMessageCount(unreadCount);\n }, [sdk, params?.paramCreator]);\n\n useUserEventHandler(\n sdk,\n `${HOOK_NAME}_${id}`,\n {\n onTotalUnreadMessageCountUpdated: (totalCount: number) => setUnreadMessageCount(totalCount),\n },\n [sdk],\n );\n\n return truncatedBadgeCount(unreadMessageCount, params?.maxCount);\n};\n"],"mappings":";;;;;;;AAAA;;AAIA;;AAGA;;AAOA,MAAMA,SAAS,GAAG,4BAAlB;;AACO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,MAAvB,KAA2C;EACnF,MAAMC,EAAE,GAAG,IAAAC,qBAAA,EAAUL,SAAV,CAAX;EACA,MAAM,CAACM,kBAAD,EAAqBC,qBAArB,IAA8C,IAAAC,eAAA,EAAS,CAAT,CAApD;EAEA,IAAAC,0BAAA,EAAe,YAAY;IACzB,IAAIC,KAAJ;;IACA,IAAIP,MAAJ,aAAIA,MAAJ,eAAIA,MAAM,CAAEQ,YAAZ,EAA0B;MACxBD,KAAK,GAAGP,MAAM,CAACQ,YAAP,EAAR;IACD,CAFD,MAEO;MACL,MAAMR,MAAM,GAAG,IAAID,GAAG,CAACU,yCAAR,EAAf;MACAT,MAAM,CAACU,kBAAP,GAA4B,KAA5B;MACAH,KAAK,GAAGP,MAAR;IACD;;IACD,MAAMW,WAAW,GAAG,MAAMZ,GAAG,CAACa,0BAAJ,CAA+BL,KAA/B,CAA1B;IACAH,qBAAqB,CAACO,WAAD,CAArB;EACD,CAXD,EAWG,CAACZ,GAAD,EAAMC,MAAN,aAAMA,MAAN,uBAAMA,MAAM,CAAEQ,YAAd,CAXH;EAaA,IAAAK,wCAAA,EACEd,GADF,EAEG,GAAEF,SAAU,IAAGI,EAAG,EAFrB,EAGE;IACEa,gCAAgC,EAAGC,UAAD,IAAwBX,qBAAqB,CAACW,UAAD;EADjF,CAHF,EAME,CAAChB,GAAD,CANF;EASA,OAAO,IAAAiB,+BAAA,EAAoBb,kBAApB,EAAwCH,MAAxC,aAAwCA,MAAxC,uBAAwCA,MAAM,CAAEiB,QAAhD,CAAP;AACD,CA3BM"}
1
+ {"version":3,"names":["HOOK_NAME","useTotalUnreadMessageCount","sdk","options","id","useUniqId","unreadMessageCount","setUnreadMessageCount","useState","useAsyncEffect","unreadCount","groupChannel","getTotalUnreadMessageCount","superChannelFilter","SuperChannelFilter","ALL","params","channelCustomTypesFilter","useUserEventHandler","onTotalUnreadMessageCountUpdated","totalCount","truncatedBadgeCount","maxCount"],"sources":["useTotalUnreadMessageCount.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { SuperChannelFilter, TotalUnreadMessageCountParams } from '@sendbird/chat/groupChannel';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { truncatedBadgeCount, useAsyncEffect, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useUserEventHandler } from '../handler/useUserEventHandler';\n\ntype Options = {\n params?: TotalUnreadMessageCountParams;\n maxCount?: number;\n};\n\nconst HOOK_NAME = 'useTotalUnreadMessageCount';\nexport const useTotalUnreadMessageCount = (sdk: SendbirdChatSDK, options?: Options) => {\n const id = useUniqId(HOOK_NAME);\n const [unreadMessageCount, setUnreadMessageCount] = useState(0);\n\n useAsyncEffect(async () => {\n const unreadCount = await sdk.groupChannel.getTotalUnreadMessageCount({\n superChannelFilter: SuperChannelFilter.ALL,\n ...options?.params,\n });\n setUnreadMessageCount(unreadCount);\n }, [sdk, options?.params?.superChannelFilter, options?.params?.channelCustomTypesFilter]);\n\n useUserEventHandler(sdk, `${HOOK_NAME}_${id}`, {\n onTotalUnreadMessageCountUpdated: (totalCount: number) => setUnreadMessageCount(totalCount),\n });\n\n return truncatedBadgeCount(unreadMessageCount, options?.maxCount);\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAEA;;AAEA;;AAOA,MAAMA,SAAS,GAAG,4BAAlB;;AACO,MAAMC,0BAA0B,GAAG,CAACC,GAAD,EAAuBC,OAAvB,KAA6C;EAAA;;EACrF,MAAMC,EAAE,GAAG,IAAAC,qBAAA,EAAUL,SAAV,CAAX;EACA,MAAM,CAACM,kBAAD,EAAqBC,qBAArB,IAA8C,IAAAC,eAAA,EAAS,CAAT,CAApD;EAEA,IAAAC,0BAAA,EAAe,YAAY;IACzB,MAAMC,WAAW,GAAG,MAAMR,GAAG,CAACS,YAAJ,CAAiBC,0BAAjB,CAA4C;MACpEC,kBAAkB,EAAEC,gCAAA,CAAmBC,GAD6B;MAEpE,IAAGZ,OAAH,aAAGA,OAAH,uBAAGA,OAAO,CAAEa,MAAZ;IAFoE,CAA5C,CAA1B;IAIAT,qBAAqB,CAACG,WAAD,CAArB;EACD,CAND,EAMG,CAACR,GAAD,EAAMC,OAAN,aAAMA,OAAN,0CAAMA,OAAO,CAAEa,MAAf,oDAAM,gBAAiBH,kBAAvB,EAA2CV,OAA3C,aAA2CA,OAA3C,2CAA2CA,OAAO,CAAEa,MAApD,qDAA2C,iBAAiBC,wBAA5D,CANH;EAQA,IAAAC,wCAAA,EAAoBhB,GAApB,EAA0B,GAAEF,SAAU,IAAGI,EAAG,EAA5C,EAA+C;IAC7Ce,gCAAgC,EAAGC,UAAD,IAAwBb,qBAAqB,CAACa,UAAD;EADlC,CAA/C;EAIA,OAAO,IAAAC,+BAAA,EAAoBf,kBAApB,EAAwCH,OAAxC,aAAwCA,OAAxC,uBAAwCA,OAAO,CAAEmB,QAAjD,CAAP;AACD,CAjBM"}
@@ -7,6 +7,8 @@ exports.useChannelHandler = void 0;
7
7
 
8
8
  var _react = require("react");
9
9
 
10
+ var _groupChannel = require("@sendbird/chat/groupChannel");
11
+
10
12
  var _uikitUtils = require("@sendbird/uikit-utils");
11
13
 
12
14
  const useChannelHandler = (sdk, handlerId, hookHandler) => {
@@ -17,7 +19,7 @@ const useChannelHandler = (sdk, handlerId, hookHandler) => {
17
19
  (0, _react.useEffect)(() => {
18
20
  _uikitUtils.Logger.debug('[useChannelHandler] hook called by', handlerId);
19
21
 
20
- const handler = new sdk.ChannelHandler();
22
+ const handler = new _groupChannel.GroupChannelHandler();
21
23
  const handlerKeys = Object.keys(handler);
22
24
  handlerKeys.forEach(key => {
23
25
  handler[key] = function () {
@@ -31,8 +33,8 @@ const useChannelHandler = (sdk, handlerId, hookHandler) => {
31
33
  (_handlerRef$current$k = (_handlerRef$current = handlerRef.current)[key]) === null || _handlerRef$current$k === void 0 ? void 0 : _handlerRef$current$k.call(_handlerRef$current, ...args);
32
34
  };
33
35
  });
34
- sdk.addChannelHandler(handlerId, handler);
35
- return () => sdk.removeChannelHandler(handlerId);
36
+ sdk.groupChannel.addGroupChannelHandler(handlerId, handler);
37
+ return () => sdk.groupChannel.removeGroupChannelHandler(handlerId);
36
38
  }, [sdk, handlerId]);
37
39
  };
38
40
 
@@ -1 +1 @@
1
- {"version":3,"names":["useChannelHandler","sdk","handlerId","hookHandler","handlerRef","useRef","useLayoutEffect","current","useEffect","Logger","debug","handler","ChannelHandler","handlerKeys","Object","keys","forEach","key","args","addChannelHandler","removeChannelHandler"],"sources":["useChannelHandler.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport { Logger, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useChannelHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<Sendbird.ChannelHandler>,\n) => {\n const handlerRef = useRef(hookHandler);\n useLayoutEffect(() => {\n handlerRef.current = hookHandler;\n });\n\n useEffect(() => {\n Logger.debug('[useChannelHandler] hook called by', handlerId);\n\n const handler = new sdk.ChannelHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n handlerKeys.forEach((key) => {\n handler[key] = (...args: unknown[]) => {\n // @ts-ignore\n handlerRef.current[key]?.(...args);\n };\n });\n\n sdk.addChannelHandler(handlerId, handler);\n return () => sdk.removeChannelHandler(handlerId);\n }, [sdk, handlerId]);\n};\n"],"mappings":";;;;;;;AAAA;;AAGA;;AAEO,MAAMA,iBAAiB,GAAG,CAC/BC,GAD+B,EAE/BC,SAF+B,EAG/BC,WAH+B,KAI5B;EACH,MAAMC,UAAU,GAAG,IAAAC,aAAA,EAAOF,WAAP,CAAnB;EACA,IAAAG,sBAAA,EAAgB,MAAM;IACpBF,UAAU,CAACG,OAAX,GAAqBJ,WAArB;EACD,CAFD;EAIA,IAAAK,gBAAA,EAAU,MAAM;IACdC,kBAAA,CAAOC,KAAP,CAAa,oCAAb,EAAmDR,SAAnD;;IAEA,MAAMS,OAAO,GAAG,IAAIV,GAAG,CAACW,cAAR,EAAhB;IACA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYJ,OAAZ,CAApB;IACAE,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3BN,OAAO,CAACM,GAAD,CAAP,GAAe,YAAwB;QAAA;;QAAA,kCAApBC,IAAoB;UAApBA,IAAoB;QAAA;;QACrC;QACA,gDAAAd,UAAU,CAACG,OAAX,EAAmBU,GAAnB,2GAA0B,GAAGC,IAA7B;MACD,CAHD;IAID,CALD;IAOAjB,GAAG,CAACkB,iBAAJ,CAAsBjB,SAAtB,EAAiCS,OAAjC;IACA,OAAO,MAAMV,GAAG,CAACmB,oBAAJ,CAAyBlB,SAAzB,CAAb;EACD,CAdD,EAcG,CAACD,GAAD,EAAMC,SAAN,CAdH;AAeD,CAzBM"}
1
+ {"version":3,"names":["useChannelHandler","sdk","handlerId","hookHandler","handlerRef","useRef","useLayoutEffect","current","useEffect","Logger","debug","handler","GroupChannelHandler","handlerKeys","Object","keys","forEach","key","args","groupChannel","addGroupChannelHandler","removeGroupChannelHandler"],"sources":["useChannelHandler.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { GroupChannelHandler } from '@sendbird/chat/groupChannel';\nimport { Logger, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useChannelHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<GroupChannelHandler>,\n) => {\n const handlerRef = useRef(hookHandler);\n useLayoutEffect(() => {\n handlerRef.current = hookHandler;\n });\n\n useEffect(() => {\n Logger.debug('[useChannelHandler] hook called by', handlerId);\n\n const handler = new GroupChannelHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n handlerKeys.forEach((key) => {\n handler[key] = (...args: unknown[]) => {\n // @ts-ignore\n handlerRef.current[key]?.(...args);\n };\n });\n\n sdk.groupChannel.addGroupChannelHandler(handlerId, handler);\n return () => sdk.groupChannel.removeGroupChannelHandler(handlerId);\n }, [sdk, handlerId]);\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AAEO,MAAMA,iBAAiB,GAAG,CAC/BC,GAD+B,EAE/BC,SAF+B,EAG/BC,WAH+B,KAI5B;EACH,MAAMC,UAAU,GAAG,IAAAC,aAAA,EAAOF,WAAP,CAAnB;EACA,IAAAG,sBAAA,EAAgB,MAAM;IACpBF,UAAU,CAACG,OAAX,GAAqBJ,WAArB;EACD,CAFD;EAIA,IAAAK,gBAAA,EAAU,MAAM;IACdC,kBAAA,CAAOC,KAAP,CAAa,oCAAb,EAAmDR,SAAnD;;IAEA,MAAMS,OAAO,GAAG,IAAIC,iCAAJ,EAAhB;IACA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYJ,OAAZ,CAApB;IACAE,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3BN,OAAO,CAACM,GAAD,CAAP,GAAe,YAAwB;QAAA;;QAAA,kCAApBC,IAAoB;UAApBA,IAAoB;QAAA;;QACrC;QACA,gDAAAd,UAAU,CAACG,OAAX,EAAmBU,GAAnB,2GAA0B,GAAGC,IAA7B;MACD,CAHD;IAID,CALD;IAOAjB,GAAG,CAACkB,YAAJ,CAAiBC,sBAAjB,CAAwClB,SAAxC,EAAmDS,OAAnD;IACA,OAAO,MAAMV,GAAG,CAACkB,YAAJ,CAAiBE,yBAAjB,CAA2CnB,SAA3C,CAAb;EACD,CAdD,EAcG,CAACD,GAAD,EAAMC,SAAN,CAdH;AAeD,CAzBM"}
@@ -7,6 +7,8 @@ exports.useConnectionHandler = void 0;
7
7
 
8
8
  var _react = require("react");
9
9
 
10
+ var _chat = require("@sendbird/chat");
11
+
10
12
  var _uikitUtils = require("@sendbird/uikit-utils");
11
13
 
12
14
  const useConnectionHandler = function (sdk, handlerId, hookHandler) {
@@ -14,11 +16,11 @@ const useConnectionHandler = function (sdk, handlerId, hookHandler) {
14
16
  (0, _react.useEffect)(() => {
15
17
  _uikitUtils.Logger.info('[useConnectionHandler]', handlerId);
16
18
 
17
- const handler = new sdk.ConnectionHandler();
19
+ const handler = new _chat.ConnectionHandler();
18
20
  const handlerKeys = Object.keys(handler);
19
21
  handlerKeys.forEach(key => {
20
- const hookHandlerFn = hookHandler[key];
21
- if (hookHandlerFn) handler[key] = hookHandlerFn;
22
+ // @ts-ignore
23
+ if (hookHandler[key]) handler[key] = hookHandler[key];
22
24
  });
23
25
  sdk.addConnectionHandler(handlerId, handler);
24
26
  return () => sdk.removeConnectionHandler(handlerId);
@@ -1 +1 @@
1
- {"version":3,"names":["useConnectionHandler","sdk","handlerId","hookHandler","deps","useEffect","Logger","info","handler","ConnectionHandler","handlerKeys","Object","keys","forEach","key","hookHandlerFn","addConnectionHandler","removeConnectionHandler"],"sources":["useConnectionHandler.ts"],"sourcesContent":["import React, { useEffect } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport { Logger, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useConnectionHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<Sendbird.ConnectionHandler>,\n deps: React.DependencyList = [],\n) => {\n useEffect(() => {\n Logger.info('[useConnectionHandler]', handlerId);\n\n const handler = new sdk.ConnectionHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n handlerKeys.forEach((key) => {\n const hookHandlerFn = hookHandler[key];\n if (hookHandlerFn) handler[key] = hookHandlerFn;\n });\n\n sdk.addConnectionHandler(handlerId, handler);\n return () => sdk.removeConnectionHandler(handlerId);\n }, [sdk, handlerId, ...deps]);\n};\n"],"mappings":";;;;;;;AAAA;;AAGA;;AAEO,MAAMA,oBAAoB,GAAG,UAClCC,GADkC,EAElCC,SAFkC,EAGlCC,WAHkC,EAK/B;EAAA,IADHC,IACG,uEAD0B,EAC1B;EACH,IAAAC,gBAAA,EAAU,MAAM;IACdC,kBAAA,CAAOC,IAAP,CAAY,wBAAZ,EAAsCL,SAAtC;;IAEA,MAAMM,OAAO,GAAG,IAAIP,GAAG,CAACQ,iBAAR,EAAhB;IACA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYJ,OAAZ,CAApB;IACAE,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3B,MAAMC,aAAa,GAAGZ,WAAW,CAACW,GAAD,CAAjC;MACA,IAAIC,aAAJ,EAAmBP,OAAO,CAACM,GAAD,CAAP,GAAeC,aAAf;IACpB,CAHD;IAKAd,GAAG,CAACe,oBAAJ,CAAyBd,SAAzB,EAAoCM,OAApC;IACA,OAAO,MAAMP,GAAG,CAACgB,uBAAJ,CAA4Bf,SAA5B,CAAb;EACD,CAZD,EAYG,CAACD,GAAD,EAAMC,SAAN,EAAiB,GAAGE,IAApB,CAZH;AAaD,CAnBM"}
1
+ {"version":3,"names":["useConnectionHandler","sdk","handlerId","hookHandler","deps","useEffect","Logger","info","handler","ConnectionHandler","handlerKeys","Object","keys","forEach","key","addConnectionHandler","removeConnectionHandler"],"sources":["useConnectionHandler.ts"],"sourcesContent":["import React, { useEffect } from 'react';\n\nimport { ConnectionHandler } from '@sendbird/chat';\nimport { Logger, SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nexport const useConnectionHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<ConnectionHandler>,\n deps: React.DependencyList = [],\n) => {\n useEffect(() => {\n Logger.info('[useConnectionHandler]', handlerId);\n\n const handler = new ConnectionHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n handlerKeys.forEach((key) => {\n // @ts-ignore\n if (hookHandler[key]) handler[key] = hookHandler[key];\n });\n\n sdk.addConnectionHandler(handlerId, handler);\n return () => sdk.removeConnectionHandler(handlerId);\n }, [sdk, handlerId, ...deps]);\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AAEO,MAAMA,oBAAoB,GAAG,UAClCC,GADkC,EAElCC,SAFkC,EAGlCC,WAHkC,EAK/B;EAAA,IADHC,IACG,uEAD0B,EAC1B;EACH,IAAAC,gBAAA,EAAU,MAAM;IACdC,kBAAA,CAAOC,IAAP,CAAY,wBAAZ,EAAsCL,SAAtC;;IAEA,MAAMM,OAAO,GAAG,IAAIC,uBAAJ,EAAhB;IACA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYJ,OAAZ,CAApB;IACAE,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3B;MACA,IAAIX,WAAW,CAACW,GAAD,CAAf,EAAsBN,OAAO,CAACM,GAAD,CAAP,GAAeX,WAAW,CAACW,GAAD,CAA1B;IACvB,CAHD;IAKAb,GAAG,CAACc,oBAAJ,CAAyBb,SAAzB,EAAoCM,OAApC;IACA,OAAO,MAAMP,GAAG,CAACe,uBAAJ,CAA4Bd,SAA5B,CAAb;EACD,CAZD,EAYG,CAACD,GAAD,EAAMC,SAAN,EAAiB,GAAGE,IAApB,CAZH;AAaD,CAnBM"}
@@ -7,22 +7,35 @@ exports.useUserEventHandler = void 0;
7
7
 
8
8
  var _react = require("react");
9
9
 
10
+ var _chat = require("@sendbird/chat");
11
+
10
12
  var _uikitUtils = require("@sendbird/uikit-utils");
11
13
 
12
- const useUserEventHandler = function (sdk, handlerId, hookHandler) {
13
- let deps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
14
+ const useUserEventHandler = (sdk, handlerId, hookHandler) => {
15
+ const handlerRef = (0, _react.useRef)(hookHandler);
16
+ (0, _react.useLayoutEffect)(() => {
17
+ handlerRef.current = hookHandler;
18
+ });
14
19
  (0, _react.useEffect)(() => {
15
20
  _uikitUtils.Logger.debug('[useUserEventHandler] hook called by', handlerId);
16
21
 
17
- const handler = new sdk.UserEventHandler();
22
+ const handler = new _chat.UserEventHandler();
18
23
  const handlerKeys = Object.keys(handler);
19
24
  handlerKeys.forEach(key => {
20
- const hookHandlerFn = hookHandler[key];
21
- if (hookHandlerFn) handler[key] = hookHandlerFn;
25
+ handler[key] = function () {
26
+ var _handlerRef$current$k, _handlerRef$current;
27
+
28
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
29
+ args[_key] = arguments[_key];
30
+ }
31
+
32
+ // @ts-ignore
33
+ (_handlerRef$current$k = (_handlerRef$current = handlerRef.current)[key]) === null || _handlerRef$current$k === void 0 ? void 0 : _handlerRef$current$k.call(_handlerRef$current, ...args);
34
+ };
22
35
  });
23
36
  sdk.addUserEventHandler(handlerId, handler);
24
37
  return () => sdk.removeUserEventHandler(handlerId);
25
- }, [sdk, handlerId, ...deps]);
38
+ }, [sdk, handlerId]);
26
39
  };
27
40
 
28
41
  exports.useUserEventHandler = useUserEventHandler;
@@ -1 +1 @@
1
- {"version":3,"names":["useUserEventHandler","sdk","handlerId","hookHandler","deps","useEffect","Logger","debug","handler","UserEventHandler","handlerKeys","Object","keys","forEach","key","hookHandlerFn","addUserEventHandler","removeUserEventHandler"],"sources":["useUserEventHandler.ts"],"sourcesContent":["import React, { useEffect } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { Logger } from '@sendbird/uikit-utils';\n\nexport const useUserEventHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<Sendbird.UserEventHandler>,\n deps: React.DependencyList = [],\n) => {\n useEffect(() => {\n Logger.debug('[useUserEventHandler] hook called by', handlerId);\n\n const handler = new sdk.UserEventHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n handlerKeys.forEach((key) => {\n const hookHandlerFn = hookHandler[key];\n if (hookHandlerFn) handler[key] = hookHandlerFn as () => unknown;\n });\n\n sdk.addUserEventHandler(handlerId, handler);\n return () => sdk.removeUserEventHandler(handlerId);\n }, [sdk, handlerId, ...deps]);\n};\n"],"mappings":";;;;;;;AAAA;;AAIA;;AAEO,MAAMA,mBAAmB,GAAG,UACjCC,GADiC,EAEjCC,SAFiC,EAGjCC,WAHiC,EAK9B;EAAA,IADHC,IACG,uEAD0B,EAC1B;EACH,IAAAC,gBAAA,EAAU,MAAM;IACdC,kBAAA,CAAOC,KAAP,CAAa,sCAAb,EAAqDL,SAArD;;IAEA,MAAMM,OAAO,GAAG,IAAIP,GAAG,CAACQ,gBAAR,EAAhB;IACA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYJ,OAAZ,CAApB;IACAE,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3B,MAAMC,aAAa,GAAGZ,WAAW,CAACW,GAAD,CAAjC;MACA,IAAIC,aAAJ,EAAmBP,OAAO,CAACM,GAAD,CAAP,GAAeC,aAAf;IACpB,CAHD;IAKAd,GAAG,CAACe,mBAAJ,CAAwBd,SAAxB,EAAmCM,OAAnC;IACA,OAAO,MAAMP,GAAG,CAACgB,sBAAJ,CAA2Bf,SAA3B,CAAb;EACD,CAZD,EAYG,CAACD,GAAD,EAAMC,SAAN,EAAiB,GAAGE,IAApB,CAZH;AAaD,CAnBM"}
1
+ {"version":3,"names":["useUserEventHandler","sdk","handlerId","hookHandler","handlerRef","useRef","useLayoutEffect","current","useEffect","Logger","debug","handler","UserEventHandler","handlerKeys","Object","keys","forEach","key","args","addUserEventHandler","removeUserEventHandler"],"sources":["useUserEventHandler.ts"],"sourcesContent":["import { useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { UserEventHandler } from '@sendbird/chat';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { Logger } from '@sendbird/uikit-utils';\n\nexport const useUserEventHandler = (\n sdk: SendbirdChatSDK,\n handlerId: string,\n hookHandler: Partial<UserEventHandler>,\n) => {\n const handlerRef = useRef(hookHandler);\n useLayoutEffect(() => {\n handlerRef.current = hookHandler;\n });\n\n useEffect(() => {\n Logger.debug('[useUserEventHandler] hook called by', handlerId);\n\n const handler = new UserEventHandler();\n const handlerKeys = Object.keys(handler) as (keyof typeof handler)[];\n\n handlerKeys.forEach((key) => {\n handler[key] = (...args: unknown[]) => {\n // @ts-ignore\n handlerRef.current[key]?.(...args);\n };\n });\n\n sdk.addUserEventHandler(handlerId, handler);\n return () => sdk.removeUserEventHandler(handlerId);\n }, [sdk, handlerId]);\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAEA;;AAEO,MAAMA,mBAAmB,GAAG,CACjCC,GADiC,EAEjCC,SAFiC,EAGjCC,WAHiC,KAI9B;EACH,MAAMC,UAAU,GAAG,IAAAC,aAAA,EAAOF,WAAP,CAAnB;EACA,IAAAG,sBAAA,EAAgB,MAAM;IACpBF,UAAU,CAACG,OAAX,GAAqBJ,WAArB;EACD,CAFD;EAIA,IAAAK,gBAAA,EAAU,MAAM;IACdC,kBAAA,CAAOC,KAAP,CAAa,sCAAb,EAAqDR,SAArD;;IAEA,MAAMS,OAAO,GAAG,IAAIC,sBAAJ,EAAhB;IACA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYJ,OAAZ,CAApB;IAEAE,WAAW,CAACG,OAAZ,CAAqBC,GAAD,IAAS;MAC3BN,OAAO,CAACM,GAAD,CAAP,GAAe,YAAwB;QAAA;;QAAA,kCAApBC,IAAoB;UAApBA,IAAoB;QAAA;;QACrC;QACA,gDAAAd,UAAU,CAACG,OAAX,EAAmBU,GAAnB,2GAA0B,GAAGC,IAA7B;MACD,CAHD;IAID,CALD;IAOAjB,GAAG,CAACkB,mBAAJ,CAAwBjB,SAAxB,EAAmCS,OAAnC;IACA,OAAO,MAAMV,GAAG,CAACmB,sBAAJ,CAA2BlB,SAA3B,CAAb;EACD,CAfD,EAeG,CAACD,GAAD,EAAMC,SAAN,CAfH;AAgBD,CA1BM"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type Sendbird from 'sendbird';\n\nimport type {\n SendbirdChatSDK,\n SendbirdError,\n SendbirdFileMessage,\n SendbirdFileMessageParams,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n SendbirdMessage,\n SendbirdMessageCollection,\n SendbirdUserMessage,\n SendbirdUserMessageParams,\n} from '@sendbird/uikit-utils';\n\nexport interface CustomQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: boolean;\n}\nexport interface CustomBidirectionalQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: () => boolean;\n prev: () => Promise<Data[]>;\n hasPrev: () => boolean;\n}\n\n/**\n * @interface UseGroupChannelList\n * @description interface for group channel list hook\n * */\nexport interface UseGroupChannelList {\n (sdk: SendbirdChatSDK, userId?: string, options?: UseGroupChannelListOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get group channels state\n * */\n groupChannels: SendbirdGroupChannel[];\n\n /**\n * Fetch next channels to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n };\n}\nexport type UseGroupChannelListOptions = {\n queryCreator?: () => Sendbird.GroupChannelListQuery;\n collectionCreator?: () => SendbirdGroupChannelCollection;\n enableCollectionWithoutLocalCache?: boolean;\n};\n\n/**\n * @interface UseGroupChannelMessages\n * @description interface for group channel messages hook\n * - Receive new messages from other users -> append to state(nextMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> next() -> nextMessages append to state(messages)\n * */\nexport interface UseGroupChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdGroupChannel, userId?: string, options?: UseGroupChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Get messages, this state is for temporary data before render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * */\n nextMessages: SendbirdMessage[];\n\n /**\n * Get new messages from nextMessages\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessagesFromMembers: SendbirdMessage[];\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Activated channel\n * */\n activeChannel: SendbirdGroupChannel;\n };\n}\n\nexport type UseGroupChannelMessagesOptions = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => Sendbird.PreviousMessageListQuery;\n collectionCreator?: () => SendbirdMessageCollection;\n enableCollectionWithoutLocalCache?: boolean;\n onChannelDeleted?: () => void;\n};\n\n/**\n * @interface UseUserListReturn\n * @description interface for user list hook return value\n * */\nexport interface UseUserListReturn<User> {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get users state\n * */\n users: User[];\n\n /**\n * Fetch next users to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n}\n\nexport type UseUserListOptions<User> = {\n sortComparator?: (a: User, b: User) => number;\n queryCreator?: () => CustomQueryInterface<User>;\n};\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type {\n SendbirdChatSDK,\n SendbirdError,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n SendbirdGroupChannelListQuery,\n SendbirdMessage,\n SendbirdMessageCollection,\n SendbirdPreviousMessageListQuery,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n} from '@sendbird/uikit-utils';\n\nexport interface CustomQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: boolean;\n}\nexport interface CustomBidirectionalQueryInterface<Data> {\n isLoading: boolean;\n next: () => Promise<Data[]>;\n hasNext: () => boolean;\n prev: () => Promise<Data[]>;\n hasPrev: () => boolean;\n}\n\n/**\n * @interface UseGroupChannelList\n * @description interface for group channel list hook\n * */\nexport interface UseGroupChannelList {\n (sdk: SendbirdChatSDK, userId?: string, options?: UseGroupChannelListOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get group channels state\n * */\n groupChannels: SendbirdGroupChannel[];\n\n /**\n * Fetch next channels to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n };\n}\nexport type UseGroupChannelListOptions = {\n queryCreator?: () => SendbirdGroupChannelListQuery;\n collectionCreator?: () => SendbirdGroupChannelCollection;\n enableCollectionWithoutLocalCache?: boolean;\n};\n\n/**\n * @interface UseGroupChannelMessages\n * @description interface for group channel messages hook\n * - Receive new messages from other users -> append to state(nextMessages)\n * - onTopReached -> prev() -> fetch prev messages and append to state(messages)\n * - onBottomReached -> next() -> nextMessages append to state(messages)\n * */\nexport interface UseGroupChannelMessages {\n (sdk: SendbirdChatSDK, channel: SendbirdGroupChannel, userId?: string, options?: UseGroupChannelMessagesOptions): {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get messages, this state is for render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * @return {SendbirdMessage[]}\n * */\n messages: SendbirdMessage[];\n\n /**\n * Fetch prev messages to state\n * @return {Promise<void>}\n * */\n prev: () => Promise<void>;\n\n /**\n * Get messages, this state is for temporary data before render\n * For example, if a user receives a new messages while searching for an old message\n * for this case, new messages will be included here.\n * */\n nextMessages: SendbirdMessage[];\n\n /**\n * Get new messages from nextMessages\n * A new message means a message that meets the below conditions\n * - Not admin message\n * - Not updated message\n * - Not current user's message\n * */\n newMessagesFromMembers: SendbirdMessage[];\n\n /**\n * Fetch next messages to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n\n /**\n * Send file message\n * @param params file message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendFileMessage: (\n params: SendbirdFileMessageCreateParams,\n onPending?: (message: SendbirdFileMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdFileMessage>;\n\n /**\n * Send user message\n * @param params user message params\n * @param callback sent message callback\n * @return pending message\n * */\n sendUserMessage: (\n params: SendbirdUserMessageCreateParams,\n onPending?: (message: SendbirdUserMessage, error?: SendbirdError) => void,\n ) => Promise<SendbirdUserMessage>;\n\n /**\n * Update file message\n * @param messageId\n * @param params file message params\n * @return updated message\n * */\n updateFileMessage: (messageId: number, params: SendbirdFileMessageCreateParams) => Promise<SendbirdFileMessage>;\n\n /**\n * Update user message\n * @param messageId\n * @param params user message params\n * @return updated message\n * */\n updateUserMessage: (messageId: number, params: SendbirdUserMessageCreateParams) => Promise<SendbirdUserMessage>;\n\n /**\n * Resend failed message\n * @param failedMessage failed message to resend\n * @return {Promise<void>}\n * */\n resendMessage: (failedMessage: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Delete message\n * @param message sent or failed message\n * @return {Promise<void>}\n * */\n deleteMessage: (message: SendbirdFileMessage | SendbirdUserMessage) => Promise<void>;\n\n /**\n * Activated channel\n * */\n activeChannel: SendbirdGroupChannel;\n };\n}\n\nexport type UseGroupChannelMessagesOptions = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n queryCreator?: () => SendbirdPreviousMessageListQuery;\n collectionCreator?: () => SendbirdMessageCollection;\n enableCollectionWithoutLocalCache?: boolean;\n onChannelDeleted?: () => void;\n};\n\n/**\n * @interface UseUserListReturn\n * @description interface for user list hook return value\n * */\nexport interface UseUserListReturn<User> {\n /**\n * Loading state, only available on first render\n * */\n loading: boolean;\n\n /**\n * Refreshing state, status is changes when the refresh is called.\n * */\n refreshing: boolean;\n\n /**\n * Error state\n * */\n error: unknown | null;\n\n /**\n * Refresh, clear and reload messages from latest\n * @return {Promise<void>}\n * */\n refresh: () => Promise<void>;\n\n /**\n * Get users state\n * */\n users: User[];\n\n /**\n * Fetch next users to state\n * @return {Promise<void>}\n * */\n next: () => Promise<void>;\n}\n\nexport type UseUserListOptions<User> = {\n sortComparator?: (a: User, b: User) => number;\n queryCreator?: () => CustomQueryInterface<User>;\n};\n"],"mappings":""}
@@ -2,7 +2,7 @@ import { useEffect, useState } from 'react';
2
2
  export const useActiveGroupChannel = (sdk, staleChannel) => {
3
3
  const [activeChannel, setActiveChannel] = useState(() => staleChannel);
4
4
  useEffect(() => {
5
- sdk.GroupChannel.getChannel(staleChannel.url).then(setActiveChannel);
5
+ sdk.groupChannel.getChannel(staleChannel.url).then(setActiveChannel);
6
6
  }, [staleChannel.url]);
7
7
  return {
8
8
  activeChannel,
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useState","useActiveGroupChannel","sdk","staleChannel","activeChannel","setActiveChannel","GroupChannel","getChannel","url","then"],"sources":["useActiveGroupChannel.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { SendbirdChatSDK, SendbirdGroupChannel } from '@sendbird/uikit-utils';\n\nexport const useActiveGroupChannel = (sdk: SendbirdChatSDK, staleChannel: SendbirdGroupChannel) => {\n const [activeChannel, setActiveChannel] = useState(() => staleChannel);\n\n useEffect(() => {\n sdk.GroupChannel.getChannel(staleChannel.url).then(setActiveChannel);\n }, [staleChannel.url]);\n\n return { activeChannel, setActiveChannel };\n};\n"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,QAApB,QAAoC,OAApC;AAIA,OAAO,MAAMC,qBAAqB,GAAG,CAACC,GAAD,EAAuBC,YAAvB,KAA8D;EACjG,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoCL,QAAQ,CAAC,MAAMG,YAAP,CAAlD;EAEAJ,SAAS,CAAC,MAAM;IACdG,GAAG,CAACI,YAAJ,CAAiBC,UAAjB,CAA4BJ,YAAY,CAACK,GAAzC,EAA8CC,IAA9C,CAAmDJ,gBAAnD;EACD,CAFQ,EAEN,CAACF,YAAY,CAACK,GAAd,CAFM,CAAT;EAIA,OAAO;IAAEJ,aAAF;IAAiBC;EAAjB,CAAP;AACD,CARM"}
1
+ {"version":3,"names":["useEffect","useState","useActiveGroupChannel","sdk","staleChannel","activeChannel","setActiveChannel","groupChannel","getChannel","url","then"],"sources":["useActiveGroupChannel.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { SendbirdChatSDK, SendbirdGroupChannel } from '@sendbird/uikit-utils';\n\nexport const useActiveGroupChannel = (sdk: SendbirdChatSDK, staleChannel: SendbirdGroupChannel) => {\n const [activeChannel, setActiveChannel] = useState(() => staleChannel);\n\n useEffect(() => {\n sdk.groupChannel.getChannel(staleChannel.url).then(setActiveChannel);\n }, [staleChannel.url]);\n\n return { activeChannel, setActiveChannel };\n};\n"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,QAApB,QAAoC,OAApC;AAIA,OAAO,MAAMC,qBAAqB,GAAG,CAACC,GAAD,EAAuBC,YAAvB,KAA8D;EACjG,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoCL,QAAQ,CAAC,MAAMG,YAAP,CAAlD;EAEAJ,SAAS,CAAC,MAAM;IACdG,GAAG,CAACI,YAAJ,CAAiBC,UAAjB,CAA4BJ,YAAY,CAACK,GAAzC,EAA8CC,IAA9C,CAAmDJ,gBAAnD;EACD,CAFQ,EAEN,CAACF,YAAY,CAACK,GAAd,CAFM,CAAT;EAIA,OAAO;IAAEJ,aAAF;IAAiBC;EAAjB,CAAP;AACD,CARM"}
@@ -1,7 +1,9 @@
1
+ import { Logger } from '@sendbird/uikit-utils';
1
2
  import { useGroupChannelListWithCollection } from './useGroupChannelListWithCollection';
2
3
  import { useGroupChannelListWithQuery } from './useGroupChannelListWithQuery';
3
4
  export const useGroupChannelList = (sdk, userId, options) => {
4
5
  if (sdk.isCacheEnabled || options !== null && options !== void 0 && options.enableCollectionWithoutLocalCache) {
6
+ if (options !== null && options !== void 0 && options.queryCreator) Logger.warn('`queryCreator` is ignored, please use `collectionCreator` instead.');
5
7
  return useGroupChannelListWithCollection(sdk, userId, options);
6
8
  } else {
7
9
  return useGroupChannelListWithQuery(sdk, userId, options);
@@ -1 +1 @@
1
- {"version":3,"names":["useGroupChannelListWithCollection","useGroupChannelListWithQuery","useGroupChannelList","sdk","userId","options","isCacheEnabled","enableCollectionWithoutLocalCache"],"sources":["index.ts"],"sourcesContent":["import type { UseGroupChannelList } from '../../types';\nimport { useGroupChannelListWithCollection } from './useGroupChannelListWithCollection';\nimport { useGroupChannelListWithQuery } from './useGroupChannelListWithQuery';\n\nexport const useGroupChannelList: UseGroupChannelList = (sdk, userId, options) => {\n if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {\n return useGroupChannelListWithCollection(sdk, userId, options);\n } else {\n return useGroupChannelListWithQuery(sdk, userId, options);\n }\n};\n"],"mappings":"AACA,SAASA,iCAAT,QAAkD,qCAAlD;AACA,SAASC,4BAAT,QAA6C,gCAA7C;AAEA,OAAO,MAAMC,mBAAwC,GAAG,CAACC,GAAD,EAAMC,MAAN,EAAcC,OAAd,KAA0B;EAChF,IAAIF,GAAG,CAACG,cAAJ,IAAsBD,OAAtB,aAAsBA,OAAtB,eAAsBA,OAAO,CAAEE,iCAAnC,EAAsE;IACpE,OAAOP,iCAAiC,CAACG,GAAD,EAAMC,MAAN,EAAcC,OAAd,CAAxC;EACD,CAFD,MAEO;IACL,OAAOJ,4BAA4B,CAACE,GAAD,EAAMC,MAAN,EAAcC,OAAd,CAAnC;EACD;AACF,CANM"}
1
+ {"version":3,"names":["Logger","useGroupChannelListWithCollection","useGroupChannelListWithQuery","useGroupChannelList","sdk","userId","options","isCacheEnabled","enableCollectionWithoutLocalCache","queryCreator","warn"],"sources":["index.ts"],"sourcesContent":["import { Logger } from '@sendbird/uikit-utils';\n\nimport type { UseGroupChannelList } from '../../types';\nimport { useGroupChannelListWithCollection } from './useGroupChannelListWithCollection';\nimport { useGroupChannelListWithQuery } from './useGroupChannelListWithQuery';\n\nexport const useGroupChannelList: UseGroupChannelList = (sdk, userId, options) => {\n if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {\n if (options?.queryCreator) Logger.warn('`queryCreator` is ignored, please use `collectionCreator` instead.');\n return useGroupChannelListWithCollection(sdk, userId, options);\n } else {\n return useGroupChannelListWithQuery(sdk, userId, options);\n }\n};\n"],"mappings":"AAAA,SAASA,MAAT,QAAuB,uBAAvB;AAGA,SAASC,iCAAT,QAAkD,qCAAlD;AACA,SAASC,4BAAT,QAA6C,gCAA7C;AAEA,OAAO,MAAMC,mBAAwC,GAAG,CAACC,GAAD,EAAMC,MAAN,EAAcC,OAAd,KAA0B;EAChF,IAAIF,GAAG,CAACG,cAAJ,IAAsBD,OAAtB,aAAsBA,OAAtB,eAAsBA,OAAO,CAAEE,iCAAnC,EAAsE;IACpE,IAAIF,OAAJ,aAAIA,OAAJ,eAAIA,OAAO,CAAEG,YAAb,EAA2BT,MAAM,CAACU,IAAP,CAAY,oEAAZ;IAC3B,OAAOT,iCAAiC,CAACG,GAAD,EAAMC,MAAN,EAAcC,OAAd,CAAxC;EACD,CAHD,MAGO;IACL,OAAOJ,4BAA4B,CAACE,GAAD,EAAMC,MAAN,EAAcC,OAAd,CAAnC;EACD;AACF,CAPM"}
@@ -1,5 +1,6 @@
1
1
  import { useEffect, useRef } from 'react';
2
- import { useAsyncEffect, useFreshCallback, useUniqId } from '@sendbird/uikit-utils';
2
+ import { GroupChannelFilter, GroupChannelListOrder } from '@sendbird/chat/groupChannel';
3
+ import { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback, useUniqId } from '@sendbird/uikit-utils';
3
4
  import { useAppFeatures } from '../../common/useAppFeatures';
4
5
  import { useChannelHandler } from '../../handler/useChannelHandler';
5
6
  import { useGroupChannelListReducer } from './reducer';
@@ -8,15 +9,13 @@ const HOOK_NAME = 'useGroupChannelListWithCollection';
8
9
  const createGroupChannelListCollection = (sdk, collectionCreator) => {
9
10
  const passedCollection = collectionCreator === null || collectionCreator === void 0 ? void 0 : collectionCreator();
10
11
  if (passedCollection) return passedCollection;
11
- const defaultOptions = {
12
- includeEmpty: false,
13
- limit: 5,
14
- order: sdk.GroupChannelCollection.GroupChannelOrder.LATEST_LAST_MESSAGE
15
- };
16
- const collectionBuilder = sdk.GroupChannel.createGroupChannelCollection();
17
- const groupChannelFilter = new sdk.GroupChannelFilter();
18
- groupChannelFilter.includeEmpty = defaultOptions.includeEmpty;
19
- return collectionBuilder.setFilter(groupChannelFilter).setLimit(defaultOptions.limit).setOrder(defaultOptions.order).build();
12
+ const filter = new GroupChannelFilter();
13
+ filter.includeEmpty = false;
14
+ return sdk.groupChannel.createGroupChannelCollection({
15
+ filter,
16
+ limit: 20,
17
+ order: GroupChannelListOrder.LATEST_LAST_MESSAGE
18
+ });
20
19
  };
21
20
 
22
21
  export const useGroupChannelListWithCollection = (sdk, userId, options) => {
@@ -38,9 +37,12 @@ export const useGroupChannelListWithCollection = (sdk, userId, options) => {
38
37
  const updateChannelsAndMarkAsDelivered = markAsDelivered => {
39
38
  var _collectionRef$curren;
40
39
 
41
- const channels = ((_collectionRef$curren = collectionRef.current) === null || _collectionRef$curren === void 0 ? void 0 : _collectionRef$curren.channelList) ?? [];
40
+ const channels = ((_collectionRef$curren = collectionRef.current) === null || _collectionRef$curren === void 0 ? void 0 : _collectionRef$curren.channels) ?? [];
42
41
  setChannels(channels, true);
43
- if (markAsDelivered && deliveryReceiptEnabled) channels.forEach(channel => sdk.markAsDelivered(channel.url));
42
+
43
+ if (markAsDelivered && deliveryReceiptEnabled) {
44
+ channels.forEach(channel => confirmAndMarkAsDelivered(sdk, channel));
45
+ }
44
46
  };
45
47
 
46
48
  const init = useFreshCallback(async uid => {
@@ -49,31 +51,27 @@ export const useGroupChannelListWithCollection = (sdk, userId, options) => {
49
51
  if (collectionRef.current) (_collectionRef$curren2 = collectionRef.current) === null || _collectionRef$curren2 === void 0 ? void 0 : _collectionRef$curren2.dispose();
50
52
 
51
53
  if (uid) {
52
- var _collectionRef$curren3, _collectionRef$curren5;
54
+ var _collectionRef$curren3, _collectionRef$curren4;
53
55
 
54
56
  collectionRef.current = createGroupChannelListCollection(sdk, options === null || options === void 0 ? void 0 : options.collectionCreator);
55
-
56
- if ((_collectionRef$curren3 = collectionRef.current) !== null && _collectionRef$curren3 !== void 0 && _collectionRef$curren3.hasMore) {
57
- var _collectionRef$curren4;
58
-
59
- await ((_collectionRef$curren4 = collectionRef.current) === null || _collectionRef$curren4 === void 0 ? void 0 : _collectionRef$curren4.loadMore());
60
- updateChannelsAndMarkAsDelivered(true);
61
- }
62
-
63
- (_collectionRef$curren5 = collectionRef.current) === null || _collectionRef$curren5 === void 0 ? void 0 : _collectionRef$curren5.setGroupChannelCollectionHandler({
64
- onChannelsAdded() {
57
+ (_collectionRef$curren3 = collectionRef.current) === null || _collectionRef$curren3 === void 0 ? void 0 : _collectionRef$curren3.setGroupChannelCollectionHandler({
58
+ onChannelsAdded: () => {
65
59
  updateChannelsAndMarkAsDelivered(true);
66
60
  },
67
-
68
- onChannelsUpdated() {
61
+ onChannelsUpdated: () => {
69
62
  updateChannelsAndMarkAsDelivered(true);
70
63
  },
71
-
72
- onChannelsDeleted() {
64
+ onChannelsDeleted: () => {
73
65
  updateChannelsAndMarkAsDelivered(false);
74
66
  }
75
-
76
67
  });
68
+
69
+ if ((_collectionRef$curren4 = collectionRef.current) !== null && _collectionRef$curren4 !== void 0 && _collectionRef$curren4.hasMore) {
70
+ var _collectionRef$curren5;
71
+
72
+ await ((_collectionRef$curren5 = collectionRef.current) === null || _collectionRef$curren5 === void 0 ? void 0 : _collectionRef$curren5.loadMore());
73
+ updateChannelsAndMarkAsDelivered(true);
74
+ }
77
75
  }
78
76
  });
79
77
  useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","useAsyncEffect","useFreshCallback","useUniqId","useAppFeatures","useChannelHandler","useGroupChannelListReducer","HOOK_NAME","createGroupChannelListCollection","sdk","collectionCreator","passedCollection","defaultOptions","includeEmpty","limit","order","GroupChannelCollection","GroupChannelOrder","LATEST_LAST_MESSAGE","collectionBuilder","GroupChannel","createGroupChannelCollection","groupChannelFilter","GroupChannelFilter","setFilter","setLimit","setOrder","build","useGroupChannelListWithCollection","userId","options","id","deliveryReceiptEnabled","collectionRef","loading","groupChannels","refreshing","setChannels","deleteChannels","updateRefreshing","updateLoading","updateChannelsAndMarkAsDelivered","markAsDelivered","channels","current","channelList","forEach","channel","url","init","uid","dispose","hasMore","loadMore","setGroupChannelCollectionHandler","onChannelsAdded","onChannelsUpdated","onChannelsDeleted","onUserBanned","user","isMe","refresh","next"],"sources":["useGroupChannelListWithCollection.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport type { SendbirdChatSDK, SendbirdGroupChannelCollection } from '@sendbird/uikit-utils';\nimport { useAsyncEffect, useFreshCallback, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelList, UseGroupChannelListOptions } from '../../types';\nimport { useGroupChannelListReducer } from './reducer';\n\nconst HOOK_NAME = 'useGroupChannelListWithCollection';\n\nconst createGroupChannelListCollection = (\n sdk: SendbirdChatSDK,\n collectionCreator: UseGroupChannelListOptions['collectionCreator'],\n) => {\n const passedCollection = collectionCreator?.();\n if (passedCollection) return passedCollection;\n\n const defaultOptions = {\n includeEmpty: false,\n limit: 5,\n order: sdk.GroupChannelCollection.GroupChannelOrder.LATEST_LAST_MESSAGE,\n };\n const collectionBuilder = sdk.GroupChannel.createGroupChannelCollection();\n const groupChannelFilter = new sdk.GroupChannelFilter();\n groupChannelFilter.includeEmpty = defaultOptions.includeEmpty;\n\n return collectionBuilder\n .setFilter(groupChannelFilter)\n .setLimit(defaultOptions.limit)\n .setOrder(defaultOptions.order)\n .build();\n};\n\nexport const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, userId, options) => {\n const id = useUniqId(HOOK_NAME);\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const collectionRef = useRef<SendbirdGroupChannelCollection>();\n\n const { loading, groupChannels, refreshing, setChannels, deleteChannels, updateRefreshing, updateLoading } =\n useGroupChannelListReducer();\n\n const updateChannelsAndMarkAsDelivered = (markAsDelivered: boolean) => {\n const channels = collectionRef.current?.channelList ?? [];\n setChannels(channels, true);\n if (markAsDelivered && deliveryReceiptEnabled) channels.forEach((channel) => sdk.markAsDelivered(channel.url));\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createGroupChannelListCollection(sdk, options?.collectionCreator);\n\n if (collectionRef.current?.hasMore) {\n await collectionRef.current?.loadMore();\n updateChannelsAndMarkAsDelivered(true);\n }\n\n collectionRef.current?.setGroupChannelCollectionHandler({\n onChannelsAdded() {\n updateChannelsAndMarkAsDelivered(true);\n },\n onChannelsUpdated() {\n updateChannelsAndMarkAsDelivered(true);\n },\n onChannelsDeleted() {\n updateChannelsAndMarkAsDelivered(false);\n },\n });\n }\n });\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [init, userId]);\n\n useChannelHandler(sdk, `${HOOK_NAME}_${id}`, {\n onUserBanned: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannelsAndMarkAsDelivered(false);\n },\n });\n\n const refresh = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const next = useFreshCallback(async () => {\n if (collectionRef.current?.hasMore) {\n await collectionRef.current?.loadMore();\n updateChannelsAndMarkAsDelivered(true);\n }\n });\n\n return {\n loading,\n groupChannels,\n refresh,\n refreshing,\n next,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["useEffect","useRef","GroupChannelFilter","GroupChannelListOrder","confirmAndMarkAsDelivered","useAsyncEffect","useFreshCallback","useUniqId","useAppFeatures","useChannelHandler","useGroupChannelListReducer","HOOK_NAME","createGroupChannelListCollection","sdk","collectionCreator","passedCollection","filter","includeEmpty","groupChannel","createGroupChannelCollection","limit","order","LATEST_LAST_MESSAGE","useGroupChannelListWithCollection","userId","options","id","deliveryReceiptEnabled","collectionRef","loading","groupChannels","refreshing","setChannels","deleteChannels","updateRefreshing","updateLoading","updateChannelsAndMarkAsDelivered","markAsDelivered","channels","current","forEach","channel","init","uid","dispose","setGroupChannelCollectionHandler","onChannelsAdded","onChannelsUpdated","onChannelsDeleted","hasMore","loadMore","onUserBanned","user","isMe","url","refresh","next"],"sources":["useGroupChannelListWithCollection.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { GroupChannelFilter, GroupChannelListOrder } from '@sendbird/chat/groupChannel';\nimport type { SendbirdChatSDK, SendbirdGroupChannelCollection } from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelList, UseGroupChannelListOptions } from '../../types';\nimport { useGroupChannelListReducer } from './reducer';\n\nconst HOOK_NAME = 'useGroupChannelListWithCollection';\n\nconst createGroupChannelListCollection = (\n sdk: SendbirdChatSDK,\n collectionCreator: UseGroupChannelListOptions['collectionCreator'],\n) => {\n const passedCollection = collectionCreator?.();\n if (passedCollection) return passedCollection;\n\n const filter = new GroupChannelFilter();\n filter.includeEmpty = false;\n\n return sdk.groupChannel.createGroupChannelCollection({\n filter,\n limit: 20,\n order: GroupChannelListOrder.LATEST_LAST_MESSAGE,\n });\n};\n\nexport const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, userId, options) => {\n const id = useUniqId(HOOK_NAME);\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const collectionRef = useRef<SendbirdGroupChannelCollection>();\n\n const { loading, groupChannels, refreshing, setChannels, deleteChannels, updateRefreshing, updateLoading } =\n useGroupChannelListReducer();\n\n const updateChannelsAndMarkAsDelivered = (markAsDelivered: boolean) => {\n const channels = collectionRef.current?.channels ?? [];\n setChannels(channels, true);\n if (markAsDelivered && deliveryReceiptEnabled) {\n channels.forEach((channel) => confirmAndMarkAsDelivered(sdk, channel));\n }\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createGroupChannelListCollection(sdk, options?.collectionCreator);\n\n collectionRef.current?.setGroupChannelCollectionHandler({\n onChannelsAdded: () => {\n updateChannelsAndMarkAsDelivered(true);\n },\n onChannelsUpdated: () => {\n updateChannelsAndMarkAsDelivered(true);\n },\n onChannelsDeleted: () => {\n updateChannelsAndMarkAsDelivered(false);\n },\n });\n\n if (collectionRef.current?.hasMore) {\n await collectionRef.current?.loadMore();\n updateChannelsAndMarkAsDelivered(true);\n }\n }\n });\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [init, userId]);\n\n useChannelHandler(sdk, `${HOOK_NAME}_${id}`, {\n onUserBanned: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannelsAndMarkAsDelivered(false);\n },\n });\n\n const refresh = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const next = useFreshCallback(async () => {\n if (collectionRef.current?.hasMore) {\n await collectionRef.current?.loadMore();\n updateChannelsAndMarkAsDelivered(true);\n }\n });\n\n return {\n loading,\n groupChannels,\n refresh,\n refreshing,\n next,\n };\n};\n"],"mappings":"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"}