app/src/main/java/ch/epfl/swissteam/services/view/fragments/OnlineChatFragment.java
package ch.epfl.swissteam.services.view.fragments;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import java.util.ArrayList;
import ch.epfl.swissteam.services.R;
import ch.epfl.swissteam.services.models.ChatRelation;
import ch.epfl.swissteam.services.models.User;
import ch.epfl.swissteam.services.providers.DBUtility;
import ch.epfl.swissteam.services.providers.GoogleSignInSingleton;
import ch.epfl.swissteam.services.view.builders.ChatRelationAdapter;
/**
* Fragment to display.
*
* @author Sébastien Gachoud
*/
public class OnlineChatFragment extends Fragment {
private ChatRelationAdapter adapter_;
private View fragmentView_;
public OnlineChatFragment() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @return A new instance of fragment OnlineChatFragment.
*/
public static OnlineChatFragment newInstance() {
return new OnlineChatFragment();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Toolbar
Toolbar toolbar = getActivity().findViewById(R.id.toolbar);
toolbar.setTitle(R.string.toolbar_chats);
// Inflate the layout for this fragment
fragmentView_ = inflater.inflate(R.layout.fragment_online_chat, container, false);
refresh();
EditText searchBar = fragmentView_.findViewById(R.id.online_chat_fragment_search_bar);
searchBar.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
@Override
public void afterTextChanged(Editable editable) {
adapter_.setFilterName(searchBar.getText().toString());
}
});
return fragmentView_;
}
@Override
public void onResume() {
super.onResume();
refresh();
}
private void refresh(){
DBUtility.get().getUser(GoogleSignInSingleton.get().getClientUniqueID(), user -> {
if (user != null) {
displayChats(fragmentView_, user);
}
});
}
private void displayChats(View view, User user) {
ArrayList<ChatRelation> relations = user.getChatRelations_();
RecyclerView mRecyclerView_ = view.findViewById(R.id.fragment_online_chats_recycler_view);
if (mRecyclerView_ != null) {
mRecyclerView_.setLayoutManager(new LinearLayoutManager(this.getContext()));
adapter_ = new ChatRelationAdapter(relations, GoogleSignInSingleton.get().getClientUniqueID());
mRecyclerView_.setAdapter(adapter_);
}
}
}