@sendbird/uikit-chat-hooks 1.0.2 → 1.1.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 (74) hide show
  1. package/lib/commonjs/channel/{useGroupChannelList.js → useGroupChannelList/index.js} +1 -1
  2. package/lib/commonjs/channel/useGroupChannelList/index.js.map +1 -0
  3. package/lib/commonjs/channel/useGroupChannelList/reducer.js +184 -0
  4. package/lib/commonjs/channel/useGroupChannelList/reducer.js.map +1 -0
  5. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js +134 -0
  6. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -0
  7. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js +118 -0
  8. package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -0
  9. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +4 -5
  10. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  11. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +3 -3
  12. package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  13. package/lib/commonjs/common/useAppFeatures.js +8 -28
  14. package/lib/commonjs/common/useAppFeatures.js.map +1 -1
  15. package/lib/commonjs/common/useMessageOutgoingStatus.js +49 -0
  16. package/lib/commonjs/common/useMessageOutgoingStatus.js.map +1 -0
  17. package/lib/commonjs/handler/useChannelHandler.js +16 -5
  18. package/lib/commonjs/handler/useChannelHandler.js.map +1 -1
  19. package/lib/commonjs/index.js +12 -4
  20. package/lib/commonjs/index.js.map +1 -1
  21. package/lib/commonjs/types.js.map +1 -1
  22. package/lib/module/channel/{useGroupChannelList.js → useGroupChannelList/index.js} +1 -1
  23. package/lib/module/channel/useGroupChannelList/index.js.map +1 -0
  24. package/lib/module/channel/useGroupChannelList/reducer.js +174 -0
  25. package/lib/module/channel/useGroupChannelList/reducer.js.map +1 -0
  26. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js +120 -0
  27. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -0
  28. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js +104 -0
  29. package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -0
  30. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +4 -5
  31. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
  32. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +3 -3
  33. package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
  34. package/lib/module/common/useAppFeatures.js +8 -27
  35. package/lib/module/common/useAppFeatures.js.map +1 -1
  36. package/lib/module/common/useMessageOutgoingStatus.js +36 -0
  37. package/lib/module/common/useMessageOutgoingStatus.js.map +1 -0
  38. package/lib/module/handler/useChannelHandler.js +17 -6
  39. package/lib/module/handler/useChannelHandler.js.map +1 -1
  40. package/lib/module/index.js +4 -3
  41. package/lib/module/index.js.map +1 -1
  42. package/lib/module/types.js.map +1 -1
  43. package/lib/typescript/src/channel/{useGroupChannelList.d.ts → useGroupChannelList/index.d.ts} +1 -1
  44. package/lib/typescript/src/channel/useGroupChannelList/reducer.d.ts +14 -0
  45. package/lib/typescript/src/channel/{useGroupChannelListWithCollection.d.ts → useGroupChannelList/useGroupChannelListWithCollection.d.ts} +1 -1
  46. package/lib/typescript/src/channel/{useGroupChannelListWithQuery.d.ts → useGroupChannelList/useGroupChannelListWithQuery.d.ts} +1 -1
  47. package/lib/typescript/src/common/useMessageOutgoingStatus.d.ts +3 -0
  48. package/lib/typescript/src/handler/useChannelHandler.d.ts +1 -2
  49. package/lib/typescript/src/index.d.ts +4 -3
  50. package/lib/typescript/src/types.d.ts +0 -7
  51. package/package.json +3 -3
  52. package/src/channel/{useGroupChannelList.ts → useGroupChannelList/index.ts} +1 -1
  53. package/src/channel/useGroupChannelList/reducer.ts +154 -0
  54. package/src/channel/useGroupChannelList/useGroupChannelListWithCollection.ts +116 -0
  55. package/src/channel/useGroupChannelList/useGroupChannelListWithQuery.ts +114 -0
  56. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +14 -20
  57. package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +48 -53
  58. package/src/common/useAppFeatures.ts +5 -22
  59. package/src/common/useMessageOutgoingStatus.ts +56 -0
  60. package/src/handler/useChannelHandler.ts +11 -5
  61. package/src/index.ts +4 -3
  62. package/src/types.ts +0 -8
  63. package/lib/commonjs/channel/useGroupChannelList.js.map +0 -1
  64. package/lib/commonjs/channel/useGroupChannelListWithCollection.js +0 -148
  65. package/lib/commonjs/channel/useGroupChannelListWithCollection.js.map +0 -1
  66. package/lib/commonjs/channel/useGroupChannelListWithQuery.js +0 -130
  67. package/lib/commonjs/channel/useGroupChannelListWithQuery.js.map +0 -1
  68. package/lib/module/channel/useGroupChannelList.js.map +0 -1
  69. package/lib/module/channel/useGroupChannelListWithCollection.js +0 -135
  70. package/lib/module/channel/useGroupChannelListWithCollection.js.map +0 -1
  71. package/lib/module/channel/useGroupChannelListWithQuery.js +0 -117
  72. package/lib/module/channel/useGroupChannelListWithQuery.js.map +0 -1
  73. package/src/channel/useGroupChannelListWithCollection.ts +0 -144
  74. package/src/channel/useGroupChannelListWithQuery.ts +0 -124
