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 userInfo = Rx(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 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 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 checkFollowStatus() async { try { // TODO: 调用实际的API检查关注状态 // 这里暂时模拟 isFollowing.value = false; } catch (e) { if (Get.isLogEnable) { Get.log('检查关注状态失败: $e'); } } } /// 切换黑名单状态 Future 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 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 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()); } }