diff --git a/src/main/java/xxAROX/PresenceMan/Application/App.java b/src/main/java/xxAROX/PresenceMan/Application/App.java index 3f36e0e..dc395ae 100644 --- a/src/main/java/xxAROX/PresenceMan/Application/App.java +++ b/src/main/java/xxAROX/PresenceMan/Application/App.java @@ -184,7 +184,6 @@ public static void setActivity(APIActivity api_activity, boolean queue) { if (discord_core != null && discord_create_params != null) { var activity = api_activity.toDiscord(discord_create_params); discord_core.activityManager().updateActivity(activity); - System.out.println("Updated discord activity!"); } else { if (queue) { APIActivity finalApi_activity = api_activity; diff --git a/src/main/java/xxAROX/PresenceMan/Application/AppInfo.java b/src/main/java/xxAROX/PresenceMan/Application/AppInfo.java index 0fc6a92..faadccc 100644 --- a/src/main/java/xxAROX/PresenceMan/Application/AppInfo.java +++ b/src/main/java/xxAROX/PresenceMan/Application/AppInfo.java @@ -3,7 +3,7 @@ import java.util.StringJoiner; public final class AppInfo { - public final static int[] version = new int[]{ 1,1,3 }; + public final static int[] version = new int[]{ 1,1,4 }; public final static String name = "Presence-Man"; public static String icon = "icon.png"; public static long discord_application_id = 1133823892486623344L; @@ -20,6 +20,6 @@ public static String getVersion(CharSequence delimiter){ } public static void main(String[] args) { - System.out.println(getVersion()); + System.out.println(getVersion()); // NOTE: DO NOT REMOVE } } diff --git a/src/main/java/xxAROX/PresenceMan/Application/RestAPI.java b/src/main/java/xxAROX/PresenceMan/Application/RestAPI.java index 676486e..efc795f 100644 --- a/src/main/java/xxAROX/PresenceMan/Application/RestAPI.java +++ b/src/main/java/xxAROX/PresenceMan/Application/RestAPI.java @@ -2,6 +2,7 @@ import com.google.gson.Gson; import com.google.gson.JsonObject; +import com.google.gson.JsonSyntaxException; import de.jcm.discordgamesdk.GameSDKException; import lombok.AllArgsConstructor; import lombok.NonNull; @@ -31,18 +32,14 @@ public static void heartbeat(){ if (App.getDiscord_core() == null || !App.getDiscord_core().isOpen()) return; try {App.getDiscord_core().userManager().getCurrentUser();} catch (GameSDKException ignore) {return;} if (App.getInstance().xboxUserInfo == null) return; + JsonObject body = new JsonObject(); - JsonObject os = new JsonObject(); body.addProperty("xuid", App.getInstance().xboxUserInfo.getXuid()); body.addProperty("gamertag", App.getInstance().xboxUserInfo.getGamertag()); body.addProperty("user_id", String.valueOf(App.getDiscord_core().userManager().getCurrentUser().getUserId())); - os.addProperty("name", String.valueOf(System.getProperty("os.name"))); // TODO: remove this line of code, I don't care about statistics anymore!! - os.addProperty("arch", String.valueOf(System.getProperty("os.arch"))); // TODO: remove this line of code, I don't care about statistics anymore!! - os.addProperty("version", String.valueOf(System.getProperty("os.version"))); // TODO: remove this line of code, I don't care about statistics anymore!! - body.add("os", os); // TODO: remove this line of code, I don't care about statistics anymore!! - JsonObject response = request(Method.POST, RestAPI.Endpoints.heartbeat, new HashMap<>(), body); + Gateway.connected = response != null; if (response == null) { App.getInstance().network = null; App.getInstance().server = null; @@ -130,7 +127,9 @@ private static JsonObject request(@NonNull Method method, @NonNull String endpoi in.close(); con.disconnect(); return new Gson().fromJson(content.toString(), JsonObject.class); + } catch (JsonSyntaxException ignore) { } catch (IOException e) { + if (Gateway.connected) Gateway.connected = false; if (!Gateway.broken) Gateway.broken = true; } return null; diff --git a/src/main/java/xxAROX/PresenceMan/Application/entity/Gateway.java b/src/main/java/xxAROX/PresenceMan/Application/entity/Gateway.java index b2b6eec..dda5d04 100644 --- a/src/main/java/xxAROX/PresenceMan/Application/entity/Gateway.java +++ b/src/main/java/xxAROX/PresenceMan/Application/entity/Gateway.java @@ -3,11 +3,13 @@ public class Gateway { public static String protocol = "http://"; public static String address = "127.0.0.1"; - public static int port = 15151; + public static Integer port = 15151; + + public static boolean connected = false; public static boolean broken = false; public static boolean broken_popup = false; public static String getUrl() { - return protocol + address + ":" + port; + return protocol + address + (port == null ? "" : ":" + port); } } diff --git a/src/main/java/xxAROX/PresenceMan/Application/scheduler/WaterdogScheduler.java b/src/main/java/xxAROX/PresenceMan/Application/scheduler/WaterdogScheduler.java index eb5a260..b985c61 100644 --- a/src/main/java/xxAROX/PresenceMan/Application/scheduler/WaterdogScheduler.java +++ b/src/main/java/xxAROX/PresenceMan/Application/scheduler/WaterdogScheduler.java @@ -26,7 +26,7 @@ public WaterdogScheduler() { instance = this; ThreadFactoryBuilder builder = ThreadFactoryBuilder.builder().format("Scheduler Executor - #%d").build(); - this.threadedExecutor = new ThreadPoolExecutor(1, Integer.MAX_VALUE, 60, TimeUnit.SECONDS, new SynchronousQueue<>(), builder); + this.threadedExecutor = new ThreadPoolExecutor(Math.round(Runtime.getRuntime().availableProcessors() /2f), Integer.MAX_VALUE, 60, TimeUnit.SECONDS, new SynchronousQueue<>(), builder); } public static WaterdogScheduler getInstance() { diff --git a/src/main/java/xxAROX/PresenceMan/Application/task/FetchGatewayInformationTask.java b/src/main/java/xxAROX/PresenceMan/Application/task/FetchGatewayInformationTask.java index 59db15a..a24c71a 100644 --- a/src/main/java/xxAROX/PresenceMan/Application/task/FetchGatewayInformationTask.java +++ b/src/main/java/xxAROX/PresenceMan/Application/task/FetchGatewayInformationTask.java @@ -24,9 +24,11 @@ public void onRun(int currentTick) { while ((inputLine = in.readLine()) != null) content.append(inputLine); in.close(); JsonObject gateway = new Gson().fromJson(content.toString(), JsonObject.class); + Gateway.protocol = gateway.get("protocol").getAsString(); Gateway.address = gateway.get("address").getAsString(); - Gateway.port = gateway.get("port").getAsInt(); + Gateway.port = gateway.has("port") && !gateway.get("port").isJsonNull() ? gateway.get("port").getAsInt() : null; + ping_backend(); } catch (IOException e) { System.out.println("Error while fetching gateway information: "); @@ -46,7 +48,7 @@ public static void ping_backend() { StringBuilder content = new StringBuilder(); while ((inputLine = in.readLine()) != null) content.append(inputLine); in.close(); - result = content.toString().toLowerCase().contains("presence-man"); + result = content.toString().toLowerCase().contains("jan sohn / xxarox"); } catch (IOException ignore) { } Gateway.broken = result; @@ -54,6 +56,7 @@ public static void ping_backend() { ReconnectingTask.deactivate(); Gateway.broken = false; Gateway.broken_popup = false; + System.out.println("Connected to backend successfully!"); } else { Gateway.broken = true; ReconnectingTask.activate(); diff --git a/src/main/java/xxAROX/PresenceMan/Application/ui/AppUI.java b/src/main/java/xxAROX/PresenceMan/Application/ui/AppUI.java index 550cb05..8a13cce 100644 --- a/src/main/java/xxAROX/PresenceMan/Application/ui/AppUI.java +++ b/src/main/java/xxAROX/PresenceMan/Application/ui/AppUI.java @@ -25,9 +25,6 @@ import java.util.Objects; public class AppUI extends JFrame { - public static final int BORDER_PADDING = 10; - public static final int BODY_BLOCK_PADDING = 10; - public final JTabbedPane contentPane = new JTabbedPane(); private final List tabs = new ArrayList<>(); private final Tray tray = new Tray(); @@ -123,11 +120,13 @@ public void openURL(final String url) { } public void showException(Throwable t) { - App.getInstance().getLogger().error("Caught exception in thread " + Thread.currentThread().getName(), t); - StringBuilder builder = new StringBuilder("An error occurred:\n"); - builder.append("[").append(t.getClass().getSimpleName()).append("] ").append(t.getMessage()).append("\n"); - for (StackTraceElement element : t.getStackTrace()) builder.append(element.toString()).append("\n"); - this.showError(builder.toString()); + t.printStackTrace(); + /* + * StringBuilder builder = new StringBuilder("An error occurred:\n"); + * builder.append("[").append(t.getClass().getSimpleName()).append("] ").append(t.getMessage()).append("\n"); + * for (StackTraceElement element : t.getStackTrace()) builder.append(element.toString()).append("\n"); + * showError(builder.toString()); + */ } public void showInfo(String message) { diff --git a/src/main/java/xxAROX/PresenceMan/Application/ui/tabs/GeneralTab.java b/src/main/java/xxAROX/PresenceMan/Application/ui/tabs/GeneralTab.java index 98754d2..168c3fd 100644 --- a/src/main/java/xxAROX/PresenceMan/Application/ui/tabs/GeneralTab.java +++ b/src/main/java/xxAROX/PresenceMan/Application/ui/tabs/GeneralTab.java @@ -1,6 +1,7 @@ package xxAROX.PresenceMan.Application.ui.tabs; import xxAROX.PresenceMan.Application.App; +import xxAROX.PresenceMan.Application.entity.Gateway; import xxAROX.PresenceMan.Application.ui.AUITab; import xxAROX.PresenceMan.Application.ui.AppUI; @@ -9,6 +10,7 @@ public class GeneralTab extends AUITab { private static final String NOT_CONNECTED = "Not connected"; + private static final String HALF_CONNECTED = "Connected to Presence-Man backend!"; private static final String CONNECTED = "Connected to {server} on {network}"; JLabel label_connection_status; @@ -27,11 +29,6 @@ protected void init(JPanel contentPane) { contentPane.add(label_connection_status); } - public void tick() { - var text = getConnectedMessage(); - if (!label_connection_status.getText().equals(text)) label_connection_status.setText(text); - } - @Override public void setReady() { } @@ -40,6 +37,15 @@ public void setReady() { public void onClose() { } + public void tick() { + updateConnectedMessage(); + } + + public void updateConnectedMessage(){ + var text = getConnectedMessage(); + if (!label_connection_status.getText().equals(text)) label_connection_status.setText(text); + } + private static String getConnectedMessage(){ var activity = App.getInstance().getApi_activity(); boolean connected = activity != null && App.getInstance().getNetwork() != null && App.getInstance().getServer() != null; @@ -47,6 +53,6 @@ private static String getConnectedMessage(){ CONNECTED .replace("{server}", App.getInstance().getServer()) .replace("{network}", App.getInstance().getNetwork()) - : NOT_CONNECTED; + : (Gateway.connected ? HALF_CONNECTED : NOT_CONNECTED); } }