From 67433275bde96649b67710b90d2ef1ccc4b57529 Mon Sep 17 00:00:00 2001 From: kske Date: Sun, 29 Mar 2020 09:16:29 +0200 Subject: [PATCH] Fixed chat loading from LocalDB into messagList --- src/main/java/envoy/client/data/Chat.java | 3 +++ src/main/java/envoy/client/ui/ChatSceneController.java | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/envoy/client/data/Chat.java b/src/main/java/envoy/client/data/Chat.java index 6f0715c..839daa7 100644 --- a/src/main/java/envoy/client/data/Chat.java +++ b/src/main/java/envoy/client/data/Chat.java @@ -40,6 +40,9 @@ public final class Chat implements Serializable { */ public Chat(User recipient) { this.recipient = recipient; } + @Override + public String toString() { return String.format("Chat[recipient=%s,messages=%d]", recipient, messages.size()); } + /** * Sets the status of all chat messages received from the recipient to * {@code READ} starting from the bottom and stopping once a read message is diff --git a/src/main/java/envoy/client/ui/ChatSceneController.java b/src/main/java/envoy/client/ui/ChatSceneController.java index cff16bf..588f407 100644 --- a/src/main/java/envoy/client/ui/ChatSceneController.java +++ b/src/main/java/envoy/client/ui/ChatSceneController.java @@ -73,7 +73,7 @@ public final class ChatSceneController { @FXML private void userListClicked() { final User user = userList.getSelectionModel().getSelectedItem(); - if (user != null && (currentChat == null || user != currentChat.getRecipient())) { + if (user != null && (currentChat == null || user.getID() != currentChat.getRecipient().getID())) { contactLabel.setText(user.getName()); // Swap observable list @@ -87,7 +87,8 @@ public final class ChatSceneController { // Load the chat or create a new one and add it to the LocalDB currentChat = localDB.getChats() .stream() - .filter(c -> c.getRecipient() == user) + .filter(c -> c.getRecipient().getID() == user + .getID()) .findAny() .orElseGet(() -> { var chat = new Chat(user); localDB.getChats().add(chat); return chat; }); messageList.setItems(FXCollections.observableArrayList(currentChat.getMessages())); @@ -125,7 +126,8 @@ public final class ChatSceneController { } /** - * Sends a message to the server. + * Sends a message to the server and appends it to the current chat. If all + * message IDs have been used, a new ID generator is requested. * * @param message the message to send * @since Envoy Client v0.1-beta @@ -140,7 +142,7 @@ public final class ChatSceneController { messageList.getItems().add(message); // Request a new ID generator if all IDs were used - if (!localDB.getIDGenerator().hasNext()) client.requestIdGenerator(); + if (!localDB.getIDGenerator().hasNext() && client.isOnline()) client.requestIdGenerator(); } catch (IOException e) { logger.log(Level.SEVERE, "Error sending message", e);