package com.example.pap; import android.content.SharedPreferences; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import java.util.HashMap; import java.util.Map; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; public class MudarEmailActivity extends AppCompatActivity { private EditText etAlterarEmail, etAlterarPassword1, etAlterarPassword2; private Button btnConfirmarEmailNovo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mudar_email); etAlterarEmail = findViewById(R.id.etAlterarEmail); etAlterarPassword1 = findViewById(R.id.etAlterarPassword1); etAlterarPassword2 = findViewById(R.id.etAlterarPassword2); btnConfirmarEmailNovo = findViewById(R.id.btnConfirmarEmailNovo); findViewById(R.id.btnVoltarMudarEmail).setOnClickListener(v -> finish()); SharedPreferences dadosPrefs = getSharedPreferences("MeusDadosApp", MODE_PRIVATE); btnConfirmarEmailNovo.setOnClickListener(v -> { String novoEmail = etAlterarEmail.getText().toString().trim(); String pass1 = etAlterarPassword1.getText().toString().trim(); String pass2 = etAlterarPassword2.getText().toString().trim(); if (novoEmail.isEmpty() || pass1.isEmpty() || pass2.isEmpty()) { Toast.makeText(this, "Preenche todos os campos!", Toast.LENGTH_SHORT).show(); return; } // 1. Validação: Verifica se os dois campos de password antiga coincidem if (!pass1.equals(pass2)) { Toast.makeText(this, "As confirmações de password não coincidem!", Toast.LENGTH_SHORT).show(); return; } // 2. Validação: Verifica se a password escrita é mesmo a senha correta da conta String passwordReal = dadosPrefs.getString("password", ""); if (!passwordReal.isEmpty() && !pass1.equals(passwordReal)) { Toast.makeText(this, "A password atual introduzida está errada!", Toast.LENGTH_SHORT).show(); return; } String token = dadosPrefs.getString("access_token", ""); if (token.isEmpty()) { Toast.makeText(this, "Erro: Faz login novamente.", Toast.LENGTH_LONG).show(); return; } // Envia as alterações para o Supabase Map updates = new HashMap<>(); updates.put("email", novoEmail); SupabaseApi api = SupabaseConfig.getRetrofit().create(SupabaseApi.class); api.updateUserData(SupabaseConfig.SUPABASE_KEY, "Bearer " + token, updates).enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) { Toast.makeText(MudarEmailActivity.this, "Vai à caixa do novo email confirmar!", Toast.LENGTH_LONG).show(); finish(); } else { Toast.makeText(MudarEmailActivity.this, "Erro ao mudar o email no Supabase.", Toast.LENGTH_LONG).show(); } } @Override public void onFailure(Call call, Throwable t) { Toast.makeText(MudarEmailActivity.this, "Falha na internet.", Toast.LENGTH_SHORT).show(); } }); }); } }