Files
ExemploAppMAUI/GuilhermesApp/Pages/ProfilePage.xaml.cs
Guilherme Gaspar 44f456eb29 Guilhermes
2026-03-23 17:42:36 +00:00

70 lines
2.0 KiB
C#

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; }
}