@Override public void onEvent(FriendChangedNotify friendChangedNotify) { List<Friend> addedOrUpdatedFriends = friendChangedNotify.getAddedOrUpdatedFriends(); List<String> myFriendAccounts = new ArrayList<>(addedOrUpdatedFriends.size()); List<String> friendAccounts = new ArrayList<>(addedOrUpdatedFriends.size()); List<String> deletedFriendAccounts = friendChangedNotify.getDeletedFriends(); // 如果在黑名单中,那么不加到好友列表中 String account; for (Friend f : addedOrUpdatedFriends) { account = f.getAccount(); friendMap.put(account, f); friendAccounts.add(account); if (NIMClient.getService(FriendService.class).isInBlackList(account)) { continue; } myFriendAccounts.add(account); } // 更新我的好友关系 if (!myFriendAccounts.isEmpty()) { // update cache friendAccountSet.addAll(myFriendAccounts); // log DataCacheManager.Log(myFriendAccounts, "on add friends", UIKitLogTag.FRIEND_CACHE); } // 通知好友关系更新 if (!friendAccounts.isEmpty()) { for (FriendDataChangedObserver o : friendObservers) { o.onAddedOrUpdatedFriends(friendAccounts); } } // 处理被删除的好友关系 if (!deletedFriendAccounts.isEmpty()) { // update cache friendAccountSet.removeAll(deletedFriendAccounts); for (String a : deletedFriendAccounts) { friendMap.remove(a); } // log DataCacheManager.Log( deletedFriendAccounts, "on delete friends", UIKitLogTag.FRIEND_CACHE); // notify for (FriendDataChangedObserver o : friendObservers) { o.onDeletedFriends(deletedFriendAccounts); } } }
@Override public void onEvent(BlackListChangedNotify blackListChangedNotify) { List<String> addedAccounts = blackListChangedNotify.getAddedAccounts(); List<String> removedAccounts = blackListChangedNotify.getRemovedAccounts(); if (!addedAccounts.isEmpty()) { // 拉黑,即从好友名单中移除 friendAccountSet.removeAll(addedAccounts); // log DataCacheManager.Log( addedAccounts, "on add users to black list", UIKitLogTag.FRIEND_CACHE); // notify for (FriendDataChangedObserver o : friendObservers) { o.onAddUserToBlackList(addedAccounts); } // 拉黑,要从最近联系人列表中删除该好友 for (String account : addedAccounts) { NIMClient.getService(MsgService.class) .deleteRecentContact2(account, SessionTypeEnum.P2P); } } if (!removedAccounts.isEmpty()) { // 移出黑名单,判断是否加入好友名单 for (String account : removedAccounts) { if (NIMClient.getService(FriendService.class).isMyFriend(account)) { friendAccountSet.add(account); } } // log DataCacheManager.Log( removedAccounts, "on remove users from black list", UIKitLogTag.FRIEND_CACHE); // 通知观察者 for (FriendDataChangedObserver o : friendObservers) { o.onRemoveUserFromBlackList(removedAccounts); } } }