@sendbird/uikit-chat-hooks 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/package.json +4 -4
  2. package/lib/commonjs/channel/useActiveGroupChannel.js +0 -22
  3. package/lib/commonjs/channel/useActiveGroupChannel.js.map +0 -1
  4. package/lib/commonjs/channel/useGroupChannelList.js +0 -21
  5. package/lib/commonjs/channel/useGroupChannelList.js.map +0 -1
  6. package/lib/commonjs/channel/useGroupChannelListWithCollection.js +0 -148
  7. package/lib/commonjs/channel/useGroupChannelListWithCollection.js.map +0 -1
  8. package/lib/commonjs/channel/useGroupChannelListWithQuery.js +0 -130
  9. package/lib/commonjs/channel/useGroupChannelListWithQuery.js.map +0 -1
  10. package/lib/commonjs/channel/useGroupChannelMessages/index.js +0 -21
  11. package/lib/commonjs/channel/useGroupChannelMessages/index.js.map +0 -1
  12. package/lib/commonjs/channel/useGroupChannelMessages/reducer.js +0 -158
  13. package/lib/commonjs/channel/useGroupChannelMessages/reducer.js.map +0 -1
  14. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +0 -305
  15. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +0 -1
  16. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +0 -249
  17. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +0 -1
  18. package/lib/commonjs/common/useAppFeatures.js +0 -44
  19. package/lib/commonjs/common/useAppFeatures.js.map +0 -1
  20. package/lib/commonjs/common/usePushTrigger.js +0 -33
  21. package/lib/commonjs/common/usePushTrigger.js.map +0 -1
  22. package/lib/commonjs/common/useTotalUnreadChannelCount.js +0 -29
  23. package/lib/commonjs/common/useTotalUnreadChannelCount.js.map +0 -1
  24. package/lib/commonjs/common/useTotalUnreadMessageCount.js +0 -40
  25. package/lib/commonjs/common/useTotalUnreadMessageCount.js.map +0 -1
  26. package/lib/commonjs/common/useUserList.js +0 -110
  27. package/lib/commonjs/common/useUserList.js.map +0 -1
  28. package/lib/commonjs/handler/useChannelHandler.js +0 -29
  29. package/lib/commonjs/handler/useChannelHandler.js.map +0 -1
  30. package/lib/commonjs/handler/useConnectionHandler.js +0 -29
  31. package/lib/commonjs/handler/useConnectionHandler.js.map +0 -1
  32. package/lib/commonjs/handler/useUserEventHandler.js +0 -29
  33. package/lib/commonjs/handler/useUserEventHandler.js.map +0 -1
  34. package/lib/commonjs/index.js +0 -102
  35. package/lib/commonjs/index.js.map +0 -1
  36. package/lib/commonjs/model/CustomQuery.js +0 -28
  37. package/lib/commonjs/model/CustomQuery.js.map +0 -1
  38. package/lib/commonjs/types.js +0 -6
  39. package/lib/commonjs/types.js.map +0 -1
  40. package/lib/module/channel/useActiveGroupChannel.js +0 -12
  41. package/lib/module/channel/useActiveGroupChannel.js.map +0 -1
  42. package/lib/module/channel/useGroupChannelList.js +0 -10
  43. package/lib/module/channel/useGroupChannelList.js.map +0 -1
  44. package/lib/module/channel/useGroupChannelListWithCollection.js +0 -135
  45. package/lib/module/channel/useGroupChannelListWithCollection.js.map +0 -1
  46. package/lib/module/channel/useGroupChannelListWithQuery.js +0 -117
  47. package/lib/module/channel/useGroupChannelListWithQuery.js.map +0 -1
  48. package/lib/module/channel/useGroupChannelMessages/index.js +0 -10
  49. package/lib/module/channel/useGroupChannelMessages/index.js.map +0 -1
  50. package/lib/module/channel/useGroupChannelMessages/reducer.js +0 -148
  51. package/lib/module/channel/useGroupChannelMessages/reducer.js.map +0 -1
  52. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +0 -289
  53. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +0 -1
  54. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +0 -234
  55. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +0 -1
  56. package/lib/module/common/useAppFeatures.js +0 -33
  57. package/lib/module/common/useAppFeatures.js.map +0 -1
  58. package/lib/module/common/usePushTrigger.js +0 -22
  59. package/lib/module/common/usePushTrigger.js.map +0 -1
  60. package/lib/module/common/useTotalUnreadChannelCount.js +0 -17
  61. package/lib/module/common/useTotalUnreadChannelCount.js.map +0 -1
  62. package/lib/module/common/useTotalUnreadMessageCount.js +0 -28
  63. package/lib/module/common/useTotalUnreadMessageCount.js.map +0 -1
  64. package/lib/module/common/useUserList.js +0 -100
  65. package/lib/module/common/useUserList.js.map +0 -1
  66. package/lib/module/handler/useChannelHandler.js +0 -17
  67. package/lib/module/handler/useChannelHandler.js.map +0 -1
  68. package/lib/module/handler/useConnectionHandler.js +0 -17
  69. package/lib/module/handler/useConnectionHandler.js.map +0 -1
  70. package/lib/module/handler/useUserEventHandler.js +0 -17
  71. package/lib/module/handler/useUserEventHandler.js.map +0 -1
  72. package/lib/module/index.js +0 -13
  73. package/lib/module/index.js.map +0 -1
  74. package/lib/module/model/CustomQuery.js +0 -19
  75. package/lib/module/model/CustomQuery.js.map +0 -1
  76. package/lib/module/types.js +0 -2
  77. package/lib/module/types.js.map +0 -1
  78. package/lib/typescript/src/channel/useActiveGroupChannel.d.ts +0 -5
  79. package/lib/typescript/src/channel/useGroupChannelList.d.ts +0 -2
  80. package/lib/typescript/src/channel/useGroupChannelListWithCollection.d.ts +0 -2
  81. package/lib/typescript/src/channel/useGroupChannelListWithQuery.d.ts +0 -2
  82. package/lib/typescript/src/channel/useGroupChannelMessages/index.d.ts +0 -2
  83. package/lib/typescript/src/channel/useGroupChannelMessages/reducer.d.ts +0 -15
  84. package/lib/typescript/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.d.ts +0 -2
  85. package/lib/typescript/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.d.ts +0 -2
  86. package/lib/typescript/src/common/useAppFeatures.d.ts +0 -7
  87. package/lib/typescript/src/common/usePushTrigger.d.ts +0 -7
  88. package/lib/typescript/src/common/useTotalUnreadChannelCount.d.ts +0 -6
  89. package/lib/typescript/src/common/useTotalUnreadMessageCount.d.ts +0 -8
  90. package/lib/typescript/src/common/useUserList.d.ts +0 -24
  91. package/lib/typescript/src/handler/useChannelHandler.d.ts +0 -4
  92. package/lib/typescript/src/handler/useConnectionHandler.d.ts +0 -4
  93. package/lib/typescript/src/handler/useUserEventHandler.d.ts +0 -4
  94. package/lib/typescript/src/index.d.ts +0 -13
  95. package/lib/typescript/src/model/CustomQuery.d.ts +0 -14
  96. package/lib/typescript/src/types.d.ts +0 -198
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sendbird/uikit-chat-hooks",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "React hooks that built with SendbirdChat SDK",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -38,10 +38,10 @@
38
38
  "access": "public"