@@ -0,0 +1,174 @@
1
+ import { useReducer } from 'react';
2
+ import { getGroupChannels } from '@sendbird/uikit-utils';
3
+
4
+ const defaultReducer = (_ref, action) => {
5
+ let { ...draft
6
+ } = _ref;
7
+ const compareByOrder = createCompareByOrder(draft.order);
8
+
9
+ switch (action.type) {
10
+ case 'update_refreshing':
11
+ case 'update_loading':
12
+ {
13
+ const key = action.type === 'update_loading' ? 'loading' : 'refreshing';
14
+ draft[key] = action.value.status;
15
+ break;
16
+ }
17
+
18
+ case 'update_channels':
19
+ {
20
+ getGroupChannels(action.value.channels).forEach(freshChannel => {
21
+ const idx = draft.groupChannels.findIndex(staleChannel => staleChannel.url === freshChannel.url);
22
+ if (idx > -1) draft.groupChannels[idx] = freshChannel;
23
+ });
24
+ compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));
25
+ break;
26
+ }
27
+
28
+ case 'delete_channels':
29
+ {
30
+ action.value.channelUrls.forEach(url => {
31
+ const idx = draft.groupChannels.findIndex(c => c.url === url);
32
+ if (idx > -1) draft.groupChannels.splice(idx, 1);
33
+ });
34
+ compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));
35
+ break;
36
+ }
37
+
38
+ case 'set_channels':
39
+ {
40
+ if (action.value.clearPrev) {
41
+ draft.groupChannels = getGroupChannels(action.value.channels);
42
+ } else {
43
+ draft.groupChannels = [...draft.groupChannels, ...getGroupChannels(action.value.channels)];
44
+ }
45
+
46
+ compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));
47
+ break;
48
+ }
49
+
50
+ case 'update_order':
51
+ {
52
+ draft.order = action.value.order;
53
+ break;
54
+ }
55
+ }
56
+
57
+ return draft;
58
+ };
59
+
60
+ export const useGroupChannelListReducer = order => {
61
+ const [{
62
+ loading,
63
+ refreshing,
64
+ groupChannels
65
+ }, dispatch] = useReducer(defaultReducer, {
66
+ loading: true,
67
+ refreshing: false,
68
+ groupChannels: [],
69
+ order
70
+ });
71
+
72
+ const updateChannels = channels => {
73
+ dispatch({
74
+ type: 'update_channels',
75
+ value: {
76
+ channels
77
+ }
78
+ });
79
+ };
80
+
81
+ const deleteChannels = channelUrls => {
82
+ dispatch({
83
+ type: 'delete_channels',
84
+ value: {
85
+ channelUrls
86
+ }
87
+ });
88
+ };
89
+
90
+ const setChannels = (channels, clearPrev) => {
91
+ dispatch({
92
+ type: 'set_channels',
93
+ value: {
94
+ channels,
95
+ clearPrev
96
+ }
97
+ });
98
+ };
99
+
100
+ const updateLoading = status => {
101
+ dispatch({
102
+ type: 'update_loading',
103
+ value: {
104
+ status
105
+ }
106
+ });
107
+ };
108
+
109
+ const updateRefreshing = status => {
110
+ dispatch({
111
+ type: 'update_refreshing',
112
+ value: {
113
+ status
114
+ }
115
+ });
116
+ };
117
+
118
+ const updateOrder = order => {
119
+ dispatch({
120
+ type: 'update_order',
121
+ value: {
122
+ order
123
+ }
124
+ });
125
+ };
126
+
127
+ return {
128
+ updateLoading,
129
+ updateRefreshing,
130
+ updateChannels,
131
+ deleteChannels,
132
+ setChannels,
133
+ updateOrder,
134
+ loading,
135
+ refreshing,
136
+ groupChannels
137
+ };
138
+ };
139
+
140
+ const createCompareByOrder = order => {
141
+ if (!order) return undefined;
142
+ return (channel1, channel2) => {
143
+ switch (order) {
144
+ case 'latest_last_message':
145
+ {
146
+ if (channel1.lastMessage && channel2.lastMessage) {
147
+ return channel2.lastMessage.createdAt - channel1.lastMessage.createdAt;
148
+ } else if (channel1.lastMessage) {
149
+ return -1;
150
+ } else if (channel2.lastMessage) {
151
+ return 1;
152
+ } else {
153
+ return channel2.createdAt - channel1.createdAt;
154
+ }
155
+ }
156
+
157
+ case 'chronological':
158
+ {
159
+ return channel2.createdAt - channel1.createdAt;
160
+ }
161
+
162
+ case 'channel_name_alphabetical':
163
+ {
164
+ return channel1.name.localeCompare(channel2.name);
165
+ }
166
+
167
+ default:
168
+ {
169
+ return 0;
170
+ }
171
+ }
172
+ };
173
+ };
174
+ //# sourceMappingURL=reducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useReducer","getGroupChannels","defaultReducer","action","draft","compareByOrder","createCompareByOrder","order","type","key","value","status","channels","forEach","freshChannel","idx","groupChannels","findIndex","staleChannel","url","sort","channelUrls","c","splice","clearPrev","useGroupChannelListReducer","loading","refreshing","dispatch","updateChannels","deleteChannels","setChannels","updateLoading","updateRefreshing","updateOrder","undefined","channel1","channel2","lastMessage","createdAt","name","localeCompare"],"sources":["reducer.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport type { SendbirdChannel } from '@sendbird/uikit-utils';\nimport { SendbirdGroupChannel, getGroupChannels } from '@sendbird/uikit-utils';\n\ntype Order = 'latest_last_message' | 'chronological' | 'channel_name_alphabetical' | 'metadata_value_alphabetical';\n\ntype Action =\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_channels';\n value: { channels: SendbirdChannel[] };\n }\n | {\n type: 'delete_channels';\n value: { channelUrls: string[] };\n }\n | {\n type: 'set_channels';\n value: { channels: SendbirdChannel[]; clearPrev: boolean };\n }\n | {\n type: 'update_order';\n value: { order?: Order };\n };\n\ntype State = {\n loading: boolean;\n refreshing: boolean;\n groupChannels: SendbirdGroupChannel[];\n order?: Order;\n};\n\nconst defaultReducer = ({ ...draft }: State, action: Action) => {\n const compareByOrder = createCompareByOrder(draft.order);\n\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 break;\n }\n case 'update_channels': {\n getGroupChannels(action.value.channels).forEach((freshChannel) => {\n const idx = draft.groupChannels.findIndex((staleChannel) => staleChannel.url === freshChannel.url);\n if (idx > -1) draft.groupChannels[idx] = freshChannel;\n });\n\n compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));\n break;\n }\n case 'delete_channels': {\n action.value.channelUrls.forEach((url) => {\n const idx = draft.groupChannels.findIndex((c) => c.url === url);\n if (idx > -1) draft.groupChannels.splice(idx, 1);\n });\n\n compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));\n break;\n }\n case 'set_channels': {\n if (action.value.clearPrev) {\n draft.groupChannels = getGroupChannels(action.value.channels);\n } else {\n draft.groupChannels = [...draft.groupChannels, ...getGroupChannels(action.value.channels)];\n }\n\n compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));\n break;\n }\n case 'update_order': {\n draft.order = action.value.order;\n break;\n }\n }\n return draft;\n};\n\nexport const useGroupChannelListReducer = (order?: Order) => {\n const [{ loading, refreshing, groupChannels }, dispatch] = useReducer(defaultReducer, {\n loading: true,\n refreshing: false,\n groupChannels: [],\n order,\n });\n\n const updateChannels = (channels: SendbirdChannel[]) => {\n dispatch({ type: 'update_channels', value: { channels } });\n };\n const deleteChannels = (channelUrls: string[]) => {\n dispatch({ type: 'delete_channels', value: { channelUrls } });\n };\n const setChannels = (channels: SendbirdChannel[], clearPrev: boolean) => {\n dispatch({ type: 'set_channels', value: { channels, clearPrev } });\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 const updateOrder = (order?: Order) => {\n dispatch({ type: 'update_order', value: { order } });\n };\n\n return {\n updateLoading,\n updateRefreshing,\n updateChannels,\n deleteChannels,\n setChannels,\n\n updateOrder,\n\n loading,\n refreshing,\n groupChannels,\n };\n};\n\nconst createCompareByOrder = (order?: Order) => {\n if (!order) return undefined;\n\n return (channel1: SendbirdGroupChannel, channel2: SendbirdGroupChannel): number => {\n switch (order) {\n case 'latest_last_message': {\n if (channel1.lastMessage && channel2.lastMessage) {\n return channel2.lastMessage.createdAt - channel1.lastMessage.createdAt;\n } else if (channel1.lastMessage) {\n return -1;\n } else if (channel2.lastMessage) {\n return 1;\n } else {\n return channel2.createdAt - channel1.createdAt;\n }\n }\n\n case 'chronological': {\n return channel2.createdAt - channel1.createdAt;\n }\n\n case 'channel_name_alphabetical': {\n return channel1.name.localeCompare(channel2.name);\n }\n default: {\n return 0;\n }\n }\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ import { useEffect, useRef } from 'react';
2
+ import { useAsyncEffect, useFreshCallback, useUniqId } from '@sendbird/uikit-utils';
3
+ import { useAppFeatures } from '../../common/useAppFeatures';
4
+ import { useChannelHandler } from '../../handler/useChannelHandler';
5
+ import { useGroupChannelListReducer } from './reducer';
6
+ const HOOK_NAME = 'useGroupChannelListWithCollection';
7
+
8
+ const createGroupChannelListCollection = (sdk, collectionCreator) => {
9
+ const passedCollection = collectionCreator === null || collectionCreator === void 0 ? void 0 : collectionCreator();
10
+ 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();
20
+ };
21
+
22
+ export const useGroupChannelListWithCollection = (sdk, userId, options) => {
23
+ const id = useUniqId(HOOK_NAME);
24
+ const {
25
+ deliveryReceiptEnabled
26
+ } = useAppFeatures(sdk);
27
+ const collectionRef = useRef();
28
+ const {
29
+ loading,
30
+ groupChannels,
31
+ refreshing,
32
+ setChannels,
33
+ deleteChannels,
34
+ updateRefreshing,
35
+ updateLoading
36
+ } = useGroupChannelListReducer();
37
+
38
+ const updateChannelsAndMarkAsDelivered = markAsDelivered => {
39
+ var _collectionRef$curren;
40
+
41
+ const channels = ((_collectionRef$curren = collectionRef.current) === null || _collectionRef$curren === void 0 ? void 0 : _collectionRef$curren.channelList) ?? [];
42
+ setChannels(channels, true);
43
+ if (markAsDelivered && deliveryReceiptEnabled) channels.forEach(channel => sdk.markAsDelivered(channel.url));
44
+ };
45
+
46
+ const init = useFreshCallback(async uid => {
47
+ var _collectionRef$curren2;
48
+
49
+ if (collectionRef.current) (_collectionRef$curren2 = collectionRef.current) === null || _collectionRef$curren2 === void 0 ? void 0 : _collectionRef$curren2.dispose();
50
+
51
+ if (uid) {
52
+ var _collectionRef$curren3, _collectionRef$curren5;
53
+
54
+ 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() {
65
+ updateChannelsAndMarkAsDelivered(true);
66
+ },
67
+
68
+ onChannelsUpdated() {
69
+ updateChannelsAndMarkAsDelivered(true);
70
+ },
71
+
72
+ onChannelsDeleted() {
73
+ updateChannelsAndMarkAsDelivered(false);
74
+ }
75
+
76
+ });
77
+ }
78
+ });
79
+ useEffect(() => {
80
+ return () => {
81
+ var _collectionRef$curren6;
82
+
83
+ if (collectionRef.current) (_collectionRef$curren6 = collectionRef.current) === null || _collectionRef$curren6 === void 0 ? void 0 : _collectionRef$curren6.dispose();
84
+ };
85
+ }, []);
86
+ useAsyncEffect(async () => {
87
+ updateLoading(true);
88
+ await init(userId);
89
+ updateLoading(false);
90
+ }, [init, userId]);
91
+ useChannelHandler(sdk, `${HOOK_NAME}_${id}`, {
92
+ onUserBanned: (channel, user) => {
93
+ const isMe = user.userId === userId;
94
+ if (isMe) deleteChannels([channel.url]);else updateChannelsAndMarkAsDelivered(false);
95
+ }
96
+ });
97
+ const refresh = useFreshCallback(async () => {
98
+ updateRefreshing(true);
99
+ await init(userId);
100
+ updateRefreshing(false);
101
+ });
102
+ const next = useFreshCallback(async () => {
103
+ var _collectionRef$curren7;
104
+
105
+ if ((_collectionRef$curren7 = collectionRef.current) !== null && _collectionRef$curren7 !== void 0 && _collectionRef$curren7.hasMore) {
106
+ var _collectionRef$curren8;
107
+
108
+ await ((_collectionRef$curren8 = collectionRef.current) === null || _collectionRef$curren8 === void 0 ? void 0 : _collectionRef$curren8.loadMore());
109
+ updateChannelsAndMarkAsDelivered(true);
110
+ }
111
+ });
112
+ return {
113
+ loading,
114
+ groupChannels,
115
+ refresh,
116
+ refreshing,
117
+ next
118
+ };
119
+ };
120
+ //# sourceMappingURL=useGroupChannelListWithCollection.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,104 @@
1
+ import { useRef } from 'react';
2
+ import { useAsyncEffect, useFreshCallback } from '@sendbird/uikit-utils';
3
+ import { useAppFeatures } from '../../common/useAppFeatures';
4
+ import { useChannelHandler } from '../../handler/useChannelHandler';
5
+ import { useGroupChannelListReducer } from './reducer';
6
+ const HOOK_NAME = 'useGroupChannelListWithQuery';
7
+
8
+ const createGroupChannelListQuery = (sdk, queryCreator) => {
9
+ const passedQuery = queryCreator === null || queryCreator === void 0 ? void 0 : queryCreator();
10
+ if (passedQuery) return passedQuery;
11
+ const defaultOptions = {
12
+ includeEmpty: false,
13
+ limit: 20,
14
+ order: 'latest_last_message'
15
+ };
16
+ const defaultQuery = sdk.GroupChannel.createMyGroupChannelListQuery();
17
+ defaultQuery.limit = defaultOptions.limit;
18
+ defaultQuery.order = defaultOptions.order;
19
+ defaultQuery.includeEmpty = defaultOptions.includeEmpty;
20
+ return defaultQuery;
21
+ };
22
+
23
+ export const useGroupChannelListWithQuery = (sdk, userId, options) => {
24
+ const {
25
+ deliveryReceiptEnabled
26
+ } = useAppFeatures(sdk);
27
+ const queryRef = useRef();
28
+ const {
29
+ loading,
30
+ groupChannels,
31
+ refreshing,
32
+ updateChannels,
33
+ setChannels,
34
+ deleteChannels,
35
+ updateRefreshing,
36
+ updateLoading,
37
+ updateOrder
38
+ } = useGroupChannelListReducer();
39
+
40
+ const updateChannelsAndMarkAsDelivered = channels => {
41
+ updateChannels(channels);
42
+ if (deliveryReceiptEnabled) channels.forEach(channel => sdk.markAsDelivered(channel.url));
43
+ };
44
+
45
+ const init = useFreshCallback(async uid => {
46
+ if (uid) {
47
+ var _queryRef$current, _queryRef$current2;
48
+
49
+ queryRef.current = createGroupChannelListQuery(sdk, options === null || options === void 0 ? void 0 : options.queryCreator);
50
+ updateOrder((_queryRef$current = queryRef.current) === null || _queryRef$current === void 0 ? void 0 : _queryRef$current.order);
51
+
52
+ if ((_queryRef$current2 = queryRef.current) !== null && _queryRef$current2 !== void 0 && _queryRef$current2.hasNext) {
53
+ const channels = await queryRef.current.next();
54
+ setChannels(channels, true);
55
+ if (deliveryReceiptEnabled) channels.forEach(channel => sdk.markAsDelivered(channel.url));
56
+ }
57
+ }
58
+ });
59
+ useAsyncEffect(async () => {
60
+ updateLoading(true);
61
+ await init(userId);
62
+ updateLoading(false);
63
+ }, [init, userId]);
64
+ useChannelHandler(sdk, HOOK_NAME, {
65
+ onChannelChanged: channel => updateChannelsAndMarkAsDelivered([channel]),
66
+ onChannelFrozen: channel => updateChannels([channel]),
67
+ onChannelUnfrozen: channel => updateChannels([channel]),
68
+ onChannelMemberCountChanged: channels => updateChannels(channels),
69
+ onChannelDeleted: url => deleteChannels([url]),
70
+ onUserJoined: channel => updateChannelsAndMarkAsDelivered([channel]),
71
+ onUserLeft: (channel, user) => {
72
+ const isMe = user.userId === userId;
73
+ if (isMe) deleteChannels([channel.url]);else updateChannelsAndMarkAsDelivered([channel]);
74
+ },
75
+
76
+ onUserBanned(channel, user) {
77
+ const isMe = user.userId === userId;
78
+ if (isMe) deleteChannels([channel.url]);else updateChannelsAndMarkAsDelivered([channel]);
79
+ }
80
+
81
+ });
82
+ const refresh = useFreshCallback(async () => {
83
+ updateRefreshing(true);
84
+ await init(userId);
85
+ updateRefreshing(false);
86
+ });
87
+ const next = useFreshCallback(async () => {
88
+ var _queryRef$current3;
89
+
90
+ if ((_queryRef$current3 = queryRef.current) !== null && _queryRef$current3 !== void 0 && _queryRef$current3.hasNext) {
91
+ const channels = await queryRef.current.next();
92
+ setChannels(channels, false);
93
+ if (deliveryReceiptEnabled) channels.forEach(channel => sdk.markAsDelivered(channel.url));
94
+ }
95
+ });
96
+ return {
97
+ loading,
98
+ groupChannels,
99
+ refresh,
100
+ refreshing,
101
+ next
102
+ };
103
+ };
104
+ //# sourceMappingURL=useGroupChannelListWithQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useRef","useAsyncEffect","useFreshCallback","useAppFeatures","useChannelHandler","useGroupChannelListReducer","HOOK_NAME","createGroupChannelListQuery","sdk","queryCreator","passedQuery","defaultOptions","includeEmpty","limit","order","defaultQuery","GroupChannel","createMyGroupChannelListQuery","useGroupChannelListWithQuery","userId","options","deliveryReceiptEnabled","queryRef","loading","groupChannels","refreshing","updateChannels","setChannels","deleteChannels","updateRefreshing","updateLoading","updateOrder","updateChannelsAndMarkAsDelivered","channels","forEach","channel","markAsDelivered","url","init","uid","current","hasNext","next","onChannelChanged","onChannelFrozen","onChannelUnfrozen","onChannelMemberCountChanged","onChannelDeleted","onUserJoined","onUserLeft","user","isMe","onUserBanned","refresh"],"sources":["useGroupChannelListWithQuery.ts"],"sourcesContent":["import { useRef } from 'react';\nimport type Sendbird from 'sendbird';\n\nimport type { SendbirdChannel, SendbirdChatSDK } from '@sendbird/uikit-utils';\nimport { useAsyncEffect, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelList, UseGroupChannelListOptions } from '../../types';\nimport { useGroupChannelListReducer } from './reducer';\n\nconst HOOK_NAME = 'useGroupChannelListWithQuery';\n\nconst createGroupChannelListQuery = (\n sdk: SendbirdChatSDK,\n queryCreator: UseGroupChannelListOptions['queryCreator'],\n) => {\n const passedQuery = queryCreator?.();\n if (passedQuery) return passedQuery;\n\n const defaultOptions = {\n includeEmpty: false,\n limit: 20,\n order: 'latest_last_message',\n } as const;\n const defaultQuery = sdk.GroupChannel.createMyGroupChannelListQuery();\n defaultQuery.limit = defaultOptions.limit;\n defaultQuery.order = defaultOptions.order;\n defaultQuery.includeEmpty = defaultOptions.includeEmpty;\n return defaultQuery;\n};\n\nexport const useGroupChannelListWithQuery: UseGroupChannelList = (sdk, userId, options) => {\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n const queryRef = useRef<Sendbird.GroupChannelListQuery>();\n\n const {\n loading,\n groupChannels,\n refreshing,\n updateChannels,\n setChannels,\n deleteChannels,\n updateRefreshing,\n updateLoading,\n updateOrder,\n } = useGroupChannelListReducer();\n\n const updateChannelsAndMarkAsDelivered = (channels: SendbirdChannel[]) => {\n updateChannels(channels);\n if (deliveryReceiptEnabled) channels.forEach((channel) => sdk.markAsDelivered(channel.url));\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (uid) {\n queryRef.current = createGroupChannelListQuery(sdk, options?.queryCreator);\n updateOrder(queryRef.current?.order);\n\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n\n setChannels(channels, true);\n if (deliveryReceiptEnabled) channels.forEach((channel) => sdk.markAsDelivered(channel.url));\n }\n }\n });\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [init, userId]);\n\n useChannelHandler(sdk, HOOK_NAME, {\n onChannelChanged: (channel) => updateChannelsAndMarkAsDelivered([channel]),\n onChannelFrozen: (channel) => updateChannels([channel]),\n onChannelUnfrozen: (channel) => updateChannels([channel]),\n onChannelMemberCountChanged: (channels) => updateChannels(channels),\n onChannelDeleted: (url) => deleteChannels([url]),\n onUserJoined: (channel) => updateChannelsAndMarkAsDelivered([channel]),\n onUserLeft: (channel, user) => {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannelsAndMarkAsDelivered([channel]);\n },\n onUserBanned(channel, user) {\n const isMe = user.userId === userId;\n if (isMe) deleteChannels([channel.url]);\n else updateChannelsAndMarkAsDelivered([channel]);\n },\n });\n\n const refresh = useFreshCallback(async () => {\n updateRefreshing(true);\n await init(userId);\n updateRefreshing(false);\n });\n\n const next = useFreshCallback(async () => {\n if (queryRef.current?.hasNext) {\n const channels = await queryRef.current.next();\n setChannels(channels, false);\n if (deliveryReceiptEnabled) channels.forEach((channel) => sdk.markAsDelivered(channel.url));\n }\n });\n\n return {\n loading,\n groupChannels,\n refresh,\n refreshing,\n next,\n };\n};\n"],"mappings":"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"}
@@ -49,19 +49,18 @@ export const useGroupChannelMessagesWithCollection = (sdk, channel, userId, opti
49
49
  try {
50
50
  if (deliveryReceiptEnabled) sdk.markAsDelivered(activeChannel.url);
51
51
  } catch (e) {
52
- Logger.error(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);
52
+ Logger.warn(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);
53
53
  }
54
54
 
55
55
  try {
56
56
  await sdk.markAsReadWithChannelUrls([activeChannel.url]);
57
57
  } catch (e) {
58
- Logger.error(`[${HOOK_NAME}/channelMarkAs/Read]`, e);
58
+ Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);
59
59
  }
