FavoritePath
Cargando...
Buscando...
Nada coincide
PerfilFragment.java
1package uo269509.favoritepath.ui;
2
3import android.os.Bundle;
4import android.view.LayoutInflater;
5import android.view.View;
6import android.view.ViewGroup;
7import android.widget.EditText;
8import android.widget.ImageView;
9import android.widget.TextView;
10import android.widget.Toast;
11
12import androidx.fragment.app.Fragment;
13
14import com.google.android.material.floatingactionbutton.FloatingActionButton;
15import com.google.android.material.navigation.NavigationView;
16import com.google.firebase.auth.FirebaseAuth;
17import com.google.firebase.firestore.DocumentReference;
18import com.google.firebase.firestore.FirebaseFirestore;
19import com.squareup.picasso.Picasso;
20
21import java.util.HashMap;
22import java.util.Map;
23
24import uo269509.favoritepath.R;
25import uo269509.favoritepath.modelos.User;
26
27public class PerfilFragment extends Fragment {
28
29 EditText nombre;
30 EditText descripcion;
31 FloatingActionButton guardarBtn;
32 private FirebaseAuth mAuth;
33 FirebaseFirestore db;
34 DocumentReference reference;
35 ImageView navView;
36 ImageView perfilView;
37 TextView nombreView;
38 TextView descripcionView;
39
40 public PerfilFragment() {}
41
46 @Override
47 public void onCreate(Bundle savedInstanceState) {
48 super.onCreate(savedInstanceState);
49 }
50
58 @Override
59 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
60 View vista = inflater.inflate(R.layout.fragment_perfil, container, false);
61 init(vista);
62 actualizarPerfil();
63 return vista;
64 }
65
69 private void actualizarPerfil() {
70 guardarBtn.setOnClickListener(v -> {
71 String nuevoNombre = nombre.getText().toString().trim();
72 String nuevaDesc = descripcion.getText().toString().trim();
73 if (nuevoNombre != null || !nuevoNombre.isEmpty()) {
74 if (nuevaDesc == null || nuevaDesc.isEmpty())
75 nuevaDesc = "";
76 Map<String, Object> updates = new HashMap<>();
77 updates.put("nombre", nuevoNombre);
78 updates.put("descripcion", nuevaDesc);
79 reference.update(updates);
80 updateNavHeader(nuevoNombre, nuevaDesc);
81 Toast.makeText(this.getContext(), "Perfil actualizado correctamente", Toast.LENGTH_SHORT).show();
82 } else {
83 Toast.makeText(this.getContext(), "Escriba un nombre válido", Toast.LENGTH_SHORT).show();
84 }
85 });
86 }
87
93 private void updateNavHeader(String nuevoNombre, String nuevaDesc) {
94 nombreView.setText(nuevoNombre);
95 descripcionView.setText(nuevaDesc);
96 }
97
101 private void updateUI() {
102 reference.get().addOnSuccessListener(documentSnapshot -> {
103 User user = documentSnapshot.toObject(User.class);
104 nombre.setText(user.getNombre());
105 descripcion.setText(user.getDescripcion());
106 });
107 }
108
112 public void init(View vista){
113 mAuth = FirebaseAuth.getInstance();
114 db = FirebaseFirestore.getInstance();
115 reference = db.collection("usuarios").document(mAuth.getCurrentUser().getEmail());
116 perfilView = vista.findViewById(R.id.perfilImage);
117 nombre = vista.findViewById(R.id.editTextNombre);
118 descripcion = vista.findViewById(R.id.editTextDescripcion);
119 guardarBtn = vista.findViewById(R.id.perfilBtn);
120 NavigationView navigationView = getActivity().findViewById(R.id.nav_view);
121 View headerView = navigationView.getHeaderView(0);
122 navView = headerView.findViewById(R.id.imagenPerfil);
123 nombreView = headerView.findViewById(R.id.nombreUsuario);
124 descripcionView = headerView.findViewById(R.id.descripcionUsuario);
125 if(mAuth.getCurrentUser().getPhotoUrl() != null)
126 Picasso.get().load(mAuth.getCurrentUser().getPhotoUrl()).into(perfilView);
127 updateUI();
128 }
129}
void onCreate(Bundle savedInstanceState)
View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)