70 lines
2.0 KiB
C#
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; }
|
|
} |