import 'package:logger/logger.dart';
import 'package:tencent_cloud_chat_sdk/enum/V2TimFriendshipListener.dart';
import 'package:tencent_cloud_chat_sdk/models/v2_tim_friend_application.dart';
import 'package:tencent_cloud_chat_sdk/models/v2_tim_friend_info.dart';
import 'package:tencent_cloud_chat_sdk/models/v2_tim_user_full_info.dart';
import 'package:tencent_cloud_chat_sdk/tencent_im_sdk_plugin.dart';

final logger = Logger();

class ImFriendListeners {
  ImFriendListeners();

  late final V2TimFriendshipListener _listener;

  void register() {
    _listener = V2TimFriendshipListener(onFriendApplicationListAdded: (List<V2TimFriendApplication> list) async {
      //好友请求数量增加的回调
      //applicationList 新增的好友请求信息列表
    }, onFriendApplicationListRead: () async {
      //好友请求已读的回调
    }, onFriendApplicationListDeleted: (List<String> userIDList) async {
      //好友请求数量减少的回调
      //减少的好友请求的请求用户id列表
    }, onFriendListAdded: (List<V2TimFriendInfo> users) async {
      //好友列表增加人员的回调
      //users 新增的好友信息列表
      for (var item in users) {
        logger.i('新增好友：${item.toLogString()}');
      }
    }, onFriendListDeleted: (List<String> userList) async {
      //好友列表减少人员的回调
      //userList 减少的好友id列表
      for (var item in userList) {
        logger.i('新增好友：$item');
      }
    }, onFriendInfoChanged: (List<V2TimFriendInfo> list) async {
      //好友信息改变的回调
      //infoList 好友信息改变的好友列表
      logger.i('好友资料更新');
    }, onBlackListAdd: (List<V2TimFriendInfo> infoList) async {
      //黑名单列表新增用户的回调
      //infoList 新增的用户信息列表
    }, onBlackListDeleted: (List<String> userList) async {
      //黑名单列表删除的回调
      //userList 被删除的用户id列表
    }, onMyFollowingListChanged: (List<V2TimUserFullInfo> userInfoList, bool isAdd) async {
      if (isAdd) {
        // 关注列表新增用户的通知
        for (var item in userInfoList) {
          logger.i('我新关注的人：${item.toJson()}');
        }
      } else {
        // 关注列表删除用户的通知
        for (var item in userInfoList) {
          logger.i('我取消关注了：${item.toJson()}');
        }
      }
    }, onMyFollowersListChanged: (List<V2TimUserFullInfo> userInfoList, bool isAdd) async {
      if (isAdd) {
        // 粉丝列表新增用户的通知
        for (var item in userInfoList) {
          logger.i('新增粉丝：${item.toJson()}');
        }
        // NotificationBanner.foucs(userInfoList.last);
      } else {
        // 粉丝列表删除用户的通知
        for (var item in userInfoList) {
          logger.i('掉粉：${item.toJson()}');
        }
      }
    }, onMutualFollowersListChanged: (List<V2TimUserFullInfo> userInfoList, bool isAdd) async {
      if (isAdd) {
        // 互关列表新增用户的通知
      } else {
        // 互关列表删除用户的通知
      }
    });

    TencentImSDKPlugin.v2TIMManager.getFriendshipManager().addFriendListener(listener: _listener);
    logger.i("关系链监听器已注册");
  }

  void unregister() {
    TencentImSDKPlugin.v2TIMManager.getFriendshipManager().removeFriendListener(listener: _listener);
    logger.i("🗑️ 关系链监听器已移除");
  }
}
