package com.netease.nim.uikit.contact.core.provider;
import com.netease.nim.uikit.NimUIKit;
import com.netease.nim.uikit.UIKitLogTag;
import com.netease.nim.uikit.cache.FriendDataCache;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nim.uikit.contact.core.item.AbsContactItem;
import com.netease.nim.uikit.contact.core.item.ContactItem;
import com.netease.nim.uikit.contact.core.item.ItemTypes;
import com.netease.nim.uikit.contact.core.query.TextQuery;
import com.netease.nim.uikit.contact.core.util.ContactHelper;
import com.netease.nimlib.sdk.friend.model.Friend;
import com.netease.nimlib.sdk.uinfo.UserInfoProvider;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public final class UserDataProvider {
public static final List<AbsContactItem> provide(TextQuery query) {
List<UserInfoProvider.UserInfo> sources = query(query);
List<AbsContactItem> items = new ArrayList<>(sources.size());
for (UserInfoProvider.UserInfo u : sources) {
items.add(new ContactItem(ContactHelper.makeContactFromUserInfo(u), ItemTypes.FRIEND));
}
LogUtil.i(UIKitLogTag.CONTACT, "contact provide data size =" + items.size());
return items;
}
private static final List<UserInfoProvider.UserInfo> query(TextQuery query) {
if (query != null) {
List<UserInfoProvider.UserInfo> users = NimUIKit.getContactProvider().getUserInfoOfMyFriends();
UserInfoProvider.UserInfo user;
for (Iterator<UserInfoProvider.UserInfo> iter = users.iterator(); iter.hasNext(); ) {
user = iter.next();
Friend friend = FriendDataCache.getInstance().getFriendByAccount(user.getAccount());
boolean hit = ContactSearch.hitUser(user, query) || (friend != null && ContactSearch.hitFriend(friend, query));
if (!hit) {
iter.remove();
}
}
return users;
} else {
return NimUIKit.getContactProvider().getUserInfoOfMyFriends();
}
}
}