@sendbird/uikit-chat-hooks 2.4.1 → 2.5.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/lib/commonjs/channel/useChannelMessagesReducer.js +153 -0
- package/lib/commonjs/channel/useChannelMessagesReducer.js.map +1 -0
- package/lib/commonjs/channel/useGroupChannel.js +0 -4
- package/lib/commonjs/channel/useGroupChannel.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelList/index.js +0 -5
- package/lib/commonjs/channel/useGroupChannelList/index.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelList/reducer.js +12 -29
- package/lib/commonjs/channel/useGroupChannelList/reducer.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js +1 -22
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js +1 -18
- package/lib/commonjs/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/index.js +0 -5
- package/lib/commonjs/channel/useGroupChannelMessages/index.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +172 -131
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +76 -73
- package/lib/commonjs/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannel.js +0 -4
- package/lib/commonjs/channel/useOpenChannel.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannelList/index.js +0 -3
- package/lib/commonjs/channel/useOpenChannelList/index.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannelList/reducer.js +2 -21
- package/lib/commonjs/channel/useOpenChannelList/reducer.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js +1 -22
- package/lib/commonjs/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannelMessages/index.js +0 -3
- package/lib/commonjs/channel/useOpenChannelMessages/index.js.map +1 -1
- package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +128 -57
- package/lib/commonjs/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
- package/lib/commonjs/common/useAppFeatures.js +0 -3
- package/lib/commonjs/common/useAppFeatures.js.map +1 -1
- package/lib/commonjs/common/useMessageOutgoingStatus.js +0 -11
- package/lib/commonjs/common/useMessageOutgoingStatus.js.map +1 -1
- package/lib/commonjs/common/usePushTrigger.js +0 -6
- package/lib/commonjs/common/usePushTrigger.js.map +1 -1
- package/lib/commonjs/common/useTotalUnreadMessageCount.js +0 -7
- package/lib/commonjs/common/useTotalUnreadMessageCount.js.map +1 -1
- package/lib/commonjs/common/useUserList.js +5 -20
- package/lib/commonjs/common/useUserList.js.map +1 -1
- package/lib/commonjs/handler/useChannelHandler.js +15 -41
- package/lib/commonjs/handler/useChannelHandler.js.map +1 -1
- package/lib/commonjs/handler/useConnectionHandler.js +14 -11
- package/lib/commonjs/handler/useConnectionHandler.js.map +1 -1
- package/lib/commonjs/handler/useUserEventHandler.js +0 -8
- package/lib/commonjs/handler/useUserEventHandler.js.map +1 -1
- package/lib/commonjs/index.js +0 -23
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/model/CustomQuery.js +0 -6
- package/lib/commonjs/model/CustomQuery.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/channel/useChannelMessagesReducer.js +146 -0
- package/lib/module/channel/useChannelMessagesReducer.js.map +1 -0
- package/lib/module/channel/useGroupChannel.js.map +1 -1
- package/lib/module/channel/useGroupChannelList/index.js.map +1 -1
- package/lib/module/channel/useGroupChannelList/reducer.js +12 -26
- package/lib/module/channel/useGroupChannelList/reducer.js.map +1 -1
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js +1 -15
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithCollection.js.map +1 -1
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js +1 -11
- package/lib/module/channel/useGroupChannelList/useGroupChannelListWithQuery.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/index.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js +174 -125
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.js.map +1 -1
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js +78 -70
- package/lib/module/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.js.map +1 -1
- package/lib/module/channel/useOpenChannel.js.map +1 -1
- package/lib/module/channel/useOpenChannelList/index.js.map +1 -1
- package/lib/module/channel/useOpenChannelList/reducer.js +2 -18
- package/lib/module/channel/useOpenChannelList/reducer.js.map +1 -1
- package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js +1 -17
- package/lib/module/channel/useOpenChannelList/useOpenChannelListWithQuery.js.map +1 -1
- package/lib/module/channel/useOpenChannelMessages/index.js.map +1 -1
- package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js +129 -53
- package/lib/module/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.js.map +1 -1
- package/lib/module/common/useAppFeatures.js.map +1 -1
- package/lib/module/common/useMessageOutgoingStatus.js +0 -6
- package/lib/module/common/useMessageOutgoingStatus.js.map +1 -1
- package/lib/module/common/usePushTrigger.js.map +1 -1
- package/lib/module/common/useTotalUnreadMessageCount.js +0 -1
- package/lib/module/common/useTotalUnreadMessageCount.js.map +1 -1
- package/lib/module/common/useUserList.js +5 -15
- package/lib/module/common/useUserList.js.map +1 -1
- package/lib/module/handler/useChannelHandler.js +15 -35
- package/lib/module/handler/useChannelHandler.js.map +1 -1
- package/lib/module/handler/useConnectionHandler.js +15 -6
- package/lib/module/handler/useConnectionHandler.js.map +1 -1
- package/lib/module/handler/useUserEventHandler.js +0 -2
- package/lib/module/handler/useUserEventHandler.js.map +1 -1
- package/lib/module/index.js +0 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/model/CustomQuery.js +0 -4
- package/lib/module/model/CustomQuery.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/src/channel/useChannelMessagesReducer.d.ts +18 -0
- package/lib/typescript/src/channel/useGroupChannelList/reducer.d.ts +1 -1
- package/lib/typescript/src/common/useUserList.d.ts +1 -1
- package/lib/typescript/src/handler/useChannelHandler.d.ts +1 -1
- package/lib/typescript/src/handler/useConnectionHandler.d.ts +1 -2
- package/lib/typescript/src/index.d.ts +0 -1
- package/lib/typescript/src/types.d.ts +51 -20
- package/package.json +15 -10
- package/src/channel/useChannelMessagesReducer.ts +143 -0
- package/src/channel/useGroupChannelList/reducer.ts +11 -7
- package/src/channel/useGroupChannelList/useGroupChannelListWithCollection.ts +1 -1
- package/src/channel/useGroupChannelList/useGroupChannelListWithQuery.ts +1 -1
- package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithCollection.ts +174 -105
- package/src/channel/useGroupChannelMessages/useGroupChannelMessagesWithQuery.ts +90 -63
- package/src/channel/useOpenChannelList/useOpenChannelListWithQuery.ts +1 -5
- package/src/channel/useOpenChannelMessages/useOpenChannelMessagesWithQuery.ts +143 -26
- package/src/common/useUserList.ts +4 -4
- package/src/handler/useChannelHandler.ts +11 -24
- package/src/handler/useConnectionHandler.ts +11 -5
- package/src/index.ts +0 -1
- package/src/types.ts +58 -20
- package/lib/commonjs/channel/useGroupChannelMessages/reducer.js +0 -154
- package/lib/commonjs/channel/useGroupChannelMessages/reducer.js.map +0 -1
- package/lib/commonjs/channel/useOpenChannelMessages/reducer.js +0 -154
- package/lib/commonjs/channel/useOpenChannelMessages/reducer.js.map +0 -1
- package/lib/commonjs/common/useTotalUnreadChannelCount.js +0 -29
- package/lib/commonjs/common/useTotalUnreadChannelCount.js.map +0 -1
- package/lib/module/channel/useGroupChannelMessages/reducer.js +0 -144
- package/lib/module/channel/useGroupChannelMessages/reducer.js.map +0 -1
- package/lib/module/channel/useOpenChannelMessages/reducer.js +0 -144
- package/lib/module/channel/useOpenChannelMessages/reducer.js.map +0 -1
- package/lib/module/common/useTotalUnreadChannelCount.js +0 -17
- package/lib/module/common/useTotalUnreadChannelCount.js.map +0 -1
- package/lib/typescript/src/channel/useGroupChannelMessages/reducer.d.ts +0 -15
- package/lib/typescript/src/channel/useOpenChannelMessages/reducer.d.ts +0 -15
- package/lib/typescript/src/common/useTotalUnreadChannelCount.d.ts +0 -6
- package/src/channel/useGroupChannelMessages/reducer.ts +0 -125
- package/src/channel/useOpenChannelMessages/reducer.ts +0 -125
- package/src/common/useTotalUnreadChannelCount.ts +0 -26
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { useReducer } from 'react';
|
|
2
|
+
import { arrayToMapWithGetter, getMessageUniqId, isNewMessage, isSendableMessage, useIIFE } from '@sendbird/uikit-utils';
|
|
3
|
+
const defaultReducer = (_ref, action) => {
|
|
4
|
+
let {
|
|
5
|
+
...draft
|
|
6
|
+
} = _ref;
|
|
7
|
+
switch (action.type) {
|
|
8
|
+
case 'update_refreshing':
|
|
9
|
+
{
|
|
10
|
+
draft['refreshing'] = action.value.status;
|
|
11
|
+
return draft;
|
|
12
|
+
}
|
|
13
|
+
case 'update_loading':
|
|
14
|
+
{
|
|
15
|
+
draft['loading'] = action.value.status;
|
|
16
|
+
return draft;
|
|
17
|
+
}
|
|
18
|
+
case 'update_messages':
|
|
19
|
+
{
|
|
20
|
+
if (action.value.clearBeforeAction) {
|
|
21
|
+
draft['messageMap'] = arrayToMapWithGetter(action.value.messages, getMessageUniqId);
|
|
22
|
+
} else {
|
|
23
|
+
// Remove existing messages before update for prevent duplicate display
|
|
24
|
+
const messageKeys = action.value.messages.map(it => isSendableMessage(it) ? [it.messageId, it.reqId] : [it.messageId]).flat();
|
|
25
|
+
messageKeys.forEach(key => delete draft['messageMap'][key]);
|
|
26
|
+
draft['messageMap'] = {
|
|
27
|
+
...draft['messageMap'],
|
|
28
|
+
...arrayToMapWithGetter(action.value.messages, getMessageUniqId)
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return draft;
|
|
32
|
+
}
|
|
33
|
+
case 'update_new_messages':
|
|
34
|
+
{
|
|
35
|
+
const newMessages = action.value.messages.filter(it => isNewMessage(it, action.value.currentUserId));
|
|
36
|
+
if (action.value.clearBeforeAction) {
|
|
37
|
+
draft['newMessageMap'] = arrayToMapWithGetter(newMessages, getMessageUniqId);
|
|
38
|
+
} else {
|
|
39
|
+
// Remove existing messages before update for prevent duplicate display
|
|
40
|
+
const messageKeys = newMessages.map(it => it.messageId);
|
|
41
|
+
messageKeys.forEach(key => delete draft['newMessageMap'][key]);
|
|
42
|
+
draft['newMessageMap'] = {
|
|
43
|
+
...draft['newMessageMap'],
|
|
44
|
+
...arrayToMapWithGetter(newMessages, getMessageUniqId)
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
return draft;
|
|
48
|
+
}
|
|
49
|
+
case 'delete_messages':
|
|
50
|
+
case 'delete_new_messages':
|
|
51
|
+
{
|
|
52
|
+
const key = action.type === 'delete_messages' ? 'messageMap' : 'newMessageMap';
|
|
53
|
+
draft[key] = {
|
|
54
|
+
...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
|
+
export const useChannelMessagesReducer = sortComparator => {
|
|
63
|
+
const [{
|
|
64
|
+
loading,
|
|
65
|
+
refreshing,
|
|
66
|
+
messageMap,
|
|
67
|
+
newMessageMap
|
|
68
|
+
}, dispatch] = useReducer(defaultReducer, {
|
|
69
|
+
loading: true,
|
|
70
|
+
refreshing: false,
|
|
71
|
+
messageMap: {},
|
|
72
|
+
newMessageMap: {}
|
|
73
|
+
});
|
|
74
|
+
const updateMessages = (messages, clearBeforeAction, currentUserId) => {
|
|
75
|
+
dispatch({
|
|
76
|
+
type: 'update_messages',
|
|
77
|
+
value: {
|
|
78
|
+
messages,
|
|
79
|
+
clearBeforeAction,
|
|
80
|
+
currentUserId
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
const deleteMessages = (messageIds, reqIds) => {
|
|
85
|
+
dispatch({
|
|
86
|
+
type: 'delete_messages',
|
|
87
|
+
value: {
|
|
88
|
+
messageIds,
|
|
89
|
+
reqIds
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
const updateNewMessages = (messages, clearBeforeAction, currentUserId) => {
|
|
94
|
+
dispatch({
|
|
95
|
+
type: 'update_new_messages',
|
|
96
|
+
value: {
|
|
97
|
+
messages,
|
|
98
|
+
clearBeforeAction,
|
|
99
|
+
currentUserId
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
const deleteNewMessages = (messageIds, reqIds) => {
|
|
104
|
+
dispatch({
|
|
105
|
+
type: 'delete_new_messages',
|
|
106
|
+
value: {
|
|
107
|
+
messageIds,
|
|
108
|
+
reqIds
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
const updateLoading = status => {
|
|
113
|
+
dispatch({
|
|
114
|
+
type: 'update_loading',
|
|
115
|
+
value: {
|
|
116
|
+
status
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
const updateRefreshing = status => {
|
|
121
|
+
dispatch({
|
|
122
|
+
type: 'update_refreshing',
|
|
123
|
+
value: {
|
|
124
|
+
status
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
const messages = useIIFE(() => {
|
|
129
|
+
if (sortComparator) return Object.values(messageMap).sort(sortComparator);
|
|
130
|
+
return Object.values(messageMap);
|
|
131
|
+
});
|
|
132
|
+
const newMessages = Object.values(newMessageMap);
|
|
133
|
+
return {
|
|
134
|
+
updateLoading,
|
|
135
|
+
updateRefreshing,
|
|
136
|
+
updateMessages,
|
|
137
|
+
deleteMessages,
|
|
138
|
+
loading,
|
|
139
|
+
refreshing,
|
|
140
|
+
messages,
|
|
141
|
+
newMessages,
|
|
142
|
+
updateNewMessages,
|
|
143
|
+
deleteNewMessages
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
//# sourceMappingURL=useChannelMessagesReducer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useReducer","arrayToMapWithGetter","getMessageUniqId","isNewMessage","isSendableMessage","useIIFE","defaultReducer","_ref","action","draft","type","value","status","clearBeforeAction","messages","messageKeys","map","it","messageId","reqId","flat","forEach","key","newMessages","filter","currentUserId","messageIds","msgId","reqIds","useChannelMessagesReducer","sortComparator","loading","refreshing","messageMap","newMessageMap","dispatch","updateMessages","deleteMessages","updateNewMessages","deleteNewMessages","updateLoading","updateRefreshing","Object","values","sort"],"sources":["useChannelMessagesReducer.ts"],"sourcesContent":["import { useReducer } from 'react';\n\nimport type { SendbirdBaseMessage } from '@sendbird/uikit-utils';\nimport {\n SendbirdMessage,\n arrayToMapWithGetter,\n getMessageUniqId,\n isNewMessage,\n isSendableMessage,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\ntype Options = {\n sortComparator?: (a: SendbirdMessage, b: SendbirdMessage) => number;\n};\n\ntype Action =\n | {\n type: 'update_loading' | 'update_refreshing';\n value: { status: boolean };\n }\n | {\n type: 'update_messages' | 'update_new_messages';\n value: { messages: SendbirdBaseMessage[]; clearBeforeAction: boolean; currentUserId?: string };\n }\n | {\n type: 'delete_messages' | 'delete_new_messages';\n value: { messageIds: number[]; reqIds: string[] };\n };\n\ntype State = {\n loading: boolean;\n refreshing: boolean;\n messageMap: Record<string, SendbirdBaseMessage>;\n newMessageMap: Record<string, SendbirdBaseMessage>;\n};\n\nconst defaultReducer = ({ ...draft }: State, action: Action) => {\n switch (action.type) {\n case 'update_refreshing': {\n draft['refreshing'] = action.value.status;\n return draft;\n }\n case 'update_loading': {\n draft['loading'] = action.value.status;\n return draft;\n }\n case 'update_messages': {\n if (action.value.clearBeforeAction) {\n draft['messageMap'] = arrayToMapWithGetter(action.value.messages, getMessageUniqId);\n } else {\n // Remove existing messages before update for prevent duplicate display\n const messageKeys = action.value.messages\n .map((it) => (isSendableMessage(it) ? [it.messageId, it.reqId] : [it.messageId]))\n .flat();\n messageKeys.forEach((key) => delete draft['messageMap'][key]);\n\n draft['messageMap'] = {\n ...draft['messageMap'],\n ...arrayToMapWithGetter(action.value.messages, getMessageUniqId),\n };\n }\n\n return draft;\n }\n case 'update_new_messages': {\n const newMessages = action.value.messages.filter((it) => isNewMessage(it, action.value.currentUserId));\n\n if (action.value.clearBeforeAction) {\n draft['newMessageMap'] = arrayToMapWithGetter(newMessages, getMessageUniqId);\n } else {\n // Remove existing messages before update for prevent duplicate display\n const messageKeys = newMessages.map((it) => it.messageId);\n messageKeys.forEach((key) => delete draft['newMessageMap'][key]);\n\n draft['newMessageMap'] = {\n ...draft['newMessageMap'],\n ...arrayToMapWithGetter(newMessages, getMessageUniqId),\n };\n }\n\n return draft;\n }\n case 'delete_messages':\n case 'delete_new_messages': {\n const key = action.type === 'delete_messages' ? 'messageMap' : 'newMessageMap';\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 useChannelMessagesReducer = (sortComparator?: Options['sortComparator']) => {\n const [{ loading, refreshing, messageMap, newMessageMap }, dispatch] = useReducer(defaultReducer, {\n loading: true,\n refreshing: false,\n messageMap: {},\n newMessageMap: {},\n });\n\n const updateMessages = (messages: SendbirdBaseMessage[], clearBeforeAction: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_messages', value: { messages, clearBeforeAction, currentUserId } });\n };\n const deleteMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_messages', value: { messageIds, reqIds } });\n };\n const updateNewMessages = (messages: SendbirdBaseMessage[], clearBeforeAction: boolean, currentUserId?: string) => {\n dispatch({ type: 'update_new_messages', value: { messages, clearBeforeAction, currentUserId } });\n };\n const deleteNewMessages = (messageIds: number[], reqIds: string[]) => {\n dispatch({ type: 'delete_new_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 newMessages = Object.values(newMessageMap);\n\n return {\n updateLoading,\n updateRefreshing,\n updateMessages,\n deleteMessages,\n\n loading,\n refreshing,\n messages,\n\n newMessages,\n updateNewMessages,\n deleteNewMessages,\n };\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","useAsyncEffect","useGroupChannel","sdk","channelUrl","channel","setChannel","loading","setLoading","error","setError","groupChannel","getChannel","e"],"sources":["useGroupChannel.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { SendbirdChatSDK, SendbirdGroupChannel, useAsyncEffect } from '@sendbird/uikit-utils';\n\nexport const useGroupChannel = (sdk: SendbirdChatSDK, channelUrl: string) => {\n const [channel, setChannel] = useState<SendbirdGroupChannel>();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<unknown>();\n\n useAsyncEffect(async () => {\n try {\n setChannel(await sdk.groupChannel.getChannel(channelUrl));\n } catch (e) {\n setError(e);\n } finally {\n setLoading(false);\n }\n }, []);\n\n return { channel, loading, error };\n};\n"],"mappings":"AAAA,SAASA,
|
|
1
|
+
{"version":3,"names":["useState","useAsyncEffect","useGroupChannel","sdk","channelUrl","channel","setChannel","loading","setLoading","error","setError","groupChannel","getChannel","e"],"sources":["useGroupChannel.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { SendbirdChatSDK, SendbirdGroupChannel, useAsyncEffect } from '@sendbird/uikit-utils';\n\nexport const useGroupChannel = (sdk: SendbirdChatSDK, channelUrl: string) => {\n const [channel, setChannel] = useState<SendbirdGroupChannel>();\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<unknown>();\n\n useAsyncEffect(async () => {\n try {\n setChannel(await sdk.groupChannel.getChannel(channelUrl));\n } catch (e) {\n setError(e);\n } finally {\n setLoading(false);\n }\n }, []);\n\n return { channel, loading, error };\n};\n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,OAAO;AAEhC,SAAgDC,cAAc,QAAQ,uBAAuB;AAE7F,OAAO,MAAMC,eAAe,GAAGA,CAACC,GAAoB,EAAEC,UAAkB,KAAK;EAC3E,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGN,QAAQ,EAAwB;EAC9D,MAAM,CAACO,OAAO,EAAEC,UAAU,CAAC,GAAGR,QAAQ,CAAC,IAAI,CAAC;EAC5C,MAAM,CAACS,KAAK,EAAEC,QAAQ,CAAC,GAAGV,QAAQ,EAAW;EAE7CC,cAAc,CAAC,YAAY;IACzB,IAAI;MACFK,UAAU,CAAC,MAAMH,GAAG,CAACQ,YAAY,CAACC,UAAU,CAACR,UAAU,CAAC,CAAC;IAC3D,CAAC,CAAC,OAAOS,CAAC,EAAE;MACVH,QAAQ,CAACG,CAAC,CAAC;IACb,CAAC,SAAS;MACRL,UAAU,CAAC,KAAK,CAAC;IACnB;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IAAEH,OAAO;IAAEE,OAAO;IAAEE;EAAM,CAAC;AACpC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Logger","useGroupChannelListWithCollection","useGroupChannelListWithQuery","useGroupChannelList","sdk","userId","options","isCacheEnabled","enableCollectionWithoutLocalCache","queryCreator","warn"],"sources":["index.ts"],"sourcesContent":["import { Logger } from '@sendbird/uikit-utils';\n\nimport type { UseGroupChannelList } from '../../types';\nimport { useGroupChannelListWithCollection } from './useGroupChannelListWithCollection';\nimport { useGroupChannelListWithQuery } from './useGroupChannelListWithQuery';\n\nexport const useGroupChannelList: UseGroupChannelList = (sdk, userId, options) => {\n if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {\n if (options?.queryCreator) Logger.warn('`queryCreator` is ignored, please use `collectionCreator` instead.');\n return useGroupChannelListWithCollection(sdk, userId, options);\n } else {\n return useGroupChannelListWithQuery(sdk, userId, options);\n }\n};\n"],"mappings":"AAAA,SAASA,
|
|
1
|
+
{"version":3,"names":["Logger","useGroupChannelListWithCollection","useGroupChannelListWithQuery","useGroupChannelList","sdk","userId","options","isCacheEnabled","enableCollectionWithoutLocalCache","queryCreator","warn"],"sources":["index.ts"],"sourcesContent":["import { Logger } from '@sendbird/uikit-utils';\n\nimport type { UseGroupChannelList } from '../../types';\nimport { useGroupChannelListWithCollection } from './useGroupChannelListWithCollection';\nimport { useGroupChannelListWithQuery } from './useGroupChannelListWithQuery';\n\nexport const useGroupChannelList: UseGroupChannelList = (sdk, userId, options) => {\n if (sdk.isCacheEnabled || options?.enableCollectionWithoutLocalCache) {\n if (options?.queryCreator) Logger.warn('`queryCreator` is ignored, please use `collectionCreator` instead.');\n return useGroupChannelListWithCollection(sdk, userId, options);\n } else {\n return useGroupChannelListWithQuery(sdk, userId, options);\n }\n};\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,uBAAuB;AAG9C,SAASC,iCAAiC,QAAQ,qCAAqC;AACvF,SAASC,4BAA4B,QAAQ,gCAAgC;AAE7E,OAAO,MAAMC,mBAAwC,GAAGA,CAACC,GAAG,EAAEC,MAAM,EAAEC,OAAO,KAAK;EAChF,IAAIF,GAAG,CAACG,cAAc,IAAID,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEE,iCAAiC,EAAE;IACpE,IAAIF,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEG,YAAY,EAAET,MAAM,CAACU,IAAI,CAAC,oEAAoE,CAAC;IAC5G,OAAOT,iCAAiC,CAACG,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAChE,CAAC,MAAM;IACL,OAAOJ,4BAA4B,CAACE,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAC3D;AACF,CAAC"}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { useReducer } from 'react';
|
|
2
2
|
import { getGroupChannels } from '@sendbird/uikit-utils';
|
|
3
|
-
|
|
4
3
|
const defaultReducer = (_ref, action) => {
|
|
5
|
-
let {
|
|
4
|
+
let {
|
|
5
|
+
...draft
|
|
6
6
|
} = _ref;
|
|
7
7
|
const compareByOrder = createCompareByOrder(draft.order);
|
|
8
|
-
|
|
9
8
|
switch (action.type) {
|
|
10
9
|
case 'update_refreshing':
|
|
10
|
+
{
|
|
11
|
+
draft.refreshing = action.value.status;
|
|
12
|
+
break;
|
|
13
|
+
}
|
|
11
14
|
case 'update_loading':
|
|
12
15
|
{
|
|
13
|
-
|
|
14
|
-
draft[key] = action.value.status;
|
|
16
|
+
draft.loading = action.value.status;
|
|
15
17
|
break;
|
|
16
18
|
}
|
|
17
|
-
|
|
18
19
|
case 'update_channels':
|
|
19
20
|
{
|
|
20
21
|
getGroupChannels(action.value.channels).forEach(freshChannel => {
|
|
@@ -24,7 +25,6 @@ const defaultReducer = (_ref, action) => {
|
|
|
24
25
|
compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));
|
|
25
26
|
break;
|
|
26
27
|
}
|
|
27
|
-
|
|
28
28
|
case 'delete_channels':
|
|
29
29
|
{
|
|
30
30
|
action.value.channelUrls.forEach(url => {
|
|
@@ -34,29 +34,26 @@ const defaultReducer = (_ref, action) => {
|
|
|
34
34
|
compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));
|
|
35
35
|
break;
|
|
36
36
|
}
|
|
37
|
-
|
|
38
37
|
case 'set_channels':
|
|
39
38
|
{
|
|
40
|
-
if (action.value.
|
|
39
|
+
if (action.value.clearBeforeAction) {
|
|
41
40
|
draft.groupChannels = getGroupChannels(action.value.channels);
|
|
42
41
|
} else {
|
|
43
42
|
draft.groupChannels = [...draft.groupChannels, ...getGroupChannels(action.value.channels)];
|
|
44
43
|
}
|
|
45
|
-
|
|
46
44
|
compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));
|
|
47
45
|
break;
|
|
48
46
|
}
|
|
49
|
-
|
|
50
47
|
case 'update_order':
|
|
51
48
|
{
|
|
52
49
|
draft.order = action.value.order;
|
|
50
|
+
const compareByOrder = createCompareByOrder(draft.order);
|
|
51
|
+
compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));
|
|
53
52
|
break;
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
|
-
|
|
57
55
|
return draft;
|
|
58
56
|
};
|
|
59
|
-
|
|
60
57
|
export const useGroupChannelListReducer = order => {
|
|
61
58
|
const [{
|
|
62
59
|
loading,
|
|
@@ -68,7 +65,6 @@ export const useGroupChannelListReducer = order => {
|
|
|
68
65
|
groupChannels: [],
|
|
69
66
|
order
|
|
70
67
|
});
|
|
71
|
-
|
|
72
68
|
const updateChannels = channels => {
|
|
73
69
|
dispatch({
|
|
74
70
|
type: 'update_channels',
|
|
@@ -77,7 +73,6 @@ export const useGroupChannelListReducer = order => {
|
|
|
77
73
|
}
|
|
78
74
|
});
|
|
79
75
|
};
|
|
80
|
-
|
|
81
76
|
const deleteChannels = channelUrls => {
|
|
82
77
|
dispatch({
|
|
83
78
|
type: 'delete_channels',
|
|
@@ -86,17 +81,15 @@ export const useGroupChannelListReducer = order => {
|
|
|
86
81
|
}
|
|
87
82
|
});
|
|
88
83
|
};
|
|
89
|
-
|
|
90
|
-
const setChannels = (channels, clearPrev) => {
|
|
84
|
+
const setChannels = (channels, clearBeforeAction) => {
|
|
91
85
|
dispatch({
|
|
92
86
|
type: 'set_channels',
|
|
93
87
|
value: {
|
|
94
88
|
channels,
|
|
95
|
-
|
|
89
|
+
clearBeforeAction
|
|
96
90
|
}
|
|
97
91
|
});
|
|
98
92
|
};
|
|
99
|
-
|
|
100
93
|
const updateLoading = status => {
|
|
101
94
|
dispatch({
|
|
102
95
|
type: 'update_loading',
|
|
@@ -105,7 +98,6 @@ export const useGroupChannelListReducer = order => {
|
|
|
105
98
|
}
|
|
106
99
|
});
|
|
107
100
|
};
|
|
108
|
-
|
|
109
101
|
const updateRefreshing = status => {
|
|
110
102
|
dispatch({
|
|
111
103
|
type: 'update_refreshing',
|
|
@@ -114,7 +106,6 @@ export const useGroupChannelListReducer = order => {
|
|
|
114
106
|
}
|
|
115
107
|
});
|
|
116
108
|
};
|
|
117
|
-
|
|
118
109
|
const updateOrder = order => {
|
|
119
110
|
dispatch({
|
|
120
111
|
type: 'update_order',
|
|
@@ -123,7 +114,6 @@ export const useGroupChannelListReducer = order => {
|
|
|
123
114
|
}
|
|
124
115
|
});
|
|
125
116
|
};
|
|
126
|
-
|
|
127
117
|
return {
|
|
128
118
|
updateLoading,
|
|
129
119
|
updateRefreshing,
|
|
@@ -136,7 +126,6 @@ export const useGroupChannelListReducer = order => {
|
|
|
136
126
|
groupChannels
|
|
137
127
|
};
|
|
138
128
|
};
|
|
139
|
-
|
|
140
129
|
const createCompareByOrder = order => {
|
|
141
130
|
if (!order) return undefined;
|
|
142
131
|
return (channel1, channel2) => {
|
|
@@ -153,17 +142,14 @@ const createCompareByOrder = order => {
|
|
|
153
142
|
return channel2.createdAt - channel1.createdAt;
|
|
154
143
|
}
|
|
155
144
|
}
|
|
156
|
-
|
|
157
145
|
case 'chronological':
|
|
158
146
|
{
|
|
159
147
|
return channel2.createdAt - channel1.createdAt;
|
|
160
148
|
}
|
|
161
|
-
|
|
162
149
|
case 'channel_name_alphabetical':
|
|
163
150
|
{
|
|
164
151
|
return channel1.name.localeCompare(channel2.name);
|
|
165
152
|
}
|
|
166
|
-
|
|
167
153
|
default:
|
|
168
154
|
{
|
|
169
155
|
return 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useReducer","getGroupChannels","defaultReducer","action","draft","compareByOrder","createCompareByOrder","order","type","
|
|
1
|
+
{"version":3,"names":["useReducer","getGroupChannels","defaultReducer","_ref","action","draft","compareByOrder","createCompareByOrder","order","type","refreshing","value","status","loading","channels","forEach","freshChannel","idx","groupChannels","findIndex","staleChannel","url","sort","channelUrls","c","splice","clearBeforeAction","useGroupChannelListReducer","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[]; clearBeforeAction: 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 draft.refreshing = action.value.status;\n break;\n }\n case 'update_loading': {\n draft.loading = 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.clearBeforeAction) {\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 const compareByOrder = createCompareByOrder(draft.order);\n compareByOrder && (draft.groupChannels = draft.groupChannels.sort(compareByOrder));\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[], clearBeforeAction: boolean) => {\n dispatch({ type: 'set_channels', value: { channels, clearBeforeAction } });\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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"}
|
|
@@ -4,7 +4,6 @@ import { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback, useUniqHan
|
|
|
4
4
|
import { useAppFeatures } from '../../common/useAppFeatures';
|
|
5
5
|
import { useChannelHandler } from '../../handler/useChannelHandler';
|
|
6
6
|
import { useGroupChannelListReducer } from './reducer';
|
|
7
|
-
|
|
8
7
|
const createGroupChannelListCollection = (sdk, collectionCreator) => {
|
|
9
8
|
const passedCollection = collectionCreator === null || collectionCreator === void 0 ? void 0 : collectionCreator();
|
|
10
9
|
if (passedCollection) return passedCollection;
|
|
@@ -16,7 +15,6 @@ const createGroupChannelListCollection = (sdk, collectionCreator) => {
|
|
|
16
15
|
order: GroupChannelListOrder.LATEST_LAST_MESSAGE
|
|
17
16
|
});
|
|
18
17
|
};
|
|
19
|
-
|
|
20
18
|
export const useGroupChannelListWithCollection = (sdk, userId, options) => {
|
|
21
19
|
const handlerId = useUniqHandlerId('useGroupChannelListWithCollection');
|
|
22
20
|
const {
|
|
@@ -32,13 +30,10 @@ export const useGroupChannelListWithCollection = (sdk, userId, options) => {
|
|
|
32
30
|
updateRefreshing,
|
|
33
31
|
updateLoading
|
|
34
32
|
} = useGroupChannelListReducer();
|
|
35
|
-
|
|
36
33
|
const updateChannelsAndMarkAsDelivered = (markAsDelivered, source, updatedChannels) => {
|
|
37
34
|
var _collectionRef$curren;
|
|
38
|
-
|
|
39
35
|
const channels = ((_collectionRef$curren = collectionRef.current) === null || _collectionRef$curren === void 0 ? void 0 : _collectionRef$curren.channels) ?? [];
|
|
40
36
|
setChannels(channels, true);
|
|
41
|
-
|
|
42
37
|
if (markAsDelivered && deliveryReceiptEnabled) {
|
|
43
38
|
switch (source) {
|
|
44
39
|
case GroupChannelEventSource.EVENT_MESSAGE_RECEIVED:
|
|
@@ -51,15 +46,11 @@ export const useGroupChannelListWithCollection = (sdk, userId, options) => {
|
|
|
51
46
|
}
|
|
52
47
|
}
|
|
53
48
|
};
|
|
54
|
-
|
|
55
49
|
const init = useFreshCallback(async uid => {
|
|
56
50
|
var _collectionRef$curren2;
|
|
57
|
-
|
|
58
51
|
if (collectionRef.current) (_collectionRef$curren2 = collectionRef.current) === null || _collectionRef$curren2 === void 0 ? void 0 : _collectionRef$curren2.dispose();
|
|
59
|
-
|
|
60
52
|
if (uid) {
|
|
61
53
|
var _collectionRef$curren3, _collectionRef$curren4;
|
|
62
|
-
|
|
63
54
|
collectionRef.current = createGroupChannelListCollection(sdk, options === null || options === void 0 ? void 0 : options.collectionCreator);
|
|
64
55
|
(_collectionRef$curren3 = collectionRef.current) === null || _collectionRef$curren3 === void 0 ? void 0 : _collectionRef$curren3.setGroupChannelCollectionHandler({
|
|
65
56
|
onChannelsAdded: (context, channels) => {
|
|
@@ -72,10 +63,8 @@ export const useGroupChannelListWithCollection = (sdk, userId, options) => {
|
|
|
72
63
|
updateChannelsAndMarkAsDelivered(false);
|
|
73
64
|
}
|
|
74
65
|
});
|
|
75
|
-
|
|
76
66
|
if ((_collectionRef$curren4 = collectionRef.current) !== null && _collectionRef$curren4 !== void 0 && _collectionRef$curren4.hasMore) {
|
|
77
67
|
var _collectionRef$curren5;
|
|
78
|
-
|
|
79
68
|
await ((_collectionRef$curren5 = collectionRef.current) === null || _collectionRef$curren5 === void 0 ? void 0 : _collectionRef$curren5.loadMore());
|
|
80
69
|
updateChannelsAndMarkAsDelivered(true);
|
|
81
70
|
}
|
|
@@ -84,7 +73,6 @@ export const useGroupChannelListWithCollection = (sdk, userId, options) => {
|
|
|
84
73
|
useEffect(() => {
|
|
85
74
|
return () => {
|
|
86
75
|
var _collectionRef$curren6;
|
|
87
|
-
|
|
88
76
|
if (collectionRef.current) (_collectionRef$curren6 = collectionRef.current) === null || _collectionRef$curren6 === void 0 ? void 0 : _collectionRef$curren6.dispose();
|
|
89
77
|
};
|
|
90
78
|
}, []);
|
|
@@ -92,7 +80,7 @@ export const useGroupChannelListWithCollection = (sdk, userId, options) => {
|
|
|
92
80
|
updateLoading(true);
|
|
93
81
|
await init(userId);
|
|
94
82
|
updateLoading(false);
|
|
95
|
-
}, [
|
|
83
|
+
}, [userId]);
|
|
96
84
|
useChannelHandler(sdk, handlerId, {
|
|
97
85
|
onUserBanned: (channel, user) => {
|
|
98
86
|
const isMe = user.userId === userId;
|
|
@@ -106,10 +94,8 @@ export const useGroupChannelListWithCollection = (sdk, userId, options) => {
|
|
|
106
94
|
});
|
|
107
95
|
const next = useFreshCallback(async () => {
|
|
108
96
|
var _collectionRef$curren7;
|
|
109
|
-
|
|
110
97
|
if ((_collectionRef$curren7 = collectionRef.current) !== null && _collectionRef$curren7 !== void 0 && _collectionRef$curren7.hasMore) {
|
|
111
98
|
var _collectionRef$curren8;
|
|
112
|
-
|
|
113
99
|
await ((_collectionRef$curren8 = collectionRef.current) === null || _collectionRef$curren8 === void 0 ? void 0 : _collectionRef$curren8.loadMore());
|
|
114
100
|
updateChannelsAndMarkAsDelivered(true);
|
|
115
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","GroupChannelEventSource","GroupChannelFilter","GroupChannelListOrder","confirmAndMarkAsDelivered","useAsyncEffect","useFreshCallback","useUniqHandlerId","useAppFeatures","useChannelHandler","useGroupChannelListReducer","createGroupChannelListCollection","sdk","collectionCreator","passedCollection","filter","includeEmpty","groupChannel","createGroupChannelCollection","limit","order","LATEST_LAST_MESSAGE","useGroupChannelListWithCollection","userId","options","handlerId","deliveryReceiptEnabled","collectionRef","loading","groupChannels","refreshing","setChannels","deleteChannels","updateRefreshing","updateLoading","updateChannelsAndMarkAsDelivered","markAsDelivered","source","updatedChannels","channels","current","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT","SYNC_CHANNEL_BACKGROUND","SYNC_CHANNEL_CHANGELOGS","undefined","init","uid","dispose","setGroupChannelCollectionHandler","onChannelsAdded","context","onChannelsUpdated","onChannelsDeleted","hasMore","loadMore","onUserBanned","channel","user","isMe","url","refresh","next"],"sources":["useGroupChannelListWithCollection.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { GroupChannelEventSource, GroupChannelFilter, GroupChannelListOrder } from '@sendbird/chat/groupChannel';\nimport type { SendbirdBaseChannel, SendbirdChatSDK, SendbirdGroupChannelCollection } from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback, useUniqHandlerId } 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 createGroupChannelListCollection = (\n sdk: SendbirdChatSDK,\n collectionCreator: UseGroupChannelListOptions['collectionCreator'],\n) => {\n const passedCollection = collectionCreator?.();\n if (passedCollection) return passedCollection;\n\n const filter = new GroupChannelFilter();\n filter.includeEmpty = false;\n\n return sdk.groupChannel.createGroupChannelCollection({\n filter,\n limit: 20,\n order: GroupChannelListOrder.LATEST_LAST_MESSAGE,\n });\n};\n\nexport const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, userId, options) => {\n const handlerId = useUniqHandlerId('useGroupChannelListWithCollection');\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 = (\n markAsDelivered: boolean,\n source?: GroupChannelEventSource,\n updatedChannels?: SendbirdBaseChannel[],\n ) => {\n const channels = collectionRef.current?.channels ?? [];\n setChannels(channels, true);\n if (markAsDelivered && deliveryReceiptEnabled) {\n switch (source) {\n case GroupChannelEventSource.EVENT_MESSAGE_RECEIVED:\n case GroupChannelEventSource.EVENT_MESSAGE_SENT:\n case GroupChannelEventSource.SYNC_CHANNEL_BACKGROUND:\n case GroupChannelEventSource.SYNC_CHANNEL_CHANGELOGS:\n case undefined:\n confirmAndMarkAsDelivered(updatedChannels ?? channels);\n break;\n }\n }\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createGroupChannelListCollection(sdk, options?.collectionCreator);\n\n collectionRef.current?.setGroupChannelCollectionHandler({\n onChannelsAdded: (context, channels) => {\n updateChannelsAndMarkAsDelivered(true, context.source, channels);\n },\n onChannelsUpdated: (context, channels) => {\n updateChannelsAndMarkAsDelivered(true, context.source, channels);\n },\n onChannelsDeleted: () => {\n updateChannelsAndMarkAsDelivered(false);\n },\n });\n\n if (collectionRef.current?.hasMore) {\n await collectionRef.current?.loadMore();\n updateChannelsAndMarkAsDelivered(true);\n }\n }\n });\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","GroupChannelEventSource","GroupChannelFilter","GroupChannelListOrder","confirmAndMarkAsDelivered","useAsyncEffect","useFreshCallback","useUniqHandlerId","useAppFeatures","useChannelHandler","useGroupChannelListReducer","createGroupChannelListCollection","sdk","collectionCreator","passedCollection","filter","includeEmpty","groupChannel","createGroupChannelCollection","limit","order","LATEST_LAST_MESSAGE","useGroupChannelListWithCollection","userId","options","handlerId","deliveryReceiptEnabled","collectionRef","loading","groupChannels","refreshing","setChannels","deleteChannels","updateRefreshing","updateLoading","updateChannelsAndMarkAsDelivered","markAsDelivered","source","updatedChannels","_collectionRef$curren","channels","current","EVENT_MESSAGE_RECEIVED","EVENT_MESSAGE_SENT","SYNC_CHANNEL_BACKGROUND","SYNC_CHANNEL_CHANGELOGS","undefined","init","uid","_collectionRef$curren2","dispose","_collectionRef$curren3","_collectionRef$curren4","setGroupChannelCollectionHandler","onChannelsAdded","context","onChannelsUpdated","onChannelsDeleted","hasMore","_collectionRef$curren5","loadMore","_collectionRef$curren6","onUserBanned","channel","user","isMe","url","refresh","next","_collectionRef$curren7","_collectionRef$curren8"],"sources":["useGroupChannelListWithCollection.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { GroupChannelEventSource, GroupChannelFilter, GroupChannelListOrder } from '@sendbird/chat/groupChannel';\nimport type { SendbirdBaseChannel, SendbirdChatSDK, SendbirdGroupChannelCollection } from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback, useUniqHandlerId } 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 createGroupChannelListCollection = (\n sdk: SendbirdChatSDK,\n collectionCreator: UseGroupChannelListOptions['collectionCreator'],\n) => {\n const passedCollection = collectionCreator?.();\n if (passedCollection) return passedCollection;\n\n const filter = new GroupChannelFilter();\n filter.includeEmpty = false;\n\n return sdk.groupChannel.createGroupChannelCollection({\n filter,\n limit: 20,\n order: GroupChannelListOrder.LATEST_LAST_MESSAGE,\n });\n};\n\nexport const useGroupChannelListWithCollection: UseGroupChannelList = (sdk, userId, options) => {\n const handlerId = useUniqHandlerId('useGroupChannelListWithCollection');\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 = (\n markAsDelivered: boolean,\n source?: GroupChannelEventSource,\n updatedChannels?: SendbirdBaseChannel[],\n ) => {\n const channels = collectionRef.current?.channels ?? [];\n setChannels(channels, true);\n if (markAsDelivered && deliveryReceiptEnabled) {\n switch (source) {\n case GroupChannelEventSource.EVENT_MESSAGE_RECEIVED:\n case GroupChannelEventSource.EVENT_MESSAGE_SENT:\n case GroupChannelEventSource.SYNC_CHANNEL_BACKGROUND:\n case GroupChannelEventSource.SYNC_CHANNEL_CHANGELOGS:\n case undefined:\n confirmAndMarkAsDelivered(updatedChannels ?? channels);\n break;\n }\n }\n };\n\n const init = useFreshCallback(async (uid?: string) => {\n if (collectionRef.current) collectionRef.current?.dispose();\n\n if (uid) {\n collectionRef.current = createGroupChannelListCollection(sdk, options?.collectionCreator);\n\n collectionRef.current?.setGroupChannelCollectionHandler({\n onChannelsAdded: (context, channels) => {\n updateChannelsAndMarkAsDelivered(true, context.source, channels);\n },\n onChannelsUpdated: (context, channels) => {\n updateChannelsAndMarkAsDelivered(true, context.source, channels);\n },\n onChannelsDeleted: () => {\n updateChannelsAndMarkAsDelivered(false);\n },\n });\n\n if (collectionRef.current?.hasMore) {\n await collectionRef.current?.loadMore();\n updateChannelsAndMarkAsDelivered(true);\n }\n }\n });\n\n useEffect(() => {\n return () => {\n if (collectionRef.current) collectionRef.current?.dispose();\n };\n }, []);\n\n useAsyncEffect(async () => {\n updateLoading(true);\n await init(userId);\n updateLoading(false);\n }, [userId]);\n\n useChannelHandler(sdk, handlerId, {\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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"}
|
|
@@ -4,7 +4,6 @@ import { confirmAndMarkAsDelivered, useAsyncEffect, useFreshCallback, useUniqHan
|
|
|
4
4
|
import { useAppFeatures } from '../../common/useAppFeatures';
|
|
5
5
|
import { useChannelHandler } from '../../handler/useChannelHandler';
|
|
6
6
|
import { useGroupChannelListReducer } from './reducer';
|
|
7
|
-
|
|
8
7
|
const createGroupChannelListQuery = (sdk, queryCreator) => {
|
|
9
8
|
const passedQuery = queryCreator === null || queryCreator === void 0 ? void 0 : queryCreator();
|
|
10
9
|
if (passedQuery) return passedQuery;
|
|
@@ -14,7 +13,6 @@ const createGroupChannelListQuery = (sdk, queryCreator) => {
|
|
|
14
13
|
order: GroupChannelListOrder.LATEST_LAST_MESSAGE
|
|
15
14
|
});
|
|
16
15
|
};
|
|
17
|
-
|
|
18
16
|
export const useGroupChannelListWithQuery = (sdk, userId, options) => {
|
|
19
17
|
const {
|
|
20
18
|
deliveryReceiptEnabled
|
|
@@ -32,19 +30,15 @@ export const useGroupChannelListWithQuery = (sdk, userId, options) => {
|
|
|
32
30
|
updateLoading,
|
|
33
31
|
updateOrder
|
|
34
32
|
} = useGroupChannelListReducer();
|
|
35
|
-
|
|
36
33
|
const updateChannelsAndMarkAsDelivered = channels => {
|
|
37
34
|
updateChannels(channels);
|
|
38
35
|
if (deliveryReceiptEnabled) confirmAndMarkAsDelivered(channels);
|
|
39
36
|
};
|
|
40
|
-
|
|
41
37
|
const init = useFreshCallback(async uid => {
|
|
42
38
|
if (uid) {
|
|
43
39
|
var _queryRef$current, _queryRef$current2;
|
|
44
|
-
|
|
45
40
|
queryRef.current = createGroupChannelListQuery(sdk, options === null || options === void 0 ? void 0 : options.queryCreator);
|
|
46
41
|
updateOrder((_queryRef$current = queryRef.current) === null || _queryRef$current === void 0 ? void 0 : _queryRef$current.order);
|
|
47
|
-
|
|
48
42
|
if ((_queryRef$current2 = queryRef.current) !== null && _queryRef$current2 !== void 0 && _queryRef$current2.hasNext) {
|
|
49
43
|
const channels = await queryRef.current.next();
|
|
50
44
|
setChannels(channels, true);
|
|
@@ -56,7 +50,7 @@ export const useGroupChannelListWithQuery = (sdk, userId, options) => {
|
|
|
56
50
|
updateLoading(true);
|
|
57
51
|
await init(userId);
|
|
58
52
|
updateLoading(false);
|
|
59
|
-
}, [
|
|
53
|
+
}, [userId]);
|
|
60
54
|
useChannelHandler(sdk, handlerId, {
|
|
61
55
|
onChannelChanged: channel => updateChannels([channel]),
|
|
62
56
|
onChannelFrozen: channel => updateChannels([channel]),
|
|
@@ -68,16 +62,13 @@ export const useGroupChannelListWithQuery = (sdk, userId, options) => {
|
|
|
68
62
|
const isMe = user.userId === userId;
|
|
69
63
|
if (isMe) deleteChannels([channel.url]);else updateChannels([channel]);
|
|
70
64
|
},
|
|
71
|
-
|
|
72
65
|
onUserBanned(channel, user) {
|
|
73
66
|
const isMe = user.userId === userId;
|
|
74
67
|
if (isMe) deleteChannels([channel.url]);else updateChannels([channel]);
|
|
75
68
|
},
|
|
76
|
-
|
|
77
69
|
onMessageReceived(channel) {
|
|
78
70
|
updateChannelsAndMarkAsDelivered([channel]);
|
|
79
71
|
}
|
|
80
|
-
|
|
81
72
|
});
|
|
82
73
|
const refresh = useFreshCallback(async () => {
|
|
83
74
|
updateRefreshing(true);
|
|
@@ -86,7 +77,6 @@ export const useGroupChannelListWithQuery = (sdk, userId, options) => {
|
|
|
86
77
|
});
|
|
87
78
|
const next = useFreshCallback(async () => {
|
|
88
79
|
var _queryRef$current3;
|
|
89
|
-
|
|
90
80
|
if ((_queryRef$current3 = queryRef.current) !== null && _queryRef$current3 !== void 0 && _queryRef$current3.hasNext) {
|
|
91
81
|
const channels = await queryRef.current.next();
|
|
92
82
|
setChannels(channels, false);
|