|
@@ -1,22 +1,124 @@
|
|
package com.example.chatapp.fragments;
|
|
package com.example.chatapp.fragments;
|
|
|
|
|
|
import android.os.Bundle;
|
|
import android.os.Bundle;
|
|
|
|
+import android.provider.ContactsContract;
|
|
|
|
+import android.util.Log;
|
|
import android.view.LayoutInflater;
|
|
import android.view.LayoutInflater;
|
|
import android.view.View;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.view.ViewGroup;
|
|
|
|
|
|
|
|
+import androidx.annotation.NonNull;
|
|
import androidx.fragment.app.Fragment;
|
|
import androidx.fragment.app.Fragment;
|
|
|
|
+import androidx.recyclerview.widget.LinearLayoutManager;
|
|
|
|
+import androidx.recyclerview.widget.RecyclerView;
|
|
|
|
|
|
import com.example.chatapp.R;
|
|
import com.example.chatapp.R;
|
|
|
|
+import com.example.chatapp.adapter.UserAdapter;
|
|
|
|
+import com.example.chatapp.model.Chat;
|
|
|
|
+import com.example.chatapp.model.User;
|
|
|
|
+import com.google.firebase.auth.FirebaseAuth;
|
|
|
|
+import com.google.firebase.auth.FirebaseUser;
|
|
|
|
+import com.google.firebase.database.DataSnapshot;
|
|
|
|
+import com.google.firebase.database.DatabaseError;
|
|
|
|
+import com.google.firebase.database.DatabaseReference;
|
|
|
|
+import com.google.firebase.database.FirebaseDatabase;
|
|
|
|
+import com.google.firebase.database.ValueEventListener;
|
|
|
|
+
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.List;
|
|
|
|
|
|
|
|
|
|
public class ChatsFragment extends Fragment {
|
|
public class ChatsFragment extends Fragment {
|
|
|
|
|
|
|
|
+ private RecyclerView chatsListRecyclerView;
|
|
|
|
+ private UserAdapter userAdapter;
|
|
|
|
+ private List<User> mUsers;
|
|
|
|
+ FirebaseUser firebaseUser;
|
|
|
|
+ DatabaseReference databaseReference;
|
|
|
|
+ private List<String> usersList;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
|
Bundle savedInstanceState) {
|
|
Bundle savedInstanceState) {
|
|
- // Inflate the layout for this fragment
|
|
|
|
- return inflater.inflate(R.layout.fragment_chats, container, false);
|
|
|
|
|
|
+ View view = inflater.inflate(R.layout.fragment_chats, container, false);
|
|
|
|
+
|
|
|
|
+ chatsListRecyclerView = view.findViewById(R.id.chatsListRecyclerView);
|
|
|
|
+ chatsListRecyclerView.setHasFixedSize(true);
|
|
|
|
+ chatsListRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
|
|
|
|
+
|
|
|
|
+ firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
|
|
|
|
+
|
|
|
|
+ usersList = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ databaseReference = FirebaseDatabase.getInstance().getReference("Chats");
|
|
|
|
+ databaseReference.addValueEventListener(new ValueEventListener() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
|
|
|
|
+ usersList.clear();
|
|
|
|
+
|
|
|
|
+ for(DataSnapshot snapshot : dataSnapshot.getChildren()) {
|
|
|
|
+ Chat chat = snapshot.getValue(Chat.class);
|
|
|
|
+ if (chat.getSender().equals(firebaseUser.getUid())) {
|
|
|
|
+ usersList.add(chat.getReceiver());
|
|
|
|
+ }
|
|
|
|
+ if (chat.getReceiver().equals(firebaseUser.getUid())) {
|
|
|
|
+ usersList.add(chat.getSender());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ readChats();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void onCancelled(@NonNull DatabaseError databaseError) {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ return view;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void readChats() {
|
|
|
|
+
|
|
|
|
+ mUsers = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ databaseReference = FirebaseDatabase.getInstance().getReference("Users");
|
|
|
|
+ databaseReference.addValueEventListener(new ValueEventListener() {
|
|
|
|
+ @Override
|
|
|
|
+ public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
|
|
|
|
+ mUsers.clear();
|
|
|
|
+
|
|
|
|
+ for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
|
|
|
|
+ User user = snapshot.getValue(User.class);
|
|
|
|
+
|
|
|
|
+ for (String id : usersList) {
|
|
|
|
+ if (user.getId().equals(id)) {
|
|
|
|
+ if (mUsers.size() != 0) {
|
|
|
|
+ for (User user1 : mUsers) {
|
|
|
|
+ Log.d("LOOOOOOOOOOOOOOOOOOOOL", user1.getId());
|
|
|
|
+
|
|
|
|
+ if (!user.getId().equals(user1.getId())) {
|
|
|
|
+ mUsers.add(user);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ mUsers.add(user);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ userAdapter = new UserAdapter(getContext(), mUsers);
|
|
|
|
+ chatsListRecyclerView.setAdapter(userAdapter);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void onCancelled(@NonNull DatabaseError databaseError) {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|