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