You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

151 lines
3.8 KiB

import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:im_flutter_sdk/im_flutter_sdk.dart';
import '../../im/im_manager.dart';
import '../../pages/home/report_page.dart';
class ChatSettingsController extends GetxController {
final String userId;
// 用户信息
final Rx<EMUserInfo?> userInfo = Rx<EMUserInfo?>(null);
// 是否拉黑
final RxBool isBlacklisted = RxBool(false);
// 是否关注
final RxBool isFollowing = RxBool(false);
// 备注名
final RxString remark = RxString('');
ChatSettingsController({required this.userId});
@override
void onInit() {
super.onInit();
// 初始化时获取用户信息
fetchUserInfo();
// 检查黑名单状态
checkBlacklistStatus();
// 检查关注状态
checkFollowStatus();
}
/// 获取用户信息
Future<void> fetchUserInfo() async {
try {
final EMUserInfo? info = await IMManager.instance.getUserInfo(userId);
if (info != null) {
userInfo.value = info;
if (Get.isLogEnable) {
Get.log('获取用户信息成功: ${info.nickName}');
}
} else {
if (Get.isLogEnable) {
Get.log('未找到用户信息: $userId');
}
}
} catch (e) {
if (Get.isLogEnable) {
Get.log('获取用户信息失败: $e');
}
}
}
/// 检查黑名单状态
Future<void> checkBlacklistStatus() async {
try {
// 从服务器获取黑名单列表
final blacklist = await IMManager.instance.getBlacklist();
isBlacklisted.value = blacklist.contains(userId);
} catch (e) {
if (Get.isLogEnable) {
Get.log('检查黑名单状态失败: $e');
}
isBlacklisted.value = false;
}
}
/// 检查关注状态
Future<void> checkFollowStatus() async {
try {
// TODO: 调用实际的API检查关注状态
// 这里暂时模拟
isFollowing.value = false;
} catch (e) {
if (Get.isLogEnable) {
Get.log('检查关注状态失败: $e');
}
}
}
/// 切换黑名单状态
Future<void> toggleBlacklist(bool value) async {
try {
if (value) {
// 加入黑名单
await IMManager.instance.addToBlacklist(userId);
isBlacklisted.value = true;
SmartDialog.showToast('已加入黑名单');
} else {
// 移出黑名单
await IMManager.instance.removeFromBlacklist(userId);
isBlacklisted.value = false;
SmartDialog.showToast('已移出黑名单');
}
update();
} catch (e) {
if (Get.isLogEnable) {
Get.log('操作黑名单失败: $e');
}
SmartDialog.showToast('操作失败,请重试');
}
}
/// 切换关注状态
Future<void> toggleFollow() async {
try {
if (isFollowing.value) {
// 取消关注
// TODO: 调用实际的取消关注API
isFollowing.value = false;
SmartDialog.showToast('已取消关注');
} else {
// 关注
// TODO: 调用实际的关注API
isFollowing.value = true;
SmartDialog.showToast('已关注');
}
update();
} catch (e) {
if (Get.isLogEnable) {
Get.log('操作关注失败: $e');
}
SmartDialog.showToast('操作失败,请重试');
}
}
/// 设置备注名
Future<void> setRemark(String newRemark) async {
try {
// TODO: 调用实际的设置备注名API
remark.value = newRemark;
SmartDialog.showToast('备注名设置成功');
update();
} catch (e) {
if (Get.isLogEnable) {
Get.log('设置备注名失败: $e');
}
SmartDialog.showToast('设置失败,请重试');
}
}
/// 举报用户
void reportUser() {
// 跳转到举报页面
Get.to(() => ReportPage());
}
}