From 12c230af4729168a600e39679a04a83d8bfe3bb6 Mon Sep 17 00:00:00 2001
From: tobias <thinkdifferent055@gmail.com>
Date: Sun, 21 Nov 2021 17:53:52 +0100
Subject: [PATCH] #174 - Reconnect to disconnected servers on icon click

---
 .../WebApiRemoteConnectionStateListener.java      | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/client/WebApiRemoteConnectionStateListener.java b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/client/WebApiRemoteConnectionStateListener.java
index 20756ec1..1c095abf 100644
--- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/client/WebApiRemoteConnectionStateListener.java
+++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/java/de/tobias/playpad/plugin/api/client/WebApiRemoteConnectionStateListener.java
@@ -34,6 +34,8 @@ public class WebApiRemoteConnectionStateListener implements MainWindowListener {
 		connectionStateIcon = new FontIcon(FontAwesomeType.CLOUD);
 		connectionStateIcon.setSize(20);
 
+		connectionStateIcon.setOnMouseClicked(this::onIconClicked);
+
 		connectedProperty = new SimpleIntegerProperty(0);
 		connectedProperty.addListener((observable, oldValue, newValue) -> {
 			Platform.runLater(() -> {
@@ -70,6 +72,19 @@ public class WebApiRemoteConnectionStateListener implements MainWindowListener {
 		);
 	}
 
+	private void onIconClicked(MouseEvent event) {
+		WebApiPlugin$.MODULE$.connections().values().stream()
+				.filter(client -> client.getPlayPadConnectionState() != WebSocketState.OPEN)
+				.forEach(client -> Worker.runLater(() -> {
+					try {
+						client.disconnect();
+						client.connect(1);
+					} catch (IOException | WebSocketException e) {
+						Logger.error(e);
+					}
+				}));
+	}
+
 	@Override
 	public void onInit(IMainViewController mainViewController) {
 		mainViewController.performLayoutDependedAction((oldToolbar, newToolbar) -> {
-- 
GitLab