feat: Add input status related API; update synchronization monitoring related API.

This commit is contained in:
Brett
2024-08-07 16:57:15 +08:00
parent cade0091a7
commit 29b43d03ac
13 changed files with 176 additions and 44 deletions

View File

@@ -361,14 +361,13 @@ class ConversationManager {
String? ex,
String? operationID,
}) {
return _channel
.invokeMethod(
'setConversationEx',
_buildParam({
'conversationID': conversationID,
'ex': ex,
"operationID": Utils.checkOperationID(operationID),
}));
return _channel.invokeMethod(
'setConversationEx',
_buildParam({
'conversationID': conversationID,
'ex': ex,
"operationID": Utils.checkOperationID(operationID),
}));
}
/// Custom Sort for Conversation List
@@ -391,6 +390,45 @@ class ConversationManager {
}
});
Future changeInputStates({
required String conversationID,
required bool focus,
String? operationID,
}) {
return _channel.invokeMethod(
'changeInputStates',
_buildParam(
{
'focus': focus,
'conversationID': conversationID,
'operationID': Utils.checkOperationID(operationID),
},
),
);
}
Future<List<int>?> getInputStates(
String conversationID,
String userID, {
String? operationID,
}) {
return _channel
.invokeMethod(
'getInputStates',
_buildParam(
{
'conversationID': conversationID,
'userID': userID,
'operationID': Utils.checkOperationID(operationID),
},
),
)
.then((value) {
final result = Utils.toListMap(value);
return List<int>.from(result);
});
}
static Map _buildParam(Map param) {
param["ManagerName"] = "conversationManager";
log('param: $param');

View File

@@ -56,6 +56,9 @@ class IMManager {
case 'onUserTokenExpired':
_connectListener.userTokenExpired();
break;
case 'onUserTokenInvalid':
_connectListener.userTokenInvalid();
break;
}
} else if (call.method == ListenerType.userListener) {
String type = call.arguments['type'];
@@ -184,14 +187,17 @@ class IMManager {
dynamic data = call.arguments['data'];
switch (type) {
case 'onSyncServerStart':
conversationManager.listener.syncServerStart();
print('dart onSyncServerStart: $data');
conversationManager.listener.syncServerStart(data);
break;
case 'onSyncServerProgress':
conversationManager.listener.syncServerProgress(data);
break;
case 'onSyncServerFinish':
conversationManager.listener.syncServerFinish();
conversationManager.listener.syncServerFinish(data);
break;
case 'onSyncServerFailed':
conversationManager.listener.syncServerFailed();
conversationManager.listener.syncServerFailed(data);
break;
case 'onNewConversation':
var list = Utils.toList(data, (map) => ConversationInfo.fromJson(map));
@@ -204,6 +210,10 @@ class IMManager {
case 'onTotalUnreadMessageCountChanged':
conversationManager.listener.totalUnreadMessageCountChanged(data ?? 0);
break;
case 'onConversationUserInputStatusChanged':
final i = Utils.toObj(data, (map) => InputStatusChangedData.fromJson(map));
conversationManager.listener.conversationUserInputStatusChanged(i);
break;
}
} else if (call.method == ListenerType.friendListener) {
String type = call.arguments['type'];