From f47ccfa17739568c9f03b7f55525093412dfa97d Mon Sep 17 00:00:00 2001 From: Lucwousin Date: Mon, 14 Oct 2019 05:51:26 +0200 Subject: [PATCH] async account session check --- .../http/api/account/AccountClient.java | 32 ++++++++------ .../client/account/SessionManager.java | 43 ++++++++++--------- 2 files changed, 40 insertions(+), 35 deletions(-) diff --git a/http-api/src/main/java/net/runelite/http/api/account/AccountClient.java b/http-api/src/main/java/net/runelite/http/api/account/AccountClient.java index 0a286cd70e..f2cf7b560a 100644 --- a/http-api/src/main/java/net/runelite/http/api/account/AccountClient.java +++ b/http-api/src/main/java/net/runelite/http/api/account/AccountClient.java @@ -25,6 +25,7 @@ package net.runelite.http.api.account; import com.google.gson.JsonParseException; +import io.reactivex.Observable; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -96,7 +97,7 @@ public class AccountClient } } - public boolean sessionCheck() + public Observable sessionCheck() { HttpUrl url = RuneLiteAPI.getApiBase().newBuilder() .addPathSegment("account") @@ -105,19 +106,22 @@ public class AccountClient logger.debug("Built URI: {}", url); - Request request = new Request.Builder() - .header(RuneLiteAPI.RUNELITE_AUTH, uuid.toString()) - .url(url) - .build(); + return Observable.fromCallable(() -> + { + Request request = new Request.Builder() + .header(RuneLiteAPI.RUNELITE_AUTH, uuid.toString()) + .url(url) + .build(); - try (Response response = RuneLiteAPI.CLIENT.newCall(request).execute()) - { - return response.isSuccessful(); - } - catch (IOException ex) - { - logger.debug("Unable to verify session", ex); - return true; // assume it is still valid if the server is unreachable - } + try (Response response = RuneLiteAPI.CLIENT.newCall(request).execute()) + { + return response.isSuccessful(); + } + catch (IOException ex) + { + logger.debug("Unable to verify session", ex); + return true; // assume it is still valid if the server is unreachable + } + }); } } diff --git a/runelite-client/src/main/java/net/runelite/client/account/SessionManager.java b/runelite-client/src/main/java/net/runelite/client/account/SessionManager.java index 62e003bc44..b1aa719d08 100644 --- a/runelite-client/src/main/java/net/runelite/client/account/SessionManager.java +++ b/runelite-client/src/main/java/net/runelite/client/account/SessionManager.java @@ -25,6 +25,7 @@ package net.runelite.client.account; import com.google.gson.Gson; +import io.reactivex.schedulers.Schedulers; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; @@ -37,7 +38,6 @@ import javax.inject.Singleton; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import net.runelite.client.RuneLite; -import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.EventBus; import net.runelite.client.events.SessionClose; import net.runelite.client.events.SessionOpen; @@ -57,13 +57,11 @@ public class SessionManager private AccountSession accountSession; private final EventBus eventBus; - private final ConfigManager configManager; private final WSClient wsClient; @Inject - private SessionManager(ConfigManager configManager, EventBus eventBus, WSClient wsClient) + private SessionManager(EventBus eventBus, WSClient wsClient) { - this.configManager = configManager; this.eventBus = eventBus; this.wsClient = wsClient; @@ -94,13 +92,26 @@ public class SessionManager // Check if session is still valid AccountClient accountClient = new AccountClient(session.getUuid()); - if (!accountClient.sessionCheck()) - { - log.debug("Loaded session {} is invalid", session.getUuid()); - return; - } - - openSession(session, false); + accountClient.sessionCheck() + .subscribeOn(Schedulers.io()) + .subscribe(b -> + { + if (!b) + { + log.debug("Loaded session {} is invalid", session.getUuid()); + } + else + { + openSession(session, false); + } + }, ex -> + { + if (ex instanceof IOException) + { + log.debug("Unable to verify session", ex); + openSession(session, false); + } + }); } private void saveSession() @@ -143,13 +154,6 @@ public class SessionManager accountSession = session; - if (session.getUsername() != null) - { - // Initialize config for new session - // If the session isn't logged in yet, don't switch to the new config - configManager.switchSession(); - } - eventBus.post(SessionOpen.class, new SessionOpen()); } @@ -176,9 +180,6 @@ public class SessionManager accountSession = null; // No more account - // Restore config - configManager.switchSession(); - eventBus.post(SessionClose.class, new SessionClose()); }