whyuzeim 1.1.134 → 1.1.136
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/cjs/IM/index.js +81 -45
- package/es/IM/index.js +83 -47
- package/package.json +1 -1
package/cjs/IM/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var _slicedToArray = require('@babel/runtime-corejs3/helpers/esm/slicedToArray');
|
|
4
4
|
var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
|
|
5
|
+
var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
|
|
5
6
|
var React = require('react');
|
|
6
7
|
var classNames = require('classnames');
|
|
7
8
|
var agoraChatUikit = require('agora-chat-uikit');
|
|
@@ -15,32 +16,14 @@ var index$1 = require('../ChatBox/index.js');
|
|
|
15
16
|
var index$2 = require('../GroupDetail/index.js');
|
|
16
17
|
var index$3 = require('../UserProfile/index.js');
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
children = props.children,
|
|
27
|
-
className = props.className,
|
|
28
|
-
_props$style = props.style,
|
|
29
|
-
style = _props$style === void 0 ? {} : _props$style,
|
|
30
|
-
_props$mobile = props.mobile,
|
|
31
|
-
mobile = _props$mobile === void 0 ? false : _props$mobile,
|
|
32
|
-
onChatIconClick = props.onChatIconClick,
|
|
33
|
-
additionalConversations = props.additionalConversations,
|
|
34
|
-
onAdditionalConversationClick = props.onAdditionalConversationClick,
|
|
35
|
-
onRenderConversationItem = props.onRenderConversationItem,
|
|
36
|
-
canSidebarExpand = props.canSidebarExpand,
|
|
37
|
-
locale = props.locale,
|
|
38
|
-
onLocaleChange = props.onLocaleChange,
|
|
39
|
-
onCustomMessageAction = props.onCustomMessageAction,
|
|
40
|
-
specialConversations = props.specialConversations,
|
|
41
|
-
onNewMessage = props.onNewMessage;
|
|
42
|
-
var agoraToken = useGetAgoraToken.useGetAgoraToken(http, userInfo.uid);
|
|
43
|
-
var client = agoraChatUikit.useClient();
|
|
19
|
+
// 逻辑组件:监听 conversationList 变化并处理未读消息数和消息事件
|
|
20
|
+
function MessageListenerHandler(_ref) {
|
|
21
|
+
var onNewMessage = _ref.onNewMessage;
|
|
22
|
+
var _ref2 = (agoraChatUikit.useConversationContext === null || agoraChatUikit.useConversationContext === void 0 ? void 0 : agoraChatUikit.useConversationContext()) || {},
|
|
23
|
+
_ref2$conversationLis = _ref2.conversationList,
|
|
24
|
+
conversationList = _ref2$conversationLis === void 0 ? [] : _ref2$conversationLis;
|
|
25
|
+
var client = (agoraChatUikit.useClient === null || agoraChatUikit.useClient === void 0 ? void 0 : agoraChatUikit.useClient()) || {};
|
|
26
|
+
var lastConversationsCount = React.useRef(0);
|
|
44
27
|
// 计算未读消息总数并回调
|
|
45
28
|
function handleUnreadCountChange(onNewMessage, newMessage) {
|
|
46
29
|
try {
|
|
@@ -57,43 +40,94 @@ var IM = function IM(props) {
|
|
|
57
40
|
}
|
|
58
41
|
}
|
|
59
42
|
}
|
|
43
|
+
// 监听 conversationList 变化,统计未读消息数
|
|
44
|
+
React.useEffect(function () {
|
|
45
|
+
if (conversationList && conversationList.length > 0 && lastConversationsCount.current !== conversationList.length) {
|
|
46
|
+
if (typeof onNewMessage === 'function') {
|
|
47
|
+
_reduceInstanceProperty(conversationList).call(conversationList, function (sum, c) {
|
|
48
|
+
return sum + (c.unreadCount || 0);
|
|
49
|
+
}, 0);
|
|
50
|
+
handleUnreadCountChange(onNewMessage);
|
|
51
|
+
}
|
|
52
|
+
lastConversationsCount.current = conversationList.length;
|
|
53
|
+
}
|
|
54
|
+
}, [conversationList, onNewMessage]);
|
|
55
|
+
// 监听新消息事件
|
|
60
56
|
React.useEffect(function () {
|
|
61
57
|
var _client$addEventHandl;
|
|
62
|
-
|
|
58
|
+
if (!client) return;
|
|
59
|
+
var handler = {
|
|
63
60
|
onTextMessage: function onTextMessage(message) {
|
|
64
|
-
|
|
65
|
-
handleUnreadCountChange(props.onNewMessage, message);
|
|
61
|
+
handleUnreadCountChange(onNewMessage, message);
|
|
66
62
|
},
|
|
67
63
|
onCustomMessage: function onCustomMessage(message) {
|
|
68
|
-
|
|
69
|
-
handleUnreadCountChange(props.onNewMessage, message);
|
|
70
|
-
},
|
|
71
|
-
onReadMessage: function onReadMessage(message) {
|
|
72
|
-
console.log('onReadMessage', message);
|
|
73
|
-
handleUnreadCountChange(props.onNewMessage);
|
|
64
|
+
handleUnreadCountChange(onNewMessage, message);
|
|
74
65
|
},
|
|
75
66
|
onChannelMessage: function onChannelMessage(message) {
|
|
76
|
-
|
|
77
|
-
handleUnreadCountChange(props.onNewMessage, message);
|
|
67
|
+
handleUnreadCountChange(onNewMessage, message);
|
|
78
68
|
},
|
|
79
69
|
onReceivedMessage: function onReceivedMessage(message) {
|
|
80
|
-
|
|
81
|
-
|
|
70
|
+
handleUnreadCountChange(onNewMessage, message);
|
|
71
|
+
},
|
|
72
|
+
onReadMessage: function onReadMessage(message) {
|
|
73
|
+
handleUnreadCountChange(onNewMessage, message);
|
|
82
74
|
},
|
|
83
75
|
onConnected: function onConnected() {
|
|
84
76
|
console.log('IM登录成功 ********');
|
|
85
|
-
|
|
77
|
+
client.getConversationlist().then(function (res) {
|
|
78
|
+
var _res$data;
|
|
79
|
+
if (res !== null && res !== void 0 && (_res$data = res.data) !== null && _res$data !== void 0 && _res$data.channel_infos) {
|
|
80
|
+
var _res$data2, _context2;
|
|
81
|
+
var total = 0;
|
|
82
|
+
res === null || res === void 0 || (_res$data2 = res.data) === null || _res$data2 === void 0 || _forEachInstanceProperty(_context2 = _res$data2.channel_infos).call(_context2, function (element) {
|
|
83
|
+
if (element !== null && element !== void 0 && element.unread_num) {
|
|
84
|
+
total += element === null || element === void 0 ? void 0 : element.unread_num;
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
onNewMessage && onNewMessage(total);
|
|
88
|
+
}
|
|
89
|
+
})["catch"](function (err) {
|
|
90
|
+
console.log('获取会话列表失败 ******', err);
|
|
91
|
+
});
|
|
86
92
|
},
|
|
87
93
|
onDisconnected: function onDisconnected() {
|
|
88
94
|
console.log('IM退出成功 *********');
|
|
89
|
-
|
|
95
|
+
onNewMessage && onNewMessage(0);
|
|
90
96
|
}
|
|
91
|
-
}
|
|
97
|
+
};
|
|
98
|
+
(_client$addEventHandl = client.addEventHandler) === null || _client$addEventHandl === void 0 || _client$addEventHandl.call(client, 'message', handler);
|
|
92
99
|
return function () {
|
|
93
100
|
var _client$removeEventHa;
|
|
94
|
-
|
|
101
|
+
(_client$removeEventHa = client.removeEventHandler) === null || _client$removeEventHa === void 0 || _client$removeEventHa.call(client, 'message');
|
|
95
102
|
};
|
|
96
|
-
}, [client]);
|
|
103
|
+
}, [client, onNewMessage]);
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
var IM = function IM(props) {
|
|
107
|
+
var _props$theme = props.theme,
|
|
108
|
+
theme = _props$theme === void 0 ? "light" : _props$theme,
|
|
109
|
+
appKey = props.appKey,
|
|
110
|
+
userInfo = props.userInfo,
|
|
111
|
+
http = props.http,
|
|
112
|
+
_props$sidebarExpand = props.sidebarExpand,
|
|
113
|
+
sidebarExpand = _props$sidebarExpand === void 0 ? false : _props$sidebarExpand,
|
|
114
|
+
children = props.children,
|
|
115
|
+
className = props.className,
|
|
116
|
+
_props$style = props.style,
|
|
117
|
+
style = _props$style === void 0 ? {} : _props$style,
|
|
118
|
+
_props$mobile = props.mobile,
|
|
119
|
+
mobile = _props$mobile === void 0 ? false : _props$mobile,
|
|
120
|
+
onChatIconClick = props.onChatIconClick,
|
|
121
|
+
additionalConversations = props.additionalConversations,
|
|
122
|
+
onAdditionalConversationClick = props.onAdditionalConversationClick,
|
|
123
|
+
onRenderConversationItem = props.onRenderConversationItem,
|
|
124
|
+
canSidebarExpand = props.canSidebarExpand,
|
|
125
|
+
locale = props.locale,
|
|
126
|
+
onLocaleChange = props.onLocaleChange,
|
|
127
|
+
onCustomMessageAction = props.onCustomMessageAction,
|
|
128
|
+
specialConversations = props.specialConversations,
|
|
129
|
+
onNewMessage = props.onNewMessage;
|
|
130
|
+
var agoraToken = useGetAgoraToken.useGetAgoraToken(http, userInfo.uid);
|
|
97
131
|
var _useState = React.useState(),
|
|
98
132
|
_useState2 = _slicedToArray(_useState, 2),
|
|
99
133
|
rightComponent = _useState2[0],
|
|
@@ -201,7 +235,9 @@ var IM = function IM(props) {
|
|
|
201
235
|
}
|
|
202
236
|
}
|
|
203
237
|
}
|
|
204
|
-
}, /*#__PURE__*/React.createElement(index, null),
|
|
238
|
+
}, /*#__PURE__*/React.createElement(index, null), /*#__PURE__*/React.createElement(MessageListenerHandler, {
|
|
239
|
+
onNewMessage: props.onNewMessage
|
|
240
|
+
}), children))));
|
|
205
241
|
};
|
|
206
242
|
|
|
207
243
|
module.exports = IM;
|
package/es/IM/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import _slicedToArray from '@babel/runtime-corejs3/helpers/esm/slicedToArray';
|
|
2
2
|
import _reduceInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/reduce';
|
|
3
|
-
import
|
|
3
|
+
import _forEachInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/for-each';
|
|
4
|
+
import React, { useState, useRef, useEffect } from 'react';
|
|
4
5
|
import classNames from 'classnames';
|
|
5
|
-
import {
|
|
6
|
+
import { UIKitProvider, useConversationContext, useClient, rootStore } from 'agora-chat-uikit';
|
|
6
7
|
import { Context } from './context.js';
|
|
7
8
|
import { useGetAgoraToken } from './hooks/useGetAgoraToken.js';
|
|
8
9
|
import { LocaleProvider } from '../contexts/LocaleContext.js';
|
|
@@ -13,32 +14,14 @@ import Chatbox from '../ChatBox/index.js';
|
|
|
13
14
|
import GroupDetail from '../GroupDetail/index.js';
|
|
14
15
|
import UserProfile from '../UserProfile/index.js';
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
children = props.children,
|
|
25
|
-
className = props.className,
|
|
26
|
-
_props$style = props.style,
|
|
27
|
-
style = _props$style === void 0 ? {} : _props$style,
|
|
28
|
-
_props$mobile = props.mobile,
|
|
29
|
-
mobile = _props$mobile === void 0 ? false : _props$mobile,
|
|
30
|
-
onChatIconClick = props.onChatIconClick,
|
|
31
|
-
additionalConversations = props.additionalConversations,
|
|
32
|
-
onAdditionalConversationClick = props.onAdditionalConversationClick,
|
|
33
|
-
onRenderConversationItem = props.onRenderConversationItem,
|
|
34
|
-
canSidebarExpand = props.canSidebarExpand,
|
|
35
|
-
locale = props.locale,
|
|
36
|
-
onLocaleChange = props.onLocaleChange,
|
|
37
|
-
onCustomMessageAction = props.onCustomMessageAction,
|
|
38
|
-
specialConversations = props.specialConversations,
|
|
39
|
-
onNewMessage = props.onNewMessage;
|
|
40
|
-
var agoraToken = useGetAgoraToken(http, userInfo.uid);
|
|
41
|
-
var client = useClient();
|
|
17
|
+
// 逻辑组件:监听 conversationList 变化并处理未读消息数和消息事件
|
|
18
|
+
function MessageListenerHandler(_ref) {
|
|
19
|
+
var onNewMessage = _ref.onNewMessage;
|
|
20
|
+
var _ref2 = (useConversationContext === null || useConversationContext === void 0 ? void 0 : useConversationContext()) || {},
|
|
21
|
+
_ref2$conversationLis = _ref2.conversationList,
|
|
22
|
+
conversationList = _ref2$conversationLis === void 0 ? [] : _ref2$conversationLis;
|
|
23
|
+
var client = (useClient === null || useClient === void 0 ? void 0 : useClient()) || {};
|
|
24
|
+
var lastConversationsCount = useRef(0);
|
|
42
25
|
// 计算未读消息总数并回调
|
|
43
26
|
function handleUnreadCountChange(onNewMessage, newMessage) {
|
|
44
27
|
try {
|
|
@@ -55,43 +38,94 @@ var IM = function IM(props) {
|
|
|
55
38
|
}
|
|
56
39
|
}
|
|
57
40
|
}
|
|
41
|
+
// 监听 conversationList 变化,统计未读消息数
|
|
42
|
+
useEffect(function () {
|
|
43
|
+
if (conversationList && conversationList.length > 0 && lastConversationsCount.current !== conversationList.length) {
|
|
44
|
+
if (typeof onNewMessage === 'function') {
|
|
45
|
+
_reduceInstanceProperty(conversationList).call(conversationList, function (sum, c) {
|
|
46
|
+
return sum + (c.unreadCount || 0);
|
|
47
|
+
}, 0);
|
|
48
|
+
handleUnreadCountChange(onNewMessage);
|
|
49
|
+
}
|
|
50
|
+
lastConversationsCount.current = conversationList.length;
|
|
51
|
+
}
|
|
52
|
+
}, [conversationList, onNewMessage]);
|
|
53
|
+
// 监听新消息事件
|
|
58
54
|
useEffect(function () {
|
|
59
55
|
var _client$addEventHandl;
|
|
60
|
-
|
|
56
|
+
if (!client) return;
|
|
57
|
+
var handler = {
|
|
61
58
|
onTextMessage: function onTextMessage(message) {
|
|
62
|
-
|
|
63
|
-
handleUnreadCountChange(props.onNewMessage, message);
|
|
59
|
+
handleUnreadCountChange(onNewMessage, message);
|
|
64
60
|
},
|
|
65
61
|
onCustomMessage: function onCustomMessage(message) {
|
|
66
|
-
|
|
67
|
-
handleUnreadCountChange(props.onNewMessage, message);
|
|
68
|
-
},
|
|
69
|
-
onReadMessage: function onReadMessage(message) {
|
|
70
|
-
console.log('onReadMessage', message);
|
|
71
|
-
handleUnreadCountChange(props.onNewMessage);
|
|
62
|
+
handleUnreadCountChange(onNewMessage, message);
|
|
72
63
|
},
|
|
73
64
|
onChannelMessage: function onChannelMessage(message) {
|
|
74
|
-
|
|
75
|
-
handleUnreadCountChange(props.onNewMessage, message);
|
|
65
|
+
handleUnreadCountChange(onNewMessage, message);
|
|
76
66
|
},
|
|
77
67
|
onReceivedMessage: function onReceivedMessage(message) {
|
|
78
|
-
|
|
79
|
-
|
|
68
|
+
handleUnreadCountChange(onNewMessage, message);
|
|
69
|
+
},
|
|
70
|
+
onReadMessage: function onReadMessage(message) {
|
|
71
|
+
handleUnreadCountChange(onNewMessage, message);
|
|
80
72
|
},
|
|
81
73
|
onConnected: function onConnected() {
|
|
82
74
|
console.log('IM登录成功 ********');
|
|
83
|
-
|
|
75
|
+
client.getConversationlist().then(function (res) {
|
|
76
|
+
var _res$data;
|
|
77
|
+
if (res !== null && res !== void 0 && (_res$data = res.data) !== null && _res$data !== void 0 && _res$data.channel_infos) {
|
|
78
|
+
var _res$data2, _context2;
|
|
79
|
+
var total = 0;
|
|
80
|
+
res === null || res === void 0 || (_res$data2 = res.data) === null || _res$data2 === void 0 || _forEachInstanceProperty(_context2 = _res$data2.channel_infos).call(_context2, function (element) {
|
|
81
|
+
if (element !== null && element !== void 0 && element.unread_num) {
|
|
82
|
+
total += element === null || element === void 0 ? void 0 : element.unread_num;
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
onNewMessage && onNewMessage(total);
|
|
86
|
+
}
|
|
87
|
+
})["catch"](function (err) {
|
|
88
|
+
console.log('获取会话列表失败 ******', err);
|
|
89
|
+
});
|
|
84
90
|
},
|
|
85
91
|
onDisconnected: function onDisconnected() {
|
|
86
92
|
console.log('IM退出成功 *********');
|
|
87
|
-
|
|
93
|
+
onNewMessage && onNewMessage(0);
|
|
88
94
|
}
|
|
89
|
-
}
|
|
95
|
+
};
|
|
96
|
+
(_client$addEventHandl = client.addEventHandler) === null || _client$addEventHandl === void 0 || _client$addEventHandl.call(client, 'message', handler);
|
|
90
97
|
return function () {
|
|
91
98
|
var _client$removeEventHa;
|
|
92
|
-
|
|
99
|
+
(_client$removeEventHa = client.removeEventHandler) === null || _client$removeEventHa === void 0 || _client$removeEventHa.call(client, 'message');
|
|
93
100
|
};
|
|
94
|
-
}, [client]);
|
|
101
|
+
}, [client, onNewMessage]);
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
var IM = function IM(props) {
|
|
105
|
+
var _props$theme = props.theme,
|
|
106
|
+
theme = _props$theme === void 0 ? "light" : _props$theme,
|
|
107
|
+
appKey = props.appKey,
|
|
108
|
+
userInfo = props.userInfo,
|
|
109
|
+
http = props.http,
|
|
110
|
+
_props$sidebarExpand = props.sidebarExpand,
|
|
111
|
+
sidebarExpand = _props$sidebarExpand === void 0 ? false : _props$sidebarExpand,
|
|
112
|
+
children = props.children,
|
|
113
|
+
className = props.className,
|
|
114
|
+
_props$style = props.style,
|
|
115
|
+
style = _props$style === void 0 ? {} : _props$style,
|
|
116
|
+
_props$mobile = props.mobile,
|
|
117
|
+
mobile = _props$mobile === void 0 ? false : _props$mobile,
|
|
118
|
+
onChatIconClick = props.onChatIconClick,
|
|
119
|
+
additionalConversations = props.additionalConversations,
|
|
120
|
+
onAdditionalConversationClick = props.onAdditionalConversationClick,
|
|
121
|
+
onRenderConversationItem = props.onRenderConversationItem,
|
|
122
|
+
canSidebarExpand = props.canSidebarExpand,
|
|
123
|
+
locale = props.locale,
|
|
124
|
+
onLocaleChange = props.onLocaleChange,
|
|
125
|
+
onCustomMessageAction = props.onCustomMessageAction,
|
|
126
|
+
specialConversations = props.specialConversations,
|
|
127
|
+
onNewMessage = props.onNewMessage;
|
|
128
|
+
var agoraToken = useGetAgoraToken(http, userInfo.uid);
|
|
95
129
|
var _useState = useState(),
|
|
96
130
|
_useState2 = _slicedToArray(_useState, 2),
|
|
97
131
|
rightComponent = _useState2[0],
|
|
@@ -199,7 +233,9 @@ var IM = function IM(props) {
|
|
|
199
233
|
}
|
|
200
234
|
}
|
|
201
235
|
}
|
|
202
|
-
}, /*#__PURE__*/React.createElement(Exit, null),
|
|
236
|
+
}, /*#__PURE__*/React.createElement(Exit, null), /*#__PURE__*/React.createElement(MessageListenerHandler, {
|
|
237
|
+
onNewMessage: props.onNewMessage
|
|
238
|
+
}), children))));
|
|
203
239
|
};
|
|
204
240
|
|
|
205
241
|
export { IM as default };
|