60
60
  };
61
61
 
62
62
  const updateChannel = channel => {
63
63
  if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {
64
- setActiveChannel(channel);
65
64
  forceUpdate();
66
65
  }
67
66
  };
@@ -86,7 +85,7 @@ export const useGroupChannelMessagesWithCollection = (sdk, channel, userId, opti
86
85
  if (messages !== null && messages !== void 0 && messages.length) callback === null || callback === void 0 ? void 0 : callback();
87
86
  }
88
87
  }).onApiResult((err, messages) => {
89
- if (err) Logger.error(`[${HOOK_NAME}/onApiResult]`, err);else {
88
+ if (err) Logger.warn(`[${HOOK_NAME}/onApiResult]`, err);else {
90
89
  Logger.debug(`[${HOOK_NAME}/onApiResult]`, 'message length:', messages.length);
91
90
  updateMessages(messages, true, sdk.currentUser.userId);
92
91
 
@@ -158,7 +157,7 @@ export const useGroupChannelMessagesWithCollection = (sdk, channel, userId, opti
158
157
  }
159
158
  }
160
159
 
161
- }, [sdk]);
160
+ });
162
161
  useEffect(() => {
163
162
  // NOTE: Cache read is heavy synchronous task, and it prevents smooth ui transition
164
163
  setTimeout(async () => {
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useRef","Logger","NOOP","isDifferentChannel","useForceUpdate","useIsMountedRef","useAppFeatures","useChannelHandler","useActiveGroupChannel","useGroupChannelMessagesReducer","createMessageCollection","sdk","channel","creator","collection","filter","MessageFilter","setLimit","setFilter","build","HOOK_NAME","useGroupChannelMessagesWithCollection","userId","options","isMounted","disposeManuallyAfterUnmounted","current","collectionRef","dispose","deliveryReceiptEnabled","activeChannel","setActiveChannel","forceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAs","markAsDelivered","url","e","error","markAsReadWithChannelUrls","updateChannel","isGroupChannel","init","uid","callback","collectionCreator","currentUser","initialize","MessageCollection","MessageCollectionInitPolicy","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","debug","length","pendingMessages","failedMessages","onApiResult","setMessageCollectionHandler","onMessagesAdded","_","onMessagesUpdated","onMessagesDeleted","msgIds","map","m","messageId","reqIds","reqId","onChannelDeleted","onChannelUpdated","onHugeGapDetected","onUserBanned","bannedUser","setTimeout","refresh","prev","hasPrevious","list","loadPrevious","next","hasNext","fetchedList","loadNext","push","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","sentMessage","sendFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","message","isUserMessage","resendUserMessage","isFileMessage","resendFileMessage","deleteMessage","sendingStatus","removeFailedMessages"],"sources":["useGroupChannelMessagesWithCollection.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nimport type {\n SendbirdChannel,\n SendbirdChatSDK,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessageCollection,\n SendbirdUserMessage,\n} from '@sendbird/uikit-utils';\nimport { Logger, NOOP, isDifferentChannel, useForceUpdate, useIsMountedRef } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useActiveGroupChannel } from '../useActiveGroupChannel';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageCollection = (\n sdk: SendbirdChatSDK,\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['collectionCreator'],\n) => {\n if (creator) return creator();\n const collection = channel.createMessageCollection();\n const filter = new sdk.MessageFilter();\n return collection.setLimit(100).setFilter(filter).build();\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithCollection';\n\n// FIXME: MessageCollection event handler bug, initialize(run async addObserver) -> dispose -> removeObserver -> addObserver called\nexport const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const isMounted = useIsMountedRef();\n const disposeManuallyAfterUnmounted = () => {\n if (!isMounted.current && collectionRef.current) collectionRef.current.dispose();\n };\n\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const collectionRef = useRef<SendbirdMessageCollection>();\n\n // NOTE: We cannot determine the channel object of Sendbird SDK is stale or not, so force update af\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAs = async () => {\n try {\n if (deliveryReceiptEnabled) sdk.markAsDelivered(activeChannel.url);\n } catch (e) {\n Logger.error(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);\n }\n try {\n await sdk.markAsReadWithChannelUrls([activeChannel.url]);\n } catch (e) {\n Logger.error(`[${HOOK_NAME}/channelMarkAs/Read]`, e);\n }\n };\n\n const updateChannel = (channel: SendbirdChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n setActiveChannel(channel);\n forceUpdate();\n }\n };\n\n const init = useCallback(\n async (uid?: string, callback?: () => void) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createMessageCollection(sdk, activeChannel, options?.collectionCreator);\n updateNextMessages([], true, sdk.currentUser.userId);\n channelMarkAs();\n\n collectionRef.current\n .initialize(sdk.MessageCollection.MessageCollectionInitPolicy.CACHE_AND_REPLACE_BY_API)\n .onCacheResult((err, messages) => {\n if (err) sdk.isCacheEnabled && Logger.error(`[${HOOK_NAME}/onCacheResult]`, err);\n else {\n Logger.debug(`[${HOOK_NAME}/onCacheResult]`, 'message length:', messages.length);\n updateMessages(messages, true, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n if (messages?.length) callback?.();\n }\n })\n .onApiResult((err, messages) => {\n if (err) Logger.error(`[${HOOK_NAME}/onApiResult]`, err);\n else {\n Logger.debug(`[${HOOK_NAME}/onApiResult]`, 'message length:', messages.length);\n updateMessages(messages, true, sdk.currentUser.userId);\n if (sdk.isCacheEnabled) {\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n }\n }\n callback?.();\n });\n\n collectionRef.current.setMessageCollectionHandler({\n onMessagesAdded(_, channel, messages) {\n disposeManuallyAfterUnmounted();\n channelMarkAs();\n updateNextMessages(messages, false, sdk.currentUser.userId);\n updateChannel(channel);\n },\n onMessagesUpdated(_, channel, messages) {\n disposeManuallyAfterUnmounted();\n updateMessages(messages, false, sdk.currentUser.userId);\n updateChannel(channel);\n },\n onMessagesDeleted(_, channel, messages) {\n disposeManuallyAfterUnmounted();\n const msgIds = messages.map((m) => m.messageId);\n const reqIds = messages\n .filter((m): m is SendbirdUserMessage | SendbirdFileMessage => 'reqId' in m)\n .map((m) => m.reqId);\n\n deleteMessages(msgIds, reqIds);\n deleteNextMessages(msgIds, reqIds);\n updateChannel(channel);\n },\n onChannelDeleted() {\n disposeManuallyAfterUnmounted();\n options?.onChannelDeleted?.();\n },\n onChannelUpdated(_, channel) {\n disposeManuallyAfterUnmounted();\n updateChannel(channel);\n },\n onHugeGapDetected() {\n disposeManuallyAfterUnmounted();\n init(uid);\n },\n });\n }\n },\n [sdk, activeChannel.url, options?.collectionCreator],\n );\n\n useChannelHandler(\n sdk,\n HOOK_NAME,\n {\n onUserBanned(channel, bannedUser) {\n disposeManuallyAfterUnmounted();\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n setActiveChannel(channel);\n forceUpdate();\n }\n }\n },\n },\n [sdk],\n );\n\n useEffect(() => {\n // NOTE: Cache read is heavy synchronous task, and it prevents smooth ui transition\n setTimeout(async () => {\n updateLoading(true);\n init(userId, () => updateLoading(false));\n }, 0);\n }, [init, userId]);\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useCallback(async () => {\n updateRefreshing(true);\n init(userId, () => updateRefreshing(false));\n }, [init, userId]);\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasPrevious) {\n try {\n const list = await collectionRef.current?.loadPrevious();\n updateMessages(list, false, sdk.currentUser.userId);\n } catch {}\n }\n }, []);\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useCallback(async () => {\n const list = [];\n if (collectionRef.current && collectionRef.current?.hasNext) {\n try {\n const fetchedList = await collectionRef.current?.loadNext();\n list.push(...fetchedList);\n } catch {}\n }\n if (nextMessages.length > 0) {\n list.push(...nextMessages);\n }\n if (list.length > 0) {\n updateMessages(list, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n }, [nextMessages.length]);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n const pendingMessage = activeChannel.sendUserMessage(params, (sentMessage, error) => {\n if (error) reject(error);\n else {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n });\n\n onPending?.(pendingMessage);\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n });\n },\n [activeChannel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n const pendingMessage = activeChannel.sendFileMessage(params, (sentMessage, error) => {\n if (error) reject(error);\n else {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage as SendbirdFileMessage);\n }\n });\n\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n });\n },\n [activeChannel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateUserMessage(messageId, params, NOOP);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateFileMessage(messageId, params, NOOP);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return activeChannel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser.userId);\n },\n [activeChannel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await activeChannel.deleteMessage(message);\n if (message.isFileMessage()) await activeChannel.deleteMessage(message);\n } else {\n try {\n await collectionRef.current?.removeFailedMessages([message]);\n } finally {\n deleteMessages([message.messageId], [message.reqId]);\n }\n }\n },\n [activeChannel],\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n activeChannel,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["useCallback","useEffect","useRef","Logger","NOOP","isDifferentChannel","useForceUpdate","useIsMountedRef","useAppFeatures","useChannelHandler","useActiveGroupChannel","useGroupChannelMessagesReducer","createMessageCollection","sdk","channel","creator","collection","filter","MessageFilter","setLimit","setFilter","build","HOOK_NAME","useGroupChannelMessagesWithCollection","userId","options","isMounted","disposeManuallyAfterUnmounted","current","collectionRef","dispose","deliveryReceiptEnabled","activeChannel","setActiveChannel","forceUpdate","loading","refreshing","messages","nextMessages","newMessagesFromMembers","updateMessages","updateNextMessages","deleteNextMessages","deleteMessages","updateLoading","updateRefreshing","sortComparator","channelMarkAs","markAsDelivered","url","e","warn","markAsReadWithChannelUrls","updateChannel","isGroupChannel","init","uid","callback","collectionCreator","currentUser","initialize","MessageCollection","MessageCollectionInitPolicy","CACHE_AND_REPLACE_BY_API","onCacheResult","err","isCacheEnabled","error","debug","length","pendingMessages","failedMessages","onApiResult","setMessageCollectionHandler","onMessagesAdded","_","onMessagesUpdated","onMessagesDeleted","msgIds","map","m","messageId","reqIds","reqId","onChannelDeleted","onChannelUpdated","onHugeGapDetected","onUserBanned","bannedUser","setTimeout","refresh","prev","hasPrevious","list","loadPrevious","next","hasNext","fetchedList","loadNext","push","sendUserMessage","params","onPending","Promise","resolve","reject","pendingMessage","sentMessage","sendFileMessage","updateUserMessage","updatedMessage","updateFileMessage","resendMessage","failedMessage","message","isUserMessage","resendUserMessage","isFileMessage","resendFileMessage","deleteMessage","sendingStatus","removeFailedMessages"],"sources":["useGroupChannelMessagesWithCollection.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nimport type {\n SendbirdChannel,\n SendbirdChatSDK,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessageCollection,\n SendbirdUserMessage,\n} from '@sendbird/uikit-utils';\nimport { Logger, NOOP, isDifferentChannel, useForceUpdate, useIsMountedRef } from '@sendbird/uikit-utils';\n\nimport { useAppFeatures } from '../../common/useAppFeatures';\nimport { useChannelHandler } from '../../handler/useChannelHandler';\nimport type { UseGroupChannelMessages, UseGroupChannelMessagesOptions } from '../../types';\nimport { useActiveGroupChannel } from '../useActiveGroupChannel';\nimport { useGroupChannelMessagesReducer } from './reducer';\n\nconst createMessageCollection = (\n sdk: SendbirdChatSDK,\n channel: SendbirdGroupChannel,\n creator?: UseGroupChannelMessagesOptions['collectionCreator'],\n) => {\n if (creator) return creator();\n const collection = channel.createMessageCollection();\n const filter = new sdk.MessageFilter();\n return collection.setLimit(100).setFilter(filter).build();\n};\n\nconst HOOK_NAME = 'useGroupChannelMessagesWithCollection';\n\n// FIXME: MessageCollection event handler bug, initialize(run async addObserver) -> dispose -> removeObserver -> addObserver called\nexport const useGroupChannelMessagesWithCollection: UseGroupChannelMessages = (sdk, channel, userId, options) => {\n const isMounted = useIsMountedRef();\n const disposeManuallyAfterUnmounted = () => {\n if (!isMounted.current && collectionRef.current) collectionRef.current.dispose();\n };\n\n const { deliveryReceiptEnabled } = useAppFeatures(sdk);\n\n const collectionRef = useRef<SendbirdMessageCollection>();\n\n // NOTE: We cannot determine the channel object of Sendbird SDK is stale or not, so force update af\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n const forceUpdate = useForceUpdate();\n\n const {\n loading,\n refreshing,\n messages,\n nextMessages,\n newMessagesFromMembers,\n updateMessages,\n updateNextMessages,\n deleteNextMessages,\n deleteMessages,\n updateLoading,\n updateRefreshing,\n } = useGroupChannelMessagesReducer(userId, options?.sortComparator);\n\n const channelMarkAs = async () => {\n try {\n if (deliveryReceiptEnabled) sdk.markAsDelivered(activeChannel.url);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);\n }\n try {\n await sdk.markAsReadWithChannelUrls([activeChannel.url]);\n } catch (e) {\n Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);\n }\n };\n\n const updateChannel = (channel: SendbirdChannel) => {\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n forceUpdate();\n }\n };\n\n const init = useCallback(\n async (uid?: string, callback?: () => void) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createMessageCollection(sdk, activeChannel, options?.collectionCreator);\n updateNextMessages([], true, sdk.currentUser.userId);\n channelMarkAs();\n\n collectionRef.current\n .initialize(sdk.MessageCollection.MessageCollectionInitPolicy.CACHE_AND_REPLACE_BY_API)\n .onCacheResult((err, messages) => {\n if (err) sdk.isCacheEnabled && Logger.error(`[${HOOK_NAME}/onCacheResult]`, err);\n else {\n Logger.debug(`[${HOOK_NAME}/onCacheResult]`, 'message length:', messages.length);\n updateMessages(messages, true, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n if (messages?.length) callback?.();\n }\n })\n .onApiResult((err, messages) => {\n if (err) Logger.warn(`[${HOOK_NAME}/onApiResult]`, err);\n else {\n Logger.debug(`[${HOOK_NAME}/onApiResult]`, 'message length:', messages.length);\n updateMessages(messages, true, sdk.currentUser.userId);\n if (sdk.isCacheEnabled) {\n updateMessages(collectionRef.current?.pendingMessages ?? [], false, sdk.currentUser.userId);\n updateMessages(collectionRef.current?.failedMessages ?? [], false, sdk.currentUser.userId);\n }\n }\n callback?.();\n });\n\n collectionRef.current.setMessageCollectionHandler({\n onMessagesAdded(_, channel, messages) {\n disposeManuallyAfterUnmounted();\n channelMarkAs();\n updateNextMessages(messages, false, sdk.currentUser.userId);\n updateChannel(channel);\n },\n onMessagesUpdated(_, channel, messages) {\n disposeManuallyAfterUnmounted();\n updateMessages(messages, false, sdk.currentUser.userId);\n updateChannel(channel);\n },\n onMessagesDeleted(_, channel, messages) {\n disposeManuallyAfterUnmounted();\n const msgIds = messages.map((m) => m.messageId);\n const reqIds = messages\n .filter((m): m is SendbirdUserMessage | SendbirdFileMessage => 'reqId' in m)\n .map((m) => m.reqId);\n\n deleteMessages(msgIds, reqIds);\n deleteNextMessages(msgIds, reqIds);\n updateChannel(channel);\n },\n onChannelDeleted() {\n disposeManuallyAfterUnmounted();\n options?.onChannelDeleted?.();\n },\n onChannelUpdated(_, channel) {\n disposeManuallyAfterUnmounted();\n updateChannel(channel);\n },\n onHugeGapDetected() {\n disposeManuallyAfterUnmounted();\n init(uid);\n },\n });\n }\n },\n [sdk, activeChannel.url, options?.collectionCreator],\n );\n\n useChannelHandler(sdk, HOOK_NAME, {\n onUserBanned(channel, bannedUser) {\n disposeManuallyAfterUnmounted();\n if (channel.isGroupChannel() && !isDifferentChannel(channel, activeChannel)) {\n if (bannedUser.userId === sdk.currentUser.userId) {\n options?.onChannelDeleted?.();\n } else {\n setActiveChannel(channel);\n forceUpdate();\n }\n }\n },\n });\n\n useEffect(() => {\n // NOTE: Cache read is heavy synchronous task, and it prevents smooth ui transition\n setTimeout(async () => {\n updateLoading(true);\n init(userId, () => updateLoading(false));\n }, 0);\n }, [init, userId]);\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n const refresh: ReturnType<UseGroupChannelMessages>['refresh'] = useCallback(async () => {\n updateRefreshing(true);\n init(userId, () => updateRefreshing(false));\n }, [init, userId]);\n\n const prev: ReturnType<UseGroupChannelMessages>['prev'] = useCallback(async () => {\n if (collectionRef.current && collectionRef.current?.hasPrevious) {\n try {\n const list = await collectionRef.current?.loadPrevious();\n updateMessages(list, false, sdk.currentUser.userId);\n } catch {}\n }\n }, []);\n\n const next: ReturnType<UseGroupChannelMessages>['next'] = useCallback(async () => {\n const list = [];\n if (collectionRef.current && collectionRef.current?.hasNext) {\n try {\n const fetchedList = await collectionRef.current?.loadNext();\n list.push(...fetchedList);\n } catch {}\n }\n if (nextMessages.length > 0) {\n list.push(...nextMessages);\n }\n if (list.length > 0) {\n updateMessages(list, false, sdk.currentUser.userId);\n updateNextMessages([], true, sdk.currentUser.userId);\n }\n }, [nextMessages.length]);\n\n const sendUserMessage: ReturnType<UseGroupChannelMessages>['sendUserMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n const pendingMessage = activeChannel.sendUserMessage(params, (sentMessage, error) => {\n if (error) reject(error);\n else {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage);\n }\n });\n\n onPending?.(pendingMessage);\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n });\n },\n [activeChannel],\n );\n const sendFileMessage: ReturnType<UseGroupChannelMessages>['sendFileMessage'] = useCallback(\n (params, onPending) => {\n return new Promise((resolve, reject) => {\n const pendingMessage = activeChannel.sendFileMessage(params, (sentMessage, error) => {\n if (error) reject(error);\n else {\n updateMessages([sentMessage], false, sdk.currentUser.userId);\n resolve(sentMessage as SendbirdFileMessage);\n }\n });\n\n updateMessages([pendingMessage], false, sdk.currentUser.userId);\n onPending?.(pendingMessage);\n });\n },\n [activeChannel],\n );\n const updateUserMessage: ReturnType<UseGroupChannelMessages>['updateUserMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateUserMessage(messageId, params, NOOP);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const updateFileMessage: ReturnType<UseGroupChannelMessages>['updateFileMessage'] = useCallback(\n async (messageId, params) => {\n const updatedMessage = await activeChannel.updateFileMessage(messageId, params, NOOP);\n updateMessages([updatedMessage], false, sdk.currentUser.userId);\n return updatedMessage;\n },\n [activeChannel],\n );\n const resendMessage: ReturnType<UseGroupChannelMessages>['resendMessage'] = useCallback(\n async (failedMessage) => {\n const message = await (() => {\n if (failedMessage.isUserMessage()) return activeChannel.resendUserMessage(failedMessage);\n if (failedMessage.isFileMessage()) return activeChannel.resendFileMessage(failedMessage);\n return null;\n })();\n\n if (message) updateMessages([message], false, sdk.currentUser.userId);\n },\n [activeChannel],\n );\n const deleteMessage: ReturnType<UseGroupChannelMessages>['deleteMessage'] = useCallback(\n async (message) => {\n if (message.sendingStatus === 'succeeded') {\n if (message.isUserMessage()) await activeChannel.deleteMessage(message);\n if (message.isFileMessage()) await activeChannel.deleteMessage(message);\n } else {\n try {\n await collectionRef.current?.removeFailedMessages([message]);\n } finally {\n deleteMessages([message.messageId], [message.reqId]);\n }\n }\n },\n [activeChannel],\n );\n\n return {\n loading,\n refreshing,\n refresh,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendUserMessage,\n sendFileMessage,\n updateUserMessage,\n updateFileMessage,\n resendMessage,\n deleteMessage,\n activeChannel,\n };\n};\n"],"mappings":"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"}
@@ -43,13 +43,13 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
43
43
  try {
44
44
  if (deliveryReceiptEnabled) sdk.markAsDelivered(activeChannel.url);
45
45
  } catch (e) {
46
- Logger.error(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);
46
+ Logger.warn(`[${HOOK_NAME}/channelMarkAs/Delivered]`, e);
47
47
  }
48
48
 
49
49
  try {
50
50
  await sdk.markAsReadWithChannelUrls([activeChannel.url]);
51
51
  } catch (e) {
52
- Logger.error(`[${HOOK_NAME}/channelMarkAs/Read]`, e);
52
+ Logger.warn(`[${HOOK_NAME}/channelMarkAs/Read]`, e);
53
53
  }
54
54
  };
55
55
 
@@ -136,7 +136,7 @@ export const useGroupChannelMessagesWithQuery = (sdk, channel, userId, options)
136
136
  }
137
137
  }
138
138
 
139
- }, [sdk]);
139
+ });
140
140
  useAsyncEffect(async () => {
141
141
  updateLoading(true);
142
142
  await init(userId);