diff --git a/src/main/java/com/faforever/client/login/LoginController.java b/src/main/java/com/faforever/client/login/LoginController.java index f0afe43f5a..2dbae8f460 100644 --- a/src/main/java/com/faforever/client/login/LoginController.java +++ b/src/main/java/com/faforever/client/login/LoginController.java @@ -148,10 +148,17 @@ public ServerEndpoints fromString(String string) { if (clientProperties.isUseRemotePreferences()) { initializeFuture = preferencesService.getRemotePreferencesAsync() - .thenApply(clientConfiguration -> { - ServerEndpoints defaultEndpoint = clientConfiguration.getEndpoints().getFirst(); - - clientProperties.updateFromEndpoint(defaultEndpoint); + .thenAccept(clientConfiguration -> { + List endpoints = clientConfiguration.getEndpoints(); + ServerEndpoints startingEndpoint = endpoints.stream() + .filter( + endpoint -> endpoint.getName() + .equals( + loginPrefs.getEndpoint())) + .findFirst() + .orElse(endpoints.getFirst()); + + clientProperties.updateFromEndpoint(startingEndpoint); String minimumVersion = clientConfiguration.getLatestRelease().getMinimumVersion(); boolean shouldUpdate = false; @@ -160,21 +167,26 @@ public ServerEndpoints fromString(String string) { if (shouldUpdate) { fxApplicationThreadExecutor.execute(() -> showClientOutdatedPane(minimumVersion)); + return; } } fxApplicationThreadExecutor.execute(() -> { - environmentComboBox.getItems().addAll(clientConfiguration.getEndpoints()); - environmentComboBox.getSelectionModel().select(defaultEndpoint); + environmentComboBox.getItems().addAll(endpoints); + environmentComboBox.getSelectionModel().select(startingEndpoint); + loginPrefs.endpointProperty() + .bind(environmentComboBox.getSelectionModel() + .selectedItemProperty() + .map(ServerEndpoints::getName) + .when(showing)); }); - return shouldUpdate; - }).exceptionally(throwable -> { + + if (loginPrefs.isRememberMe() && loginPrefs.getRefreshToken() != null) { + loginWithToken(); + } + }).exceptionally(throwable -> { log.error("Could not read remote preferences", throwable); - return false; - }).thenAccept(shouldUpdate -> { - if (!shouldUpdate && loginPrefs.isRememberMe() && loginPrefs.getRefreshToken() != null) { - loginWithToken(); - } + return null; }); } else { initializeFuture = CompletableFuture.completedFuture(null); diff --git a/src/main/java/com/faforever/client/preferences/LoginPrefs.java b/src/main/java/com/faforever/client/preferences/LoginPrefs.java index 6f665a8e6d..44d037981f 100644 --- a/src/main/java/com/faforever/client/preferences/LoginPrefs.java +++ b/src/main/java/com/faforever/client/preferences/LoginPrefs.java @@ -8,9 +8,22 @@ public class LoginPrefs { + private final StringProperty endpoint = new SimpleStringProperty(); private final StringProperty refreshToken = new SimpleStringProperty(); private final BooleanProperty rememberMe = new SimpleBooleanProperty(true); + public String getEndpoint() { + return endpoint.get(); + } + + public StringProperty endpointProperty() { + return endpoint; + } + + public void setEndpoint(String endpoint) { + this.endpoint.set(endpoint); + } + public String getRefreshToken() { return refreshToken.get(); }