/*
|
* Copyright (c) 2020 WildFireChat. All rights reserved.
|
*/
|
|
package cn.wildfire.chat.kit.contact.newfriend;
|
|
import android.os.Bundle;
|
import android.text.TextUtils;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.LinearLayout;
|
import androidx.annotation.NonNull;
|
import androidx.annotation.Nullable;
|
import androidx.fragment.app.Fragment;
|
import androidx.lifecycle.ViewModelProviders;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.RecyclerView;
|
import butterknife.BindView;
|
import butterknife.ButterKnife;
|
import cn.wildfire.chat.kit.R;
|
import cn.wildfire.chat.kit.R2;
|
import cn.wildfire.chat.kit.contact.ContactViewModel;
|
import cn.wildfire.chat.kit.third.utils.UIUtils;
|
import cn.wildfire.chat.kit.user.UserViewModel;
|
import cn.wildfire.chat.kit.utils.ThreadPool;
|
import cn.wildfirechat.model.FriendRequest;
|
import com.alibaba.fastjson.JSON;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
public class FriendRequestListFragment extends Fragment {
|
@BindView(R2.id.noNewFriendLinearLayout)
|
LinearLayout noNewFriendLinearLayout;
|
@BindView(R2.id.newFriendListLinearLayout)
|
LinearLayout newFriendLinearLayout;
|
@BindView(R2.id.friendRequestListRecyclerView)
|
RecyclerView recyclerView;
|
|
private ContactViewModel contactViewModel;
|
private FriendRequestListAdapter adapter;
|
private boolean first = true;
|
private List<FriendRequest> rawList = new ArrayList<>();
|
|
@Nullable
|
@Override
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
View view = inflater.inflate(R.layout.contact_new_friend_fragment, container, false);
|
ButterKnife.bind(this, view);
|
init();
|
return view;
|
}
|
|
private void init() {
|
Bundle arguments = getArguments();
|
if (arguments == null) {
|
setRawFriendRequest();
|
return;
|
}
|
boolean isContact = arguments.getBoolean("isContact");
|
if (isContact) {
|
setContactRequest(arguments);
|
} else {
|
setRawFriendRequest();
|
}
|
|
}
|
|
public void refreshSearchData(String searchKey) {
|
if (first) {
|
first = false;
|
rawList.addAll(adapter.getData());
|
}
|
if (TextUtils.isEmpty(searchKey)) {
|
adapter.refreshData(rawList);
|
}
|
|
ThreadPool.getInstance().getCachedPools().execute(new Runnable() {
|
@Override
|
public void run() {
|
List<FriendRequest> result = new ArrayList<>();
|
for (FriendRequest request : rawList) {
|
boolean phoneContain = false;
|
boolean nameContain = false;
|
if (!TextUtils.isEmpty(request.phone)) {
|
phoneContain = request.phone.contains(searchKey);
|
}
|
if (!TextUtils.isEmpty(request.showName)) {
|
nameContain = request.showName.contains(searchKey);
|
}
|
|
if (phoneContain || nameContain) {
|
result.add(request);
|
}
|
}
|
UIUtils.postTaskSafely(new Runnable() {
|
@Override
|
public void run() {
|
adapter.refreshData(result);
|
}
|
});
|
|
}
|
});
|
}
|
|
private void setContactRequest(Bundle arguments) {
|
String data = arguments.getString("data");
|
List<FriendRequest> requests = JSON.parseArray(data, FriendRequest.class);
|
if (requests != null && requests.size() > 0) {
|
noNewFriendLinearLayout.setVisibility(View.GONE);
|
newFriendLinearLayout.setVisibility(View.VISIBLE);
|
|
adapter = new FriendRequestListAdapter(FriendRequestListFragment.this);
|
adapter.setFriendRequests(requests);
|
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
|
recyclerView.setAdapter(adapter);
|
} else {
|
noNewFriendLinearLayout.setVisibility(View.VISIBLE);
|
newFriendLinearLayout.setVisibility(View.GONE);
|
}
|
}
|
|
private void setRawFriendRequest() {
|
contactViewModel = ViewModelProviders.of(this).get(ContactViewModel.class);
|
UserViewModel userViewModel = ViewModelProviders.of(this).get(UserViewModel.class);
|
|
userViewModel.userInfoLiveData().observe(getViewLifecycleOwner(), userInfos -> {
|
if (adapter != null) {
|
adapter.onUserInfosUpdate(userInfos);
|
}
|
});
|
|
List<FriendRequest> requests = contactViewModel.getFriendRequest();
|
if (requests != null && requests.size() > 0) {
|
noNewFriendLinearLayout.setVisibility(View.GONE);
|
newFriendLinearLayout.setVisibility(View.VISIBLE);
|
|
adapter = new FriendRequestListAdapter(FriendRequestListFragment.this);
|
adapter.setFriendRequests(requests);
|
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
|
recyclerView.setAdapter(adapter);
|
} else {
|
noNewFriendLinearLayout.setVisibility(View.VISIBLE);
|
newFriendLinearLayout.setVisibility(View.GONE);
|
}
|
contactViewModel.clearUnreadFriendRequestStatus();
|
}
|
}
|