fetchContacts method

void fetchContacts()

Implementation

void fetchContacts() {
  //优先从缓存中拉取数据
  ContactRepo.getContactList(userCache: true).then((value) {
    Alog.i(
      tag: 'ContactKit',
      moduleName: 'ContactViewModel',
      content: 'fetchContacts size:${value.length}',
    );
    contacts.clear();
    value.removeWhere((e) => e.isInBlack == true);
    contacts.addAll(value);
    //小于10条,直接全员注册
    if (contacts.length <= defaultSubscriptionCount) {
      final users = contacts.map((e) => e.user.accountId!).toList();
      SubscriptionManager.instance.subscribeUserStatus(
        users,
        onCachedStatusAvailable: (cachedStatuses) {
          final Map<String, NIMUserStatus> userMap = {};
          for (final user in cachedStatuses) {
            userMap[user.accountId] = user;
          }
          for (var contact in contacts) {
            if (userMap.containsKey(contact.user.accountId)) {
              contact.isOnline =
                  userMap[contact.user.accountId]?.statusType == 1;
            }
          }
          notifyListeners();
        },
      );
    }
    notifyListeners();
  });
}