1package uo269509.favoritepath.ui;
3import android.os.Bundle;
4import android.os.Handler;
5import android.os.Looper;
6import android.view.LayoutInflater;
7import android.view.View;
8import android.view.ViewGroup;
9import android.widget.Button;
10import android.widget.EditText;
11import android.widget.Toast;
13import androidx.fragment.app.Fragment;
14import androidx.recyclerview.widget.LinearLayoutManager;
15import androidx.recyclerview.widget.RecyclerView;
17import com.google.firebase.auth.FirebaseAuth;
18import com.google.firebase.firestore.DocumentReference;
19import com.google.firebase.firestore.DocumentSnapshot;
20import com.google.firebase.firestore.FirebaseFirestore;
22import java.util.ArrayList;
23import java.util.HashMap;
25import java.util.concurrent.Executor;
26import java.util.concurrent.Executors;
28import uo269509.favoritepath.R;
29import uo269509.favoritepath.adapter.ListAmigosAdapter;
30import uo269509.favoritepath.modelos.Amigo;
38 DocumentReference reference;
39 RecyclerView amigoListView;
40 ArrayList<Amigo> amigos =
new ArrayList<>();
49 public void onCreate(Bundle savedInstanceState) {
50 super.onCreate(savedInstanceState);
61 public View
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
62 View vista = inflater.inflate(R.layout.fragment_amigos, container,
false);
69 private void mandarSolicitud(){
70 solicitudBtn.setOnClickListener(v -> {
71 String newSolicitud = solicitud.getText().toString().trim();
72 if(newSolicitud !=
null && !newSolicitud.isEmpty() && !newSolicitud.equals(mAuth.getCurrentUser().getEmail())){
73 reference.get().addOnSuccessListener(documentSnapshot -> {
74 if (documentSnapshot.exists()) {
75 ArrayList<String> nombreSolicitudes = (ArrayList<String>) documentSnapshot.get(
"nombreSolicitudes");
76 if(nombreSolicitudes != null && nombreSolicitudes.contains(newSolicitud)){
77 Toast.makeText(this.getContext(),
"Ya has mandado una solicitud a este usuario",Toast.LENGTH_SHORT).show();
79 reference.collection(
"amigos").document(newSolicitud).get().addOnSuccessListener(documentSnapshot2 -> {
80 if(documentSnapshot2.exists()){
81 Toast.makeText(this.getContext(),
"Este usuario ya es tu amigo",Toast.LENGTH_SHORT).show();
83 existeUsuarioSolicitud(newSolicitud);
90 Toast.makeText(this.getContext(),
"Escriba un usuario existente",Toast.LENGTH_SHORT).show();
95 private void existeUsuarioSolicitud(String newSolicitud){
96 DocumentReference auxReference = db.collection(
"usuarios").document(newSolicitud);
97 auxReference.get().addOnSuccessListener(documentSnapshot -> {
98 if (documentSnapshot.exists()) {
99 Map<String, Object> camposSolicitud = new HashMap<>();
100 camposSolicitud.put(
"email",mAuth.getCurrentUser().getEmail());
101 auxReference.collection(
"solicitudes").document(mAuth.getCurrentUser().getEmail()).set(camposSolicitud);
102 reference.get().addOnSuccessListener(documentSnapshot2 -> {
103 if (documentSnapshot2.exists()) {
104 ArrayList<String> nombreSolicitudes = (ArrayList<String>) documentSnapshot.get(
"solicitudesMandadas");
105 if (nombreSolicitudes == null)
106 nombreSolicitudes = new ArrayList<String>();
107 nombreSolicitudes.add(newSolicitud);
108 Map<String, Object> updates = new HashMap<>();
109 updates.put(
"nombreSolicitudes", nombreSolicitudes);
110 reference.update(updates);
111 solicitud.setText(
"");
112 Toast.makeText(this.getContext(),
"Solicitud enviada correctamente", Toast.LENGTH_SHORT).show();
116 Toast.makeText(this.getContext(),
"El usuario no existe", Toast.LENGTH_SHORT).show();
121 private void borrarAmigo(Amigo amigo) {
122 reference.collection(
"amigos").document(amigo.getNombre()).delete();
123 db.collection(
"usuarios").document(amigo.getNombre()).collection(
"amigos").document(mAuth.getCurrentUser().getEmail()).delete();
125 Toast.makeText(this.getContext(),
"Amigo borrado con éxito",Toast.LENGTH_SHORT).show();
131 private void init(View vista){
132 mAuth = FirebaseAuth.getInstance();
133 db = FirebaseFirestore.getInstance();
134 reference = db.collection(
"usuarios").document(mAuth.getCurrentUser().getEmail());
135 solicitud = vista.findViewById(R.id.editTextSolicitud);
136 solicitudBtn = vista.findViewById(R.id.solicitudBtn);
137 amigoListView = vista.findViewById(R.id.recyclerView);
143 private void configureView() {
144 amigoListView.setHasFixedSize(
true);
145 LinearLayoutManager layoutManager =
new LinearLayoutManager(getContext());
146 amigoListView.setLayoutManager(layoutManager);
153 private void addAdapter(ArrayList<Amigo> list) {
154 ListAmigosAdapter laAdapter =
new ListAmigosAdapter(list, amigo -> {
157 amigoListView.setAdapter(laAdapter);
163 private void cargarDatos() {
164 reference.collection(
"amigos").get().addOnSuccessListener(queryDocumentSnapshots -> {
165 for(DocumentSnapshot doc : queryDocumentSnapshots.getDocuments()){
166 amigos.add(
new Amigo(doc.getId()));
176 amigos.remove(amigo);
177 amigoListView.getAdapter().notifyDataSetChanged();
185 final Executor EXECUTOR = Executors.newSingleThreadExecutor();
186 final Handler HANDLER =
new Handler(Looper.getMainLooper());
187 EXECUTOR.execute(() -> {
190 db.collection(
"usuarios").document(mAuth.getCurrentUser().getEmail()).get().addOnSuccessListener(
191 documentSnapshot -> {
192 if(documentSnapshot.exists()){
void onCreate(Bundle savedInstanceState)
View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
void updateAmigos(Amigo amigo)