39
39
  },
40
40
  "dependencies": {
41
- "@sendbird/uikit-utils": "1.0.0"
41
+ "@sendbird/uikit-utils": "1.0.1"
42
42
  },
43
43
  "devDependencies": {
44
- "@types/react": "17.0.2",
44
+ "@types/react": "*",
45
45
  "react": "^16.13.1",
46
46
  "react-native-builder-bob": "^0.18.0",
47
47
  "typescript": "^4.1.3"
@@ -69,5 +69,5 @@
69
69
  "readmeFile": "./README.md",
70
70
  "displayName": "@sendbird/uikit-chat-hooks"
71
71
  },
72
- "gitHead": "c95ed8b6819a446b1136d2849939df57c323ac23"
72
+ "gitHead": "9627ff7449d05287c4fbf868e8210bb0a4f8b352"
73
73
  }
@@ -1,22 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useActiveGroupChannel = void 0;
7
-
8
- var _react = require("react");
9
-
10
- const useActiveGroupChannel = (sdk, staleChannel) => {
11
- const [activeChannel, setActiveChannel] = (0, _react.useState)(() => staleChannel);
12
- (0, _react.useEffect)(() => {
13
- sdk.GroupChannel.getChannel(staleChannel.url).then(setActiveChannel);
14
- }, [staleChannel.url]);
15
- return {
16
- activeChannel,
17
- setActiveChannel
18
- };
19
- };
20
-
21
- exports.useActiveGroupChannel = useActiveGroupChannel;
22
- //# sourceMappingURL=useActiveGroupChannel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useActiveGroupChannel","sdk","staleChannel","activeChannel","setActiveChannel","useState","useEffect","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;;AAIO,MAAMA,qBAAqB,GAAG,CAACC,GAAD,EAAuBC,YAAvB,KAA8D;EACjG,MAAM,CAACC,aAAD,EAAgBC,gBAAhB,IAAoC,IAAAC,eAAA,EAAS,MAAMH,YAAf,CAA1C;EAEA,IAAAI,gBAAA,EAAU,MAAM;IACdL,GAAG,CAACM,YAAJ,CAAiBC,UAAjB,CAA4BN,YAAY,CAACO,GAAzC,EAA8CC,IAA9C,CAAmDN,gBAAnD;EACD,CAFD,EAEG,CAACF,YAAY,CAACO,GAAd,CAFH;EAIA,OAAO;IAAEN,aAAF;IAAiBC;EAAjB,CAAP;AACD,CARM"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useGroupChannelList = void 0;
7
-
8
- var _useGroupChannelListWithCollection = require("./useGroupChannelListWithCollection");
9
-
10
- var _useGroupChannelListWithQuery = require("./useGroupChannelListWithQuery");
11
-
12
- const useGroupChannelList = (sdk, userId, options) => {
13
- if (sdk.isCacheEnabled || options !== null && options !== void 0 && options.enableCollectionWithoutLocalCache) {
14
- return (0, _useGroupChannelListWithCollection.useGroupChannelListWithCollection)(sdk, userId, options);
15
- } else {
16
- return (0, _useGroupChannelListWithQuery.useGroupChannelListWithQuery)(sdk, userId, options);
17
- }
18
- };
19
-
20
- exports.useGroupChannelList = useGroupChannelList;
21
- //# sourceMappingURL=useGroupChannelList.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useGroupChannelList","sdk","userId","options","isCacheEnabled","enableCollectionWithoutLocalCache","useGroupChannelListWithCollection","useGroupChannelListWithQuery"],"sources":["useGroupChannelList.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;;AACA;;AAEO,MAAMA,mBAAwC,GAAG,CAACC,GAAD,EAAMC,MAAN,EAAcC,OAAd,KAA0B;EAChF,IAAIF,GAAG,CAACG,cAAJ,IAAsBD,OAAtB,aAAsBA,OAAtB,eAAsBA,OAAO,CAAEE,iCAAnC,EAAsE;IACpE,OAAO,IAAAC,oEAAA,EAAkCL,GAAlC,EAAuCC,MAAvC,EAA+CC,OAA/C,CAAP;EACD,CAFD,MAEO;IACL,OAAO,IAAAI,0DAAA,EAA6BN,GAA7B,EAAkCC,MAAlC,EAA0CC,OAA1C,CAAP;EACD;AACF,CANM"}
@@ -1,148 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useGroupChannelListWithCollection = void 0;
7
-
8
- var _react = require("react");
9
-
10
- var _uikitUtils = require("@sendbird/uikit-utils");
11
-
12
- var _useAppFeatures = require("../common/useAppFeatures");
13
-
14
- var _useChannelHandler = require("../handler/useChannelHandler");
15
-
16
- const HOOK_NAME = 'useGroupChannelListWithCollection';
17
-
18
- const createGroupChannelListCollection = (sdk, collectionCreator) => {
19
- const passedCollection = collectionCreator === null || collectionCreator === void 0 ? void 0 : collectionCreator();
20
- if (passedCollection) return passedCollection;
21
- const defaultCollection = sdk.GroupChannel.createGroupChannelCollection();
22
- const filter = new sdk.GroupChannelFilter();
23
- return defaultCollection.setLimit(20).setFilter(filter).build();
24
- };
25
-
26
- const useGroupChannelListWithCollection = (sdk, userId, options) => {
27
- const id = (0, _uikitUtils.useUniqId)(HOOK_NAME);
28
- const {
29
- deliveryReceiptEnabled
30
- } = (0, _useAppFeatures.useAppFeatures)(sdk);
31
- const collectionRef = (0, _react.useRef)();
32
- const [loading, setLoading] = (0, _react.useState)(false);
33
- const [refreshing, setRefreshing] = (0, _react.useState)(false);
34
- const [groupChannelMap, setGroupChannelMap] = (0, _react.useState)({});
35
- const groupChannels = (0, _react.useMemo)(() => {
36
- const channels = Object.values(groupChannelMap);
37
- if (options !== null && options !== void 0 && options.sortComparator) return channels.sort(options === null || options === void 0 ? void 0 : options.sortComparator);
38
- return channels;
39
- }, [groupChannelMap, options === null || options === void 0 ? void 0 : options.sortComparator]); // ---------- internal methods ---------- //
40
-
41
- const updateChannels = (channels, clearPrev) => {
42
- const groupChannels = channels.filter(c => c.isGroupChannel());
43
- if (clearPrev) setGroupChannelMap((0, _uikitUtils.arrayToMap)(groupChannels, 'url'));else setGroupChannelMap(prev => ({ ...prev,
44
- ...(0, _uikitUtils.arrayToMap)(groupChannels, 'url')
45
- }));
46
- if (deliveryReceiptEnabled) groupChannels.forEach(channel => sdk.markAsDelivered(channel.url));
47
- };
48
-
49
- const deleteChannels = channelUrls => {
50
- setGroupChannelMap(_ref => {
51
- let { ...draft
52
- } = _ref;
53
- channelUrls.forEach(url => delete draft[url]);
54
- return draft;
55
- });
56
- };
57
-
58
- const init = (0, _react.useCallback)(async uid => {
59
- var _collectionRef$curren;
60
-
61
- if (collectionRef.current) (_collectionRef$curren = collectionRef.current) === null || _collectionRef$curren === void 0 ? void 0 : _collectionRef$curren.dispose();
62
-
63
- if (uid) {
64
- var _collectionRef$curren2, _collectionRef$curren4;
65
-
66
- collectionRef.current = createGroupChannelListCollection(sdk, options === null || options === void 0 ? void 0 : options.collectionCreator);
67
-
68
- if ((_collectionRef$curren2 = collectionRef.current) !== null && _collectionRef$curren2 !== void 0 && _collectionRef$curren2.hasMore) {
69
- var _collectionRef$curren3;
70
-
71
- updateChannels(await ((_collectionRef$curren3 = collectionRef.current) === null || _collectionRef$curren3 === void 0 ? void 0 : _collectionRef$curren3.loadMore()), true);
72
- }
73
-
74
- (_collectionRef$curren4 = collectionRef.current) === null || _collectionRef$curren4 === void 0 ? void 0 : _collectionRef$curren4.setGroupChannelCollectionHandler({
75
- onChannelsAdded(_, channels) {
76
- updateChannels(channels, false);
77
- },
78
-
79
- onChannelsUpdated(_, channels) {
80
- updateChannels(channels, false);
81
- },
82
-
83
- onChannelsDeleted(_, channelUrls) {
84
- deleteChannels(channelUrls);
85
- }
86
-
87
- });
88
- }
89
- }, [sdk, options === null || options === void 0 ? void 0 : options.collectionCreator]); // ---------- internal methods ends ---------- //
90
- // ---------- internal hooks ---------- //
91
-
92
- (0, _react.useEffect)(() => {
93
- return () => {
94
- var _collectionRef$curren5;
95
-
96
- if (collectionRef.current) (_collectionRef$curren5 = collectionRef.current) === null || _collectionRef$curren5 === void 0 ? void 0 : _collectionRef$curren5.dispose();
97
- };
98
- }, []);
99
- (0, _uikitUtils.useAsyncEffect)(async () => {
100
- setLoading(true);
101
- await init(userId);
102
- setLoading(false);
103
- }, [init, userId]);
104
- (0, _useChannelHandler.useChannelHandler)(sdk, `${HOOK_NAME}_${id}`, {
105
- onUserBanned: (channel, user) => {
106
- const isMe = user.userId === userId;
107
- if (isMe) deleteChannels([channel.url]);else updateChannels([channel], false);
108
- }
109
- }, [sdk, userId]); // ---------- internal hooks ends ---------- //
110
- // ---------- returns methods ---------- //
111
-
112
- const refresh = (0, _react.useCallback)(async () => {
113
- setRefreshing(true);
114
- await init(userId);
115
- setRefreshing(false);
116
- }, [init, userId]);
117
- const update = (0, _react.useCallback)(channel => {
118
- if (deliveryReceiptEnabled) sdk.markAsDelivered(channel.url);
119
- setGroupChannelMap(prev => ({ ...prev,
120
- [channel.url]: channel
121
- }));
122
- }, [sdk]);
123
- const next = (0, _react.useCallback)(async () => {
124
- var _collectionRef$curren6;
125
-
126
- if ((_collectionRef$curren6 = collectionRef.current) !== null && _collectionRef$curren6 !== void 0 && _collectionRef$curren6.hasMore) {
127
- var _collectionRef$curren7;
128
-
129
- const channels = await ((_collectionRef$curren7 = collectionRef.current) === null || _collectionRef$curren7 === void 0 ? void 0 : _collectionRef$curren7.loadMore());
130
- setGroupChannelMap(prev => ({ ...prev,
131
- ...(0, _uikitUtils.arrayToMap)(channels, 'url')
132
- }));
133
- if (deliveryReceiptEnabled) channels.forEach(channel => sdk.markAsDelivered(channel.url));
134
- }
135
- }, [sdk]); // ---------- returns methods ends ---------- //
136
-
137
- return {
138
- loading,
139
- groupChannels,
140
- refresh,
141
- refreshing,
142
- next,
143
- update
144
- };
145
- };
146
-
147
- exports.useGroupChannelListWithCollection = useGroupChannelListWithCollection;
148
- //# sourceMappingURL=useGroupChannelListWithCollection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["HOOK_NAME","createGroupChannelListCollection","sdk","collectionCreator","passedCollection","defaultCollection","GroupChannel","createGroupChannelCollection","filter","GroupChannelFilter","setLimit","setFilter","build","useGroupChannelListWithCollection","userId","options","id","useUniqId","deliveryReceiptEnabled","useAppFeatures","collectionRef","useRef","loading","setLoading","useState","refreshing","setRefreshing","groupChannelMap","setGroupChannelMap","groupChannels","useMemo","channels","Object","values","sortComparator","sort","updateChannels","clearPrev","c","isGroupChannel","arrayToMap","prev","forEach","channel","markAsDelivered","url","deleteChannels","channelUrls","draft","init","useCallback","uid","current","dispose","hasMore","loadMore","setGroupChannelCollectionHandler","onChannelsAdded","_","onChannelsUpdated","onChannelsDeleted","useEffect","useAsyncEffect","useChannelHandler","onUserBanned","user","isMe","refresh","update","next"],"sources":["useGroupChannelListWithCollection.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport type {\n SendbirdChannel,\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdGroupChannelCollection,\n} from '@sendbird/uikit-utils';\nimport { arrayToMap, useAsyncEffect, useUniqId } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../common/useAppFeatures';\nimport { useChannelHandler } from '../handler/useChannelHandler';\nimport type { UseGroupChannelList, UseGroupChannelListOptions } from '../types';\n\ntype GroupChannelMap = Record<string, SendbirdGroupChannel>;\n\nconst HOOK_NAME = 'useGroupChannelListWithCollection';\nconst createGroupChannelListCollection = (\n sdk: SendbirdChatSDK,\n collectionCreator: UseGroupChannelListOptions['collectionCreator'],\n) => {\n const passedCollection = collectionCreator?.();\n if (passedCollection) return passedCollection;\n\n const defaultCollection = sdk.GroupChannel.createGroupChannelCollection();\n const filter = new sdk.GroupChannelFilter();\n return defaultCollection.setLimit(20).setFilter(filter).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 const [loading, setLoading] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n\n const [groupChannelMap, setGroupChannelMap] = useState<GroupChannelMap>({});\n const groupChannels = useMemo(() => {\n const channels = Object.values(groupChannelMap);\n if (options?.sortComparator) return channels.sort(options?.sortComparator);\n return channels;\n }, [groupChannelMap, options?.sortComparator]);\n\n // ---------- internal methods ---------- //\n const updateChannels = (channels: SendbirdChannel[], clearPrev: boolean) => {\n const groupChannels = channels.filter((c): c is SendbirdGroupChannel => c.isGroupChannel());\n if (clearPrev) setGroupChannelMap(arrayToMap(groupChannels, 'url'));\n else setGroupChannelMap((prev) => ({ ...prev, ...arrayToMap(groupChannels, 'url') }));\n if (deliveryReceiptEnabled) groupChannels.forEach((channel) => sdk.markAsDelivered(channel.url));\n };\n const deleteChannels = (channelUrls: string[]) => {\n setGroupChannelMap(({ ...draft }) => {\n channelUrls.forEach((url) => delete draft[url]);\n return draft;\n });\n };\n const init = useCallback(\n async (uid?: string) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createGroupChannelListCollection(sdk, options?.collectionCreator);\n if (collectionRef.current?.hasMore) {\n updateChannels(await collectionRef.current?.loadMore(), true);\n }\n\n collectionRef.current?.setGroupChannelCollectionHandler({\n onChannelsAdded(_, channels) {\n updateChannels(channels, false);\n },\n onChannelsUpdated(_, channels) {\n updateChannels(channels, false);\n },\n onChannelsDeleted(_, channelUrls) {\n deleteChannels(channelUrls);\n },\n });\n }\n },\n [sdk, options?.collectionCreator],\n );\n // ---------- internal methods ends ---------- //\n\n // ---------- internal hooks ---------- //\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n useAsyncEffect(async () => {\n setLoading(true);\n await init(userId);\n setLoading(false);\n }, [init, userId]);\n\n useChannelHandler(\n sdk,\n `${HOOK_NAME}_${id}`,\n {\n onUserBanned: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannels([channel], false);\n },\n },\n [sdk, userId],\n );\n // ---------- internal hooks ends ---------- //\n\n // ---------- returns methods ---------- //\n const refresh = useCallback(async () => {\n setRefreshing(true);\n await init(userId);\n setRefreshing(false);\n }, [init, userId]);\n\n const update = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (deliveryReceiptEnabled) sdk.markAsDelivered(channel.url);\n setGroupChannelMap((prev) => ({ ...prev, [channel.url]: channel }));\n },\n [sdk],\n );\n\n const next = useCallback(async () => {\n if (collectionRef.current?.hasMore) {\n const channels = await collectionRef.current?.loadMore();\n setGroupChannelMap((prev) => ({ ...prev, ...arrayToMap(channels, 'url') }));\n if (deliveryReceiptEnabled) channels.forEach((channel) => sdk.markAsDelivered(channel.url));\n }\n }, [sdk]);\n // ---------- returns methods ends ---------- //\n\n return {\n loading,\n groupChannels,\n refresh,\n refreshing,\n next,\n update,\n };\n};\n"],"mappings":"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"}
@@ -1,130 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useGroupChannelListWithQuery = void 0;
7
-
8
- var _react = require("react");
9
-
10
- var _uikitUtils = require("@sendbird/uikit-utils");
11
-
12
- var _useAppFeatures = require("../common/useAppFeatures");
13
-
14
- var _useChannelHandler = require("../handler/useChannelHandler");
15
-
16
- const HOOK_NAME = 'useGroupChannelListWithQuery';
17
-
18
- const createGroupChannelListQuery = (sdk, queryCreator) => {
19
- const passedQuery = queryCreator === null || queryCreator === void 0 ? void 0 : queryCreator();
20
- if (passedQuery) return passedQuery;
21
- const defaultQuery = sdk.GroupChannel.createMyGroupChannelListQuery();
22
- defaultQuery.limit = 20;
23
- return defaultQuery;
24
- };
25
-
26
- const useGroupChannelListWithQuery = (sdk, userId, options) => {
27
- const {
28
- deliveryReceiptEnabled
29
- } = (0, _useAppFeatures.useAppFeatures)(sdk);
30
- const queryRef = (0, _react.useRef)();
31
- const [loading, setLoading] = (0, _react.useState)(false);
32
- const [refreshing, setRefreshing] = (0, _react.useState)(false);
33
- const [groupChannelMap, setGroupChannelMap] = (0, _react.useState)({});
34
- const groupChannels = (0, _react.useMemo)(() => {
35
- const channels = Object.values(groupChannelMap);
36
- if (options !== null && options !== void 0 && options.sortComparator) return channels.sort(options === null || options === void 0 ? void 0 : options.sortComparator);
37
- return channels;
38
- }, [groupChannelMap, options === null || options === void 0 ? void 0 : options.sortComparator]); // ---------- internal methods ---------- //
39
-
40
- const updateChannels = (channels, clearPrev) => {
41
- const groupChannels = channels.filter(c => c.isGroupChannel());
42
- if (clearPrev) setGroupChannelMap((0, _uikitUtils.arrayToMap)(groupChannels, 'url'));else setGroupChannelMap(prev => ({ ...prev,
43
- ...(0, _uikitUtils.arrayToMap)(groupChannels, 'url')
44
- }));
45
- if (deliveryReceiptEnabled) groupChannels.forEach(channel => sdk.markAsDelivered(channel.url));
46
- };
47
-
48
- const deleteChannels = channelUrls => {
49
- setGroupChannelMap(_ref => {
50
- let { ...draft
51
- } = _ref;
52
- channelUrls.forEach(url => delete draft[url]);
53
- return draft;
54
- });
55
- };
56
-
57
- const init = (0, _react.useCallback)(async uid => {
58
- if (uid) {
59
- var _queryRef$current;
60
-
61
- queryRef.current = createGroupChannelListQuery(sdk, options === null || options === void 0 ? void 0 : options.queryCreator);
62
-
63
- if ((_queryRef$current = queryRef.current) !== null && _queryRef$current !== void 0 && _queryRef$current.hasNext) {
64
- const channels = await queryRef.current.next();
65
- updateChannels(channels, true);
66
- }
67
- }
68
- }, [sdk, options === null || options === void 0 ? void 0 : options.queryCreator]); // ---------- internal methods ends ---------- //
69
- // ---------- internal hooks ---------- //
70
-
71
- (0, _uikitUtils.useAsyncEffect)(async () => {
72
- setLoading(true);
73
- await init(userId);
74
- setLoading(false);
75
- }, [init, userId]);
76
- (0, _useChannelHandler.useChannelHandler)(sdk, HOOK_NAME, {
77
- onChannelChanged: channel => updateChannels([channel], false),
78
- onChannelFrozen: channel => updateChannels([channel], false),
79
- onChannelUnfrozen: channel => updateChannels([channel], false),
80
- onChannelMemberCountChanged: channels => updateChannels(channels, false),
81
- onChannelDeleted: url => deleteChannels([url]),
82
- onUserJoined: channel => updateChannels([channel], false),
83
- onUserLeft: (channel, user) => {
84
- const isMe = user.userId === userId;
85
- if (isMe) deleteChannels([channel.url]);else updateChannels([channel], false);
86
- },
87
-
88
- onUserBanned(channel, user) {
89
- const isMe = user.userId === userId;
90
- if (isMe) deleteChannels([channel.url]);else updateChannels([channel], false);
91
- }
92
-
93
- }, [sdk, userId]); // ---------- internal hooks ends ---------- //
94
- // ---------- returns methods ---------- //
95
-
96
- const refresh = (0, _react.useCallback)(async () => {
97
- setRefreshing(true);
98
- await init(userId);
99
- setRefreshing(false);
100
- }, [init, userId]);
101
- const update = (0, _react.useCallback)(channel => {
102
- if (deliveryReceiptEnabled) sdk.markAsDelivered(channel.url);
103
- setGroupChannelMap(prev => ({ ...prev,
104
- [channel.url]: channel
105
- }));
106
- }, [sdk]);
107
- const next = (0, _react.useCallback)(async () => {
108
- var _queryRef$current2;
109
-
110
- if ((_queryRef$current2 = queryRef.current) !== null && _queryRef$current2 !== void 0 && _queryRef$current2.hasNext) {
111
- const channels = await queryRef.current.next();
112
- setGroupChannelMap(prev => ({ ...prev,
113
- ...(0, _uikitUtils.arrayToMap)(channels, 'url')
114
- }));
115
- if (deliveryReceiptEnabled) channels.forEach(channel => sdk.markAsDelivered(channel.url));
116
- }
117
- }, [sdk]); // ---------- returns methods ends ---------- //
118
-
119
- return {
120
- loading,
121
- groupChannels,
122
- update,
123
- refresh,
124
- refreshing,
125
- next
126
- };
127
- };
128
-
129
- exports.useGroupChannelListWithQuery = useGroupChannelListWithQuery;
130
- //# sourceMappingURL=useGroupChannelListWithQuery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["HOOK_NAME","createGroupChannelListQuery","sdk","queryCreator","passedQuery","defaultQuery","GroupChannel","createMyGroupChannelListQuery","limit","useGroupChannelListWithQuery","userId","options","deliveryReceiptEnabled","useAppFeatures","queryRef","useRef","loading","setLoading","useState","refreshing","setRefreshing","groupChannelMap","setGroupChannelMap","groupChannels","useMemo","channels","Object","values","sortComparator","sort","updateChannels","clearPrev","filter","c","isGroupChannel","arrayToMap","prev","forEach","channel","markAsDelivered","url","deleteChannels","channelUrls","draft","init","useCallback","uid","current","hasNext","next","useAsyncEffect","useChannelHandler","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelMemberCountChanged","onChannelDeleted","onUserJoined","onUserLeft","user","isMe","onUserBanned","refresh","update"],"sources":["useGroupChannelListWithQuery.ts"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport type { SendbirdChannel, SendbirdChatSDK, SendbirdGroupChannel } from '@sendbird/uikit-utils';\nimport { arrayToMap, useAsyncEffect } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../common/useAppFeatures';\nimport { useChannelHandler } from '../handler/useChannelHandler';\nimport type { UseGroupChannelList, UseGroupChannelListOptions } from '../types';\n\ntype GroupChannelMap = Record<string, SendbirdGroupChannel>;\n\nconst HOOK_NAME = 'useGroupChannelListWithQuery';\nconst createGroupChannelListQuery = (\n sdk: SendbirdChatSDK,\n queryCreator: UseGroupChannelListOptions['queryCreator'],\n) => {\n const passedQuery = queryCreator?.();\n if (passedQuery) return passedQuery;\n\n const defaultQuery = sdk.GroupChannel.createMyGroupChannelListQuery();\n defaultQuery.limit = 20;\n return defaultQuery;\n};\n\nexport const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, options) => {\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n const queryRef = useRef<Sendbird.GroupChannelListQuery>();\n const [loading, setLoading] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n\n const [groupChannelMap, setGroupChannelMap] = useState<GroupChannelMap>({});\n const groupChannels = useMemo(() => {\n const channels = Object.values(groupChannelMap);\n if (options?.sortComparator) return channels.sort(options?.sortComparator);\n return channels;\n }, [groupChannelMap, options?.sortComparator]);\n\n // ---------- internal methods ---------- //\n const updateChannels = (channels: SendbirdChannel[], clearPrev: boolean) => {\n const groupChannels = channels.filter((c): c is SendbirdGroupChannel => c.isGroupChannel());\n if (clearPrev) setGroupChannelMap(arrayToMap(groupChannels, 'url'));\n else setGroupChannelMap((prev) => ({ ...prev, ...arrayToMap(groupChannels, 'url') }));\n\n if (deliveryReceiptEnabled) groupChannels.forEach((channel) => sdk.markAsDelivered(channel.url));\n };\n const deleteChannels = (channelUrls: string[]) => {\n setGroupChannelMap(({ ...draft }) => {\n channelUrls.forEach((url) => delete draft[url]);\n return draft;\n });\n };\n const init = useCallback(\n async (uid?: string) => {\n if (uid) {\n queryRef.current = createGroupChannelListQuery(sdk, options?.queryCreator);\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n updateChannels(channels, true);\n }\n }\n },\n [sdk, options?.queryCreator],\n );\n // ---------- internal methods ends ---------- //\n\n // ---------- internal hooks ---------- //\n useAsyncEffect(async () => {\n setLoading(true);\n await init(userId);\n setLoading(false);\n }, [init, userId]);\n\n useChannelHandler(\n sdk,\n HOOK_NAME,\n {\n onChannelChanged: (channel) => updateChannels([channel], false),\n onChannelFrozen: (channel) => updateChannels([channel], false),\n onChannelUnfrozen: (channel) => updateChannels([channel], false),\n onChannelMemberCountChanged: (channels) => updateChannels(channels, false),\n onChannelDeleted: (url) => deleteChannels([url]),\n onUserJoined: (channel) => updateChannels([channel], false),\n onUserLeft: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannels([channel], false);\n },\n onUserBanned(channel, user) {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannels([channel], false);\n },\n },\n [sdk, userId],\n );\n // ---------- internal hooks ends ---------- //\n\n // ---------- returns methods ---------- //\n const refresh = useCallback(async () => {\n setRefreshing(true);\n await init(userId);\n setRefreshing(false);\n }, [init, userId]);\n\n const update = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (deliveryReceiptEnabled) sdk.markAsDelivered(channel.url);\n setGroupChannelMap((prev) => ({ ...prev, [channel.url]: channel }));\n },\n [sdk],\n );\n\n const next = useCallback(async () => {\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n setGroupChannelMap((prev) => ({ ...prev, ...arrayToMap(channels, 'url') }));\n if (deliveryReceiptEnabled) channels.forEach((channel) => sdk.markAsDelivered(channel.url));\n }\n }, [sdk]);\n // ---------- returns methods ends ---------- //\n\n return { loading, groupChannels, update, refresh, refreshing, next };\n};\n"],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useGroupChannelMessages = void 0;
7
-
8
- var _useGroupChannelMessagesWithCollection = require("./useGroupChannelMessagesWithCollection");
9
-
10
- var _useGroupChannelMessagesWithQuery = require("./useGroupChannelMessagesWithQuery");
11
-
12
- const useGroupChannelMessages = (sdk, channel, userId, options) => {
13
- if (sdk.isCacheEnabled || options !== null && options !== void 0 && options.enableCollectionWithoutLocalCache) {
14
- return (0, _useGroupChannelMessagesWithCollection.useGroupChannelMessagesWithCollection)(sdk, channel, userId, options);
15
- } else {
16
- return (0, _useGroupChannelMessagesWithQuery.useGroupChannelMessagesWithQuery)(sdk, channel, userId, options);
17
- }
18
- };
19
-
20
- exports.useGroupChannelMessages = useGroupChannelMessages;
21
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useGroupChannelMessages","sdk","channel","userId","options","isCacheEnabled","enableCollectionWithoutLocalCache","useGroupChannelMessagesWithCollection","useGroupChannelMessagesWithQuery"],"sources":["index.ts"],"sourcesContent":["import 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 return useGroupChannelMessagesWithCollection(sdk, channel, userId, options);\n } else {\n return useGroupChannelMessagesWithQuery(sdk, channel, userId, options);\n }\n};\n"],"mappings":";;;;;;;AACA;;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,OAAO,IAAAC,4EAAA,EAAsCN,GAAtC,EAA2CC,OAA3C,EAAoDC,MAApD,EAA4DC,OAA5D,CAAP;EACD,CAFD,MAEO;IACL,OAAO,IAAAI,kEAAA,EAAiCP,GAAjC,EAAsCC,OAAtC,EAA+CC,MAA/C,EAAuDC,OAAvD,CAAP;EACD;AACF,CANM"}
@@ -1,158 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useGroupChannelMessagesReducer = void 0;
7
-
8
- var _react = require("react");
9
-
10
- var _uikitUtils = require("@sendbird/uikit-utils");
11
-
12
- const defaultReducer = (_ref, action) => {
13
- let { ...draft
14
- } = _ref;
15
-
16
- switch (action.type) {
17
- case 'update_refreshing':
18
- case 'update_loading':
19
- {
20
- const key = action.type === 'update_loading' ? 'loading' : 'refreshing';
21
- draft[key] = action.value.status;
22
- return draft;
23
- }
24
-
25
- case 'update_messages':
26
- case 'update_next_messages':
27
- {
28
- const key = action.type === 'update_messages' ? 'messageMap' : 'nextMessageMap';
29
- const messageMap = (0, _uikitUtils.arrayToMapWithGetter)(action.value.messages, _uikitUtils.getMessageUniqId);
30
-
31
- if (action.value.clearPrev) {
32
- draft[key] = messageMap;
33
- } else {
34
- draft[key] = { ...draft[key],
35
- ...messageMap
36
- }; // NOTE: Replace pending message to succeeded message
37
-
38
- action.value.messages.filter(m => {
39
- return (m.isFileMessage() || m.isUserMessage()) && Boolean(draft[key][m.reqId]) && m.sendingStatus === 'succeeded' && (0, _uikitUtils.isMyMessage)(m, action.value.currentUserId);
40
- }).forEach(m => delete draft[key][m.reqId]);
41
- }
42
-
43
- if (action.type === 'update_messages') {
44
- draft['nextMessageMap'] = {};
45
- }
46
-
47
- return draft;
48
- }
49
-
50
- case 'delete_messages':
51
- case 'delete_next_messages':
52
- {
53
- const key = action.type === 'delete_messages' ? 'messageMap' : 'nextMessageMap';
54
- draft[key] = { ...draft[key]
55
- };
56
- action.value.messageIds.forEach(msgId => delete draft[key][msgId]);
57
- action.value.reqIds.forEach(reqId => delete draft[key][reqId]);
58
- return draft;
59
- }
60
- }
61
- };
62
-
63
- const useGroupChannelMessagesReducer = (userId, sortComparator) => {
64
- const [{
65
- loading,
66
- refreshing,
67
- messageMap,
68
- nextMessageMap
69
- }, dispatch] = (0, _react.useReducer)(defaultReducer, {
70
- loading: true,
71
- refreshing: false,
72
- messageMap: {},
73
- nextMessageMap: {}
74
- });
75
-
76
- const updateMessages = (messages, clearPrev, currentUserId) => {
77
- dispatch({
78
- type: 'update_messages',
79
- value: {
80
- messages,
81
- clearPrev,
82
- currentUserId
83
- }
84
- });
85
- };
86
-
87
- const deleteMessages = (messageIds, reqIds) => {
88
- dispatch({
89
- type: 'delete_messages',
90
- value: {
91
- messageIds,
92
- reqIds
93
- }
94
- });
95
- };
96
-
97
- const updateNextMessages = (messages, clearPrev, currentUserId) => {
98
- dispatch({
99
- type: 'update_next_messages',
100
- value: {
101
- messages,
102
- clearPrev,
103
- currentUserId
104
- }
105
- });
106
- };
107
-
108
- const deleteNextMessages = (messageIds, reqIds) => {
109
- dispatch({
110
- type: 'delete_next_messages',
111
- value: {
112
- messageIds,
113
- reqIds
114
- }
115
- });
116
- };
117
-
118
- const updateLoading = status => {
119
- dispatch({
120
- type: 'update_loading',
121
- value: {
122
- status
123
- }
124
- });
125
- };
126
-
127
- const updateRefreshing = status => {
128
- dispatch({
129
- type: 'update_refreshing',
130
- value: {
131
- status
132
- }
133
- });
134
- };
135
-
136
- const messages = (0, _uikitUtils.useIIFE)(() => {
137
- if (sortComparator) return Object.values(messageMap).sort(sortComparator);
138
- return Object.values(messageMap);
139
- });
140
- const nextMessages = Object.values(nextMessageMap);
141
- const newMessagesFromMembers = nextMessages.filter(msg => (0, _uikitUtils.isNewMessage)(msg, userId));
142
- return {
143
- updateLoading,
144
- updateRefreshing,
145
- updateMessages,
146
- updateNextMessages,
147
- deleteMessages,
148
- deleteNextMessages,
149
- loading,
150
- refreshing,
151
- messages,
152
- nextMessages,
153
- newMessagesFromMembers
154
- };
155
- };
156
-
157
- exports.useGroupChannelMessagesReducer = useGroupChannelMessagesReducer;
158
- //# sourceMappingURL=reducer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["defaultReducer","action","draft","type","key","value","status","messageMap","arrayToMapWithGetter","messages","getMessageUniqId","clearPrev","filter","m","isFileMessage","isUserMessage","Boolean","reqId","sendingStatus","isMyMessage","currentUserId","forEach","messageIds","msgId","reqIds","useGroupChannelMessagesReducer","userId","sortComparator","loading","refreshing","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 {\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdMessage,\n SendbirdUserMessage,\n} 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, SendbirdMessage>;\n nextMessageMap: Record<string, SendbirdMessage>;\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 messageMap = arrayToMapWithGetter(action.value.messages, getMessageUniqId);\n if (action.value.clearPrev) {\n draft[key] = messageMap;\n } else {\n draft[key] = { ...draft[key], ...messageMap };\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 if (action.type === 'update_messages') {\n draft['nextMessageMap'] = {};\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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"}