Use new LinkBrowser in SessionManager

Use new LinkBrowser API in SessionManager for opening the links.

Fixes: #434

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
Tomas Slusny
2018-03-03 02:43:56 +01:00
parent 6790591392
commit 3aa6a92aa3

View File

@@ -27,14 +27,11 @@ package net.runelite.client.account;
import com.google.common.eventbus.EventBus; import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.gson.Gson; import com.google.gson.Gson;
import java.awt.Desktop;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;
import java.time.Instant; import java.time.Instant;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import javax.inject.Inject; import javax.inject.Inject;
@@ -45,6 +42,7 @@ import net.runelite.api.events.SessionClose;
import net.runelite.api.events.SessionOpen; import net.runelite.api.events.SessionOpen;
import net.runelite.client.RuneLite; import net.runelite.client.RuneLite;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.util.LinkBrowser;
import net.runelite.http.api.account.AccountClient; import net.runelite.http.api.account.AccountClient;
import net.runelite.http.api.account.OAuthResponse; import net.runelite.http.api.account.OAuthResponse;
import net.runelite.http.api.ws.messages.LoginResponse; import net.runelite.http.api.ws.messages.LoginResponse;
@@ -60,19 +58,18 @@ public class SessionManager
private AccountSession accountSession; private AccountSession accountSession;
private final EventBus eventBus; private final EventBus eventBus;
@Inject
private ConfigManager configManager; private ConfigManager configManager;
@Inject
private ScheduledExecutorService executor; private ScheduledExecutorService executor;
private final LinkBrowser browser;
private final AccountClient loginClient = new AccountClient(); private final AccountClient loginClient = new AccountClient();
@Inject @Inject
public SessionManager(EventBus eventBus) public SessionManager(ConfigManager configManager, EventBus eventBus, ScheduledExecutorService executor, LinkBrowser browser)
{ {
this.configManager = configManager;
this.eventBus = eventBus; this.eventBus = eventBus;
this.executor = executor;
this.browser = browser;
eventBus.register(this); eventBus.register(this);
} }
@@ -109,7 +106,7 @@ public class SessionManager
openSession(session); openSession(session);
} }
public void saveSession() private void saveSession()
{ {
if (accountSession == null) if (accountSession == null)
{ {
@@ -128,7 +125,7 @@ public class SessionManager
} }
} }
public void deleteSession() private void deleteSession()
{ {
SESSION_FILE.delete(); SESSION_FILE.delete();
} }
@@ -137,9 +134,9 @@ public class SessionManager
* Set the given session as the active session and open a socket to the * Set the given session as the active session and open a socket to the
* server with the given session * server with the given session
* *
* @param session * @param session session
*/ */
public void openSession(AccountSession session) private void openSession(AccountSession session)
{ {
// If the ws session already exists, don't need to do anything // If the ws session already exists, don't need to do anything
if (wsclient == null || !wsclient.checkSession(session)) if (wsclient == null || !wsclient.checkSession(session))
@@ -165,7 +162,7 @@ public class SessionManager
eventBus.post(new SessionOpen()); eventBus.post(new SessionOpen());
} }
public void closeSession() private void closeSession()
{ {
if (wsclient != null) if (wsclient != null)
{ {
@@ -200,7 +197,7 @@ public class SessionManager
public void login() public void login()
{ {
OAuthResponse login; final OAuthResponse login;
try try
{ {
@@ -215,29 +212,8 @@ public class SessionManager
// Create new session // Create new session
openSession(new AccountSession(login.getUid(), Instant.now())); openSession(new AccountSession(login.getUid(), Instant.now()));
if (!Desktop.isDesktopSupported()) // Navigate to login link
{ browser.browse(login.getOauthUrl());
log.info("Desktop is not supported. Visit {}", login.getOauthUrl());
return;
}
Desktop desktop = Desktop.getDesktop();
if (!desktop.isSupported(Desktop.Action.BROWSE))
{
log.info("Desktop browser is not supported. Visit {}", login.getOauthUrl());
return;
}
try
{
desktop.browse(new URI(login.getOauthUrl()));
log.debug("Opened browser to {}", login.getOauthUrl());
}
catch (IOException | URISyntaxException ex)
{
log.warn("Unable to open login page", ex);
}
} }
@Subscribe @Subscribe