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();
});
}