From fa2a5d0b24cd6ac4b3cc0577b56a44ed89add7fc Mon Sep 17 00:00:00 2001 From: delvh Date: Fri, 9 Oct 2020 18:23:00 +0200 Subject: [PATCH] Fix Bug resetting user status on login --- .../src/main/java/envoy/client/ui/Startup.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/client/src/main/java/envoy/client/ui/Startup.java b/client/src/main/java/envoy/client/ui/Startup.java index 811ba61..96af931 100644 --- a/client/src/main/java/envoy/client/ui/Startup.java +++ b/client/src/main/java/envoy/client/ui/Startup.java @@ -113,9 +113,13 @@ public final class Startup extends Application { cacheMap.put(GroupMessage.class, new Cache()); cacheMap.put(MessageStatusChange.class, new Cache()); cacheMap.put(GroupMessageStatusChange.class, new Cache()); + final var originalStatus = localDB.getUser().getStatus(); try { client.performHandshake(credentials, cacheMap); if (client.isOnline()) { + + // Restore the original status as the server automatically returns status ONLINE + client.getSender().setStatus(originalStatus); loadChatScene(); client.initReceiver(localDB, cacheMap); return true; @@ -170,7 +174,8 @@ public final class Startup extends Application { private static void loadChatScene() { // Set client user in local database - localDB.setUser(client.getSender()); + final var user = client.getSender(); + localDB.setUser(user); // Initialize chats in local database try { @@ -184,8 +189,13 @@ public final class Startup extends Application { context.initWriteProxy(); - if (client.isOnline()) context.getWriteProxy().flushCache(); - else + if (client.isOnline()) { + context.getWriteProxy().flushCache(); + + // Inform the server that this user has a different user status than expected + if (!user.getStatus().equals(UserStatus.ONLINE)) client.send(new UserStatusChange(user)); + } else + // Set all contacts to offline mode localDB.getChats() .stream()