Remove filter from ReceivedMessageProcessor, improve handshake

The user is sent after the messages to avoid receiving messages on the
client while switching from handshake to normal mode.
This commit is contained in:
Kai S. K. Engelbart 2020-07-16 21:14:37 +02:00
parent 43dfdc3334
commit 81d4e26cc6
No known key found for this signature in database
GPG Key ID: 0A48559CA32CB48F
3 changed files with 11 additions and 17 deletions

View File

@ -1,14 +1,11 @@
package envoy.client.net; package envoy.client.net;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.logging.Level;
import java.util.logging.Logger;
import envoy.client.event.MessageCreationEvent; import envoy.client.event.MessageCreationEvent;
import envoy.data.Message; import envoy.data.Message;
import envoy.data.Message.MessageStatus; import envoy.data.Message.MessageStatus;
import envoy.event.EventBus; import envoy.event.EventBus;
import envoy.util.EnvoyLog;
/** /**
* Project: <strong>envoy-client</strong><br> * Project: <strong>envoy-client</strong><br>
@ -20,17 +17,12 @@ import envoy.util.EnvoyLog;
*/ */
public class ReceivedMessageProcessor implements Consumer<Message> { public class ReceivedMessageProcessor implements Consumer<Message> {
private static final Logger logger = EnvoyLog.getLogger(ReceivedMessageProcessor.class);
@Override @Override
public void accept(Message message) { public void accept(Message message) {
if (message.getStatus() != MessageStatus.SENT) logger.log(Level.WARNING, "The message has the unexpected status " + message.getStatus());
else {
// Update status to RECEIVED // Update status to RECEIVED
message.nextStatus(); if (message.getStatus() == MessageStatus.SENT) message.nextStatus();
// Dispatch event // Dispatch event
EventBus.getInstance().dispatch(new MessageCreationEvent(message)); EventBus.getInstance().dispatch(new MessageCreationEvent(message));
} }
}
} }

View File

@ -1,5 +1,7 @@
package envoy.client.ui.controller; package envoy.client.ui.controller;
import static envoy.data.Message.MessageStatus.RECEIVED;
import java.awt.Toolkit; import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.StringSelection;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
@ -145,7 +147,7 @@ public final class ChatScene implements Restorable {
logger.log(Level.WARNING, "Could not read current chat: ", e1); logger.log(Level.WARNING, "Could not read current chat: ", e1);
} }
Platform.runLater(() -> { messageList.refresh(); scrollToMessageListEnd(); }); Platform.runLater(() -> { messageList.refresh(); scrollToMessageListEnd(); });
} else chat.incrementUnreadAmount(); } else if (message.getRecipientID() == chat.getRecipient().getID() && message.getStatus() == RECEIVED) chat.incrementUnreadAmount();
// Moving chat with most recent unreadMessages to the top // Moving chat with most recent unreadMessages to the top
Platform.runLater(() -> { Platform.runLater(() -> {
chatList.getItems().remove(chat); chatList.getItems().remove(chat);

View File

@ -110,10 +110,6 @@ public final class LoginCredentialProcessor implements ObjectProcessor<LoginCred
logger.info(user + " successfully authenticated."); logger.info(user + " successfully authenticated.");
connectionManager.registerUser(user.getID(), socketID); connectionManager.registerUser(user.getID(), socketID);
// Change status and notify contacts about it
user.setStatus(ONLINE);
UserStatusChangeProcessor.updateUserStatus(user);
// Complete the handshake // Complete the handshake
writeProxy.write(socketID, user.toCommon()); writeProxy.write(socketID, user.toCommon());
@ -190,6 +186,10 @@ public final class LoginCredentialProcessor implements ObjectProcessor<LoginCred
writeProxy.write(socketID, new MessageStatusChange(gmsgCommon)); writeProxy.write(socketID, new MessageStatusChange(gmsgCommon));
} }
} }
// Change status and notify contacts about it
user.setStatus(ONLINE);
UserStatusChangeProcessor.updateUserStatus(user);
} }
@Override @Override