kimi
2021-02-18 749a5510a9f014446a3cd6ba57b3cb0cc8148dc1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*
 * Copyright (c) 2020 WildFireChat. All rights reserved.
 */
 
package cn.wildfire.chat.kit.contact.newfriend;
 
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
 
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
 
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
 
import cn.wildfire.chat.kit.contact.model.UIUserInfo;
import cn.wildfire.chat.kit.contact.viewholder.UserViewHolder;
import cn.wildfire.chat.kit.search.SearchableModule;
import cn.wildfire.chat.kit.user.UserInfoActivity;
import cn.wildfire.chat.kit.R;
import cn.wildfire.chat.kit.R2;
import cn.wildfirechat.model.UserInfo;
import cn.wildfirechat.remote.ChatManager;
import cn.wildfirechat.remote.SearchUserCallback;
 
public class UserSearchModule extends SearchableModule<UserInfo, UserViewHolder> {
    @Override
    public UserViewHolder onCreateViewHolder(Fragment fragment, @NonNull ViewGroup parent, int viewType) {
        View itemView;
        itemView = LayoutInflater.from(fragment.getActivity()).inflate(R.layout.search_item_contact, parent, false);
        return new UserViewHolder(fragment, null, itemView);
    }
 
    @Override
    public void onBind(Fragment fragment, UserViewHolder holder, UserInfo userInfo) {
        holder.onBind(new UIUserInfo(userInfo));
    }
 
    @Override
    public void onClick(Fragment fragment, UserViewHolder holder, View view, UserInfo userInfo) {
        Intent intent = new Intent(fragment.getActivity(), UserInfoActivity.class);
        intent.putExtra("userInfo", userInfo);
        fragment.startActivity(intent);
    }
 
    @Override
    public int getViewType(UserInfo userInfo) {
        return R.layout.contact_item_contact;
    }
 
    @Override
    public int priority() {
        return 100;
    }
 
    @Override
    public boolean expandable() {
        return false;
    }
 
    @Override
    public String category() {
        return null;
    }
 
    @Override
    public List<UserInfo> search(String keyword) {
        CountDownLatch countDownLatch = new CountDownLatch(1);
        List<UserInfo> userInfos = new ArrayList<>();
        ChatManager.Instance().searchUser(keyword, ChatManager.SearchUserType.General, 0, new SearchUserCallback() {
            @Override
            public void onSuccess(List<UserInfo> infos) {
                userInfos.addAll(infos);
                countDownLatch.countDown();
            }
 
            @Override
            public void onFail(int errorCode) {
                countDownLatch.countDown();
            }
        });
        try {
            countDownLatch.await();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return userInfos;
    }
}