Guilhermes
This commit is contained in:
70
GuilhermesApp/Pages/ProfilePage.xaml.cs
Normal file
70
GuilhermesApp/Pages/ProfilePage.xaml.cs
Normal file
@@ -0,0 +1,70 @@
|
||||
using GuilhermesApp.Helpers;
|
||||
using Firebase.Database.Query;
|
||||
|
||||
namespace GuilhermesApp.Pages;
|
||||
|
||||
public partial class ProfilePage : ContentPage
|
||||
{
|
||||
private FirebaseService _firebaseService = new FirebaseService();
|
||||
|
||||
public ProfilePage()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
// Este método corre sempre que a página aparece no ecrã
|
||||
protected override async void OnAppearing()
|
||||
{
|
||||
base.OnAppearing();
|
||||
await CarregarPerfil();
|
||||
}
|
||||
|
||||
private async Task CarregarPerfil()
|
||||
{
|
||||
try
|
||||
{
|
||||
var user = _firebaseService.AuthClient.User;
|
||||
if (user != null)
|
||||
{
|
||||
// Vai buscar os dados à Realtime Database
|
||||
var perfil = await _firebaseService.DbClient
|
||||
.Child("Users")
|
||||
.Child(user.Uid)
|
||||
.OnceSingleAsync<UserProfile>();
|
||||
|
||||
if (perfil != null)
|
||||
{
|
||||
NomeLabel.Text = perfil.Nome;
|
||||
EmailLabel.Text = perfil.Email;
|
||||
TelemovelLabel.Text = $"Telemóvel: {perfil.Telemovel}";
|
||||
GeneroLabel.Text = $"Género: {perfil.Genero}";
|
||||
|
||||
// Esconde o loading e mostra os dados
|
||||
LoadingIndicator.IsRunning = false;
|
||||
LoadingIndicator.IsVisible = false;
|
||||
ProfileInfoLayout.IsVisible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
await DisplayAlert("Erro", "Não foi possível carregar o perfil.", "OK");
|
||||
}
|
||||
}
|
||||
|
||||
private async void OnLogoutClicked(object sender, EventArgs e)
|
||||
{
|
||||
_firebaseService.AuthClient.SignOut();
|
||||
// Volta para o Login e limpa o histórico
|
||||
await Shell.Current.GoToAsync("//LoginPage");
|
||||
}
|
||||
}
|
||||
|
||||
// Classe simples no final do ficheiro para ajudar a ler os dados do Firebase
|
||||
public class UserProfile
|
||||
{
|
||||
public string? Nome { get; set; }
|
||||
public string? Email { get; set; }
|
||||
public string? Telemovel { get; set; }
|
||||
public string? Genero { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user