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 MudarPasswordActivity extends AppCompatActivity { private EditText etPasswordAntiga, etNovaPassword1, etNovaPassword2; private Button btnConfirmarPassword; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mudar_password); etPasswordAntiga = findViewById(R.id.etPasswordAntiga); etNovaPassword1 = findViewById(R.id.etNovaPassword1); etNovaPassword2 = findViewById(R.id.etNovaPassword2); btnConfirmarPassword = findViewById(R.id.btnConfirmarPassword); findViewById(R.id.btnVoltarMudarPassword).setOnClickListener(v -> finish()); SharedPreferences dadosPrefs = getSharedPreferences("MeusDadosApp", MODE_PRIVATE); btnConfirmarPassword.setOnClickListener(v -> { String passAntiga = etPasswordAntiga.getText().toString().trim(); String novaPass1 = etNovaPassword1.getText().toString().trim(); String novaPass2 = etNovaPassword2.getText().toString().trim(); if (passAntiga.isEmpty() || novaPass1.isEmpty() || novaPass2.isEmpty()) { Toast.makeText(this, "Preenche todos os campos!", Toast.LENGTH_SHORT).show(); return; } // Confirma se as duas passwords novas são iguais if (!novaPass1.equals(novaPass2)) { Toast.makeText(this, "As passwords novas não coincidem!", Toast.LENGTH_SHORT).show(); return; } // Confirma se a password antiga escrita bate certo com a guardada no telemóvel String passwordReal = dadosPrefs.getString("password", ""); if (!passwordReal.isEmpty() && !passAntiga.equals(passwordReal)) { Toast.makeText(this, "A password antiga 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_SHORT).show(); return; } // Atualizar na nuvem Map updates = new HashMap<>(); updates.put("password", novaPass1); 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()) { // Guardar a nova password na memória para os próximos testes SharedPreferences.Editor editor = dadosPrefs.edit(); editor.putString("password", novaPass1); editor.apply(); Toast.makeText(MudarPasswordActivity.this, "Password alterada com sucesso!", Toast.LENGTH_SHORT).show(); finish(); } else { Toast.makeText(MudarPasswordActivity.this, "Erro ao mudar password.", Toast.LENGTH_LONG).show(); } } @Override public void onFailure(Call call, Throwable t) { Toast.makeText(MudarPasswordActivity.this, "Falha na internet.", Toast.LENGTH_SHORT).show(); } }); }); } }