From 930e561ce03a109d7187e2cb8224f5375a381673 Mon Sep 17 00:00:00 2001 From: Harkamal Randhawa Date: Wed, 8 Apr 2026 08:07:17 -0600 Subject: [PATCH] fix desktop chat --- .../controllers/ChatController.java | 59 ++++++++++--------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/desktop/src/main/java/org/example/petshopdesktop/controllers/ChatController.java b/desktop/src/main/java/org/example/petshopdesktop/controllers/ChatController.java index f9dc4940..7ac193a5 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/controllers/ChatController.java +++ b/desktop/src/main/java/org/example/petshopdesktop/controllers/ChatController.java @@ -123,29 +123,20 @@ public class ChatController { @FXML void btnSendClicked() { - try { - if (selectedConversation == null) { - lblChatStatus.setText("Select a conversation"); - return; - } - - String content = txtMessage.getText() == null ? "" : txtMessage.getText().trim(); - if (content.isEmpty()) { - return; - } - - txtMessage.clear(); - boolean sent = realtimeClient.sendMessage(selectedConversation.getId(), content); - if (!sent) { - sendMessageFallback(selectedConversation.getId(), content); - } - } catch (Exception e) { - ActivityLogger.getInstance().logException( - "ChatController.btnSendClicked", - e, - "Sending chat message"); - lblChatStatus.setText("Chat send failed"); + if (selectedConversation == null) { + lblChatStatus.setText("Select a conversation"); + return; } + + String content = txtMessage.getText() == null ? "" : txtMessage.getText().trim(); + if (content.isEmpty()) { + return; + } + + txtMessage.clear(); + btnSend.setDisable(true); + lblChatStatus.setText("Sending message..."); + sendMessage(selectedConversation.getId(), content); } private void loadCustomers() { @@ -211,19 +202,29 @@ public class ChatController { }).start(); } - private void sendMessageFallback(Long conversationId, String content) { + private void sendMessage(Long conversationId, String content) { new Thread(() -> { try { MessageResponse response = ChatApi.getInstance().sendMessage(conversationId, new MessageRequest(content)); Platform.runLater(() -> { - lblChatStatus.setText("Chat fallback active"); - appendMessageIfSelected(response); + btnSend.setDisable(false); + if (!realtimeClient.isConnected()) { + appendMessageIfSelected(response); + } + if (selectedConversation != null && selectedConversation.getId().equals(conversationId)) { + lblChatStatus.setText("Message sent"); + } }); } catch (Exception e) { - Platform.runLater(() -> ActivityLogger.getInstance().logException( - "ChatController.sendMessageFallback", - e, - "Sending chat message for conversation " + conversationId)); + Platform.runLater(() -> { + txtMessage.setText(content); + btnSend.setDisable(false); + lblChatStatus.setText("Chat send failed"); + ActivityLogger.getInstance().logException( + "ChatController.sendMessage", + e, + "Sending chat message for conversation " + conversationId); + }); } }).start(); }