This commit is contained in:
2025-06-30 16:24:20 +08:00
commit 68de5eb048
454 changed files with 56921 additions and 0 deletions
@@ -0,0 +1,39 @@
import 'package:tencent_cloud_chat_sdk/enum/V2TimConversationListener.dart';
import 'package:tencent_cloud_chat_sdk/models/v2_tim_callback.dart'
if (dart.library.html) 'package:tencent_cloud_chat_sdk/web/compatible_models/v2_tim_callback.dart';
import 'package:tencent_cloud_chat_sdk/models/v2_tim_conversation.dart'
if (dart.library.html) 'package:tencent_cloud_chat_sdk/web/compatible_models/v2_tim_conversation.dart';
import 'package:tencent_cloud_chat_sdk/models/v2_tim_conversation_result.dart'
if (dart.library.html) 'package:tencent_cloud_chat_sdk/web/compatible_models/v2_tim_conversation_result.dart';
abstract class ConversationService {
Future<V2TimConversationResult?> getConversationList({
required String nextSeq,
required int count,
});
Future<V2TimConversation?> getConversation({
required String conversationID,
});
Future<V2TimCallback> pinConversation({
required String conversationID,
required bool isPinned,
});
Future<V2TimCallback> deleteConversation({
required String conversationID,
});
Future<void> addConversationListener({
required V2TimConversationListener listener,
});
Future<V2TimCallback> setConversationDraft({required String conversationID, String? draftText});
Future<void> removeConversationListener({V2TimConversationListener? listener});
Future<int> getTotalUnreadCount();
Future<V2TimConversation?> getConversationListByConversationId({required String convID});
}
@@ -0,0 +1,123 @@
import 'package:tencent_cloud_chat_sdk/enum/V2TimConversationListener.dart';
import 'package:tencent_cloud_chat_sdk/models/v2_tim_callback.dart'
if (dart.library.html) 'package:tencent_cloud_chat_sdk/web/compatible_models/v2_tim_callback.dart';
import 'package:tencent_cloud_chat_sdk/models/v2_tim_conversation.dart'
if (dart.library.html) 'package:tencent_cloud_chat_sdk/web/compatible_models/v2_tim_conversation.dart';
import 'package:tencent_cloud_chat_sdk/models/v2_tim_conversation_result.dart'
if (dart.library.html) 'package:tencent_cloud_chat_sdk/web/compatible_models/v2_tim_conversation_result.dart';
import 'package:tencent_cloud_chat_sdk/tencent_im_sdk_plugin.dart';
import 'package:tencent_cloud_chat_uikit/base_widgets/tim_callback.dart';
import 'package:tencent_cloud_chat_uikit/data_services/conversation/conversation_services.dart';
import 'package:tencent_cloud_chat_uikit/data_services/core/core_services_implements.dart';
import 'package:tencent_cloud_chat_uikit/data_services/services_locatar.dart';
class ConversationServicesImpl extends ConversationService {
final CoreServicesImpl _coreService = serviceLocator<CoreServicesImpl>();
@override
Future<V2TimConversationResult?> getConversationList({
required String nextSeq,
required int count,
}) async {
final result = await TencentImSDKPlugin.v2TIMManager
.getConversationManager()
.getConversationList(nextSeq: nextSeq, count: count);
if (result.code == 0) {
return result.data;
} else {
_coreService
.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code));
return null;
}
}
@override
Future<V2TimCallback> pinConversation({
required String conversationID,
required bool isPinned,
}) async {
final result = await TencentImSDKPlugin.v2TIMManager
.getConversationManager()
.pinConversation(conversationID: conversationID, isPinned: isPinned);
if (result.code != 0) {
_coreService
.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code));
}
return result;
}
@override
Future<V2TimCallback> deleteConversation({
required String conversationID,
}) async {
final result = await TencentImSDKPlugin.v2TIMManager
.getConversationManager()
.deleteConversation(conversationID: conversationID);
if (result.code != 0) {
_coreService
.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code));
}
return result;
}
@override
Future<void> addConversationListener({
required V2TimConversationListener listener,
}) {
return TencentImSDKPlugin.v2TIMManager.getConversationManager().addConversationListener(listener: listener);
}
@override
Future<V2TimConversation?> getConversation({
required String conversationID,
}) async {
final res =
await TencentImSDKPlugin.v2TIMManager.getConversationManager().getConversation(conversationID: conversationID);
if (res.code == 0) {
return res.data;
} else {
_coreService
.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code));
}
return null;
}
@override
Future<V2TimCallback> setConversationDraft({required String conversationID, String? draftText}) async {
final result = await TencentImSDKPlugin.v2TIMManager
.getConversationManager()
.setConversationDraft(conversationID: conversationID, draftText: draftText);
if (result.code != 0) {
_coreService
.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code));
}
return result;
}
@override
Future<void> removeConversationListener({V2TimConversationListener? listener}) {
return TencentImSDKPlugin.v2TIMManager.getConversationManager().removeConversationListener(listener: listener);
}
@override
Future<V2TimConversation?> getConversationListByConversationId({required String convID}) async {
final result = await TencentImSDKPlugin.v2TIMManager
.getConversationManager()
.getConversationListByConversationIds(conversationIDList: [convID]);
if (result.code != 0) {
_coreService
.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code));
}
return (result.data != null && result.data!.isNotEmpty) ? result.data![0] : null;
}
@override
Future<int> getTotalUnreadCount() async {
final res = await TencentImSDKPlugin.v2TIMManager.getConversationManager().getTotalUnreadMessageCount();
if (res.code == 0) {
return res.data ?? 0;
}
_coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code));
return 0;
}
}