diff --git a/app/src/main/java/com/example/cuida/ui/sns24/Sns24Fragment.java b/app/src/main/java/com/example/cuida/ui/sns24/Sns24Fragment.java index 4988080..7940b6f 100644 --- a/app/src/main/java/com/example/cuida/ui/sns24/Sns24Fragment.java +++ b/app/src/main/java/com/example/cuida/ui/sns24/Sns24Fragment.java @@ -74,39 +74,42 @@ public class Sns24Fragment extends Fragment { "Se os sintomas indicarem perigo de vida ou necessidade de observação urgente, OBRIGATORIAMENTE começa a tua primeira linha com a palavra [GRAVE]. " + "Sintomas do paciente: " + symptoms; - ollama.fazerPergunta(prompt, new Ollama().OllamaCallback() { - @Override - public void onSuccess(String result) { - if (getActivity() != null && binding != null) { - getActivity().runOnUiThread(() -> { - String displayResult = result.replace("[GRAVE]", "").trim(); - binding.textAiResult.setText(displayResult); - binding.buttonAiTriage.setEnabled(true); - - if (result.contains("[GRAVE]")) { - binding.buttonFindHospital.setVisibility(View.VISIBLE); - binding.buttonFindHospital.setOnClickListener(v -> { - Uri gmmIntentUri = Uri.parse("geo:0,0?q=hospital+mais+proximo"); - Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); - mapIntent.setPackage("com.google.android.apps.maps"); - startActivity(mapIntent); - }); - } - saveTriageToHistory(symptoms, displayResult); - }); - } + ollama.fazerPergunta(prompt, new OllamaService.OllamaCallback() { + @Override + public void onSuccess(String result) { + // Já estamos na Main Thread graças ao Handler no serviço! + if (getActivity() != null && binding != null) { + + // Limpa o marcador [GRAVE] para não aparecer ao utilizador + String displayResult = result.replace("[GRAVE]", "").trim(); + + binding.textAiResult.setText(displayResult); + binding.buttonAiTriage.setEnabled(true); + + // Verifica se a string ORIGINAL continha o marcador + if (result.contains("[GRAVE]")) { + binding.buttonFindHospital.setVisibility(View.VISIBLE); + binding.buttonFindHospital.setOnClickListener(v -> { + Uri gmmIntentUri = Uri.parse("geo:0,0?q=hospital+mais+proximo"); + Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); + mapIntent.setPackage("com.google.android.apps.maps"); + startActivity(mapIntent); + }); } + + saveTriageToHistory(symptoms, displayResult); + } + } - @Override - public void onError(Throwable t) { - if (getActivity() != null && binding != null) { - getActivity().runOnUiThread(() -> { - binding.textAiResult.setText("Erro na ligação: " + t.getMessage()); - binding.buttonAiTriage.setEnabled(true); - }); - } - } - }); + @Override + public void onError(Throwable t) { + // Já estamos na Main Thread + if (getActivity() != null && binding != null) { + binding.textAiResult.setText("Erro na ligação: " + t.getMessage()); + binding.buttonAiTriage.setEnabled(true); + } + } +}); } private void saveTriageToHistory(String symptoms, String result) {