diff --git a/src/main/java/envoy/client/net/Client.java b/src/main/java/envoy/client/net/Client.java index 0d09780..7aaf28b 100644 --- a/src/main/java/envoy/client/net/Client.java +++ b/src/main/java/envoy/client/net/Client.java @@ -141,7 +141,7 @@ public class Client implements Closeable { receiver.registerProcessor(MessageStatusChangeEvent.class, new MessageStatusChangeEventProcessor()); // Process user status changes - receiver.registerProcessor(UserStatusChangeEvent.class, new UserStatusChangeProcessor(localDB)); + receiver.registerProcessor(UserStatusChangeEvent.class, eventBus::dispatch); // Process message ID generation receiver.registerProcessor(IDGenerator.class, localDB::setIDGenerator); diff --git a/src/main/java/envoy/client/net/UserStatusChangeProcessor.java b/src/main/java/envoy/client/net/UserStatusChangeProcessor.java deleted file mode 100644 index 9120662..0000000 --- a/src/main/java/envoy/client/net/UserStatusChangeProcessor.java +++ /dev/null @@ -1,33 +0,0 @@ -package envoy.client.net; - -import java.util.function.Consumer; - -import envoy.client.data.LocalDB; -import envoy.data.User; -import envoy.event.EventBus; -import envoy.event.UserStatusChangeEvent; - -/** - * Project: envoy-client
- * File: UserStatusChangeProcessor.java
- * Created: 2 Feb 2020
- * - * @author Leon Hofmeister - * @since Envoy Client v0.3-alpha - */ -public class UserStatusChangeProcessor implements Consumer { - - private final LocalDB localDB; - - /** - * @param localDB the local database in which status updates will by applied - * @since Envoy Client v0.3-alpha - */ - public UserStatusChangeProcessor(LocalDB localDB) { this.localDB = localDB; } - - @Override - public void accept(UserStatusChangeEvent evt) { - localDB.getUsers().values().stream().filter(u -> u.getID() == evt.getID()).map(User.class::cast).findFirst().get().setStatus(evt.get()); - EventBus.getInstance().dispatch(evt); - } -} diff --git a/src/main/java/envoy/client/ui/controller/ChatScene.java b/src/main/java/envoy/client/ui/controller/ChatScene.java index 6fdbd2f..e57dedf 100644 --- a/src/main/java/envoy/client/ui/controller/ChatScene.java +++ b/src/main/java/envoy/client/ui/controller/ChatScene.java @@ -22,9 +22,7 @@ import envoy.client.net.WriteProxy; import envoy.client.ui.ContactListCell; import envoy.client.ui.MessageListCell; import envoy.client.ui.SceneContext; -import envoy.data.Contact; -import envoy.data.Message; -import envoy.data.MessageBuilder; +import envoy.data.*; import envoy.event.EventBus; import envoy.event.MessageStatusChangeEvent; import envoy.event.UserStatusChangeEvent; @@ -105,7 +103,16 @@ public final class ChatScene { }); // Listen to user status changes - eventBus.register(UserStatusChangeEvent.class, e -> Platform.runLater(userList::refresh)); + eventBus.register(UserStatusChangeEvent.class, e -> + userList.getItems() + .stream() + .filter(c -> c.getID() == e.getID()) + .findAny() + .ifPresent(u -> { + ((User) u).setStatus(e.get()); + Platform.runLater(userList::refresh); + }) + ); // Listen to contacts changes eventBus.register(ContactOperationEvent.class, e -> {