Skip to content

Commit

Permalink
Merge pull request #67 from Presence-Man/remove-shutdown-state
Browse files Browse the repository at this point in the history
Remove shutdown state
  • Loading branch information
xxAROX authored Jul 24, 2024
2 parents d44971a + a586f9a commit 4e00fe6
Show file tree
Hide file tree
Showing 9 changed files with 37 additions and 72 deletions.
2 changes: 1 addition & 1 deletion src/main/java/xxAROX/PresenceMan/Application/AppInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import java.util.StringJoiner;

public final class AppInfo {
public final static int[] version = new int[]{ 1,3,1 };
public final static int[] version = new int[]{ 1,3,1,12 };
public final static String name = "Presence-Man";
public static String icon = "icon.png";
public static long discord_application_id = 1133823892486623344L;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@ public class Gateway {
public static Integer port = 15151;
public static Integer usual_port = 15151;

public static boolean broken = false;
public static boolean broken_popup = false;
public static boolean broken = true;

public static String getUrl() {
return protocol + (AppInfo.development && address.contains("presence-man.com") ? "develop." + address : address) + (port == null ? "" : ":" + port+(AppInfo.development ? 2 : 0));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import net.raphimc.minecraftauth.step.AbstractStep;
import net.raphimc.minecraftauth.step.bedrock.session.StepFullBedrockSession;
import net.raphimc.minecraftauth.util.MicrosoftConstants;
import xxAROX.PresenceMan.Application.App;
import xxAROX.PresenceMan.Application.entity.Gateway;

import javax.imageio.ImageIO;
Expand Down Expand Up @@ -67,7 +66,7 @@ public String getSkinURL(){
return Gateway.getUrl() + skin_url;
}
public String getHeadURL(){
return Gateway.getUrl() + head_url;
return (Gateway.broken ? "https://presence-man.com" : Gateway.getUrl()) + head_url;
}

public Image getHeadImage() {
Expand All @@ -79,9 +78,8 @@ public Image getHeadImage(boolean regenerate) {
try {
img = ImageIO.read(new URL(getHeadURL()));
} catch (Exception e) {
App.getLogger().error("Error while fetching head: ", e);
try {
img = ImageIO.read(new URL(head_url = "https://presence-man.com" + default_head_url));
img = ImageIO.read(new URL("https://presence-man.com" + default_head_url));
} catch (IOException ignored) {}
}
head = img;
Expand All @@ -96,9 +94,8 @@ public Image getSkinImage(boolean regenerate) {
try {
img = ImageIO.read(new URL(getSkinURL()));
} catch (Exception e) {
App.getLogger().error("Error while fetching head: ", e);
try {
img = ImageIO.read(new URL(skin_url = "https://presence-man.com" + Gateway.getUrl() + default_skin_url));
img = ImageIO.read(new URL("https://presence-man.com" + Gateway.getUrl() + default_skin_url));
} catch (IOException ignored) {}
}
skin = img;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ public void heartbeat() {
public void heartbeat(Consumer<HeartbeatPacket> consumer){
if (!connectionState.get().equals(SocketThread.State.CONNECTED)) return;
if (session_token.get() == null && heartbeats_need_a_token) return;
if (heartbeat_pending.get() == 10) {
if (heartbeat_pending.get() == 5) {
resetConnection();
heartbeat_pending.set(0);
return;
Expand Down Expand Up @@ -128,20 +128,16 @@ public void tick(int currentTick) {
if (xboxInfo == null) return;
if (connectionState.get().equals(State.DISCONNECTED) && currentTick %(20*5) == 0) {
if (tries_left.getAndDecrement() <= 0) {
App.getLogger().error("Connection can't be established, shutting down..");
shutdown();
App.getLogger().info(tries_left.get() +1 == default_tries ? "Connecting.." : "Reconnecting..");
tries_left.set(default_tries);
} else {
connectionState.set(State.CONNECTING);
App.getLogger().info(tries_left.get() +1 == default_tries ? "Connecting.." : "Reconnecting..");
if (socket.connect()) {
connectionState.set(State.CONNECTED);
App.getLogger().info(tries_left.get() +1 == default_tries ? "Connected!" : "Reconnected!");
tries_left.set(default_tries);
heartbeat();
} else {
connectionState.set(State.DISCONNECTED);
App.getLogger().warn(tries_left.get() +1 == default_tries ? "Failed to connect to backend!" :"Reconnecting failed!");
}
} else connectionState.set(State.DISCONNECTED);
}
}
if (currentTick %40 == 0) heartbeat();
Expand All @@ -164,31 +160,33 @@ else if (packet instanceof CallbackPacket callbackPacket && callbackPacket.getCa
if (cbp != null) sendPacket(cbp);
continue;
}
System.out.println(packet);
// NOTE: IDK if that works \_('.')_/
packetHandler.forEach(consumer -> consumer.accept(packet));
}
}
} while (!connectionState.get().equals(State.SHUTDOWN));
} while (socket != null);
App.getLogger().debug("[SocketThread]: Bye!");
}

public void shutdown(){
if (connectionState.get().equals(State.SHUTDOWN)) return;
if (socket == null) return;
if (session_token.get() != null && !session_token.get().equalsIgnoreCase("")) sendPacket(new ByeByePacket());
connectionState.set(State.SHUTDOWN);
socket.close();
socket = null;
}

public void wakeup(){
if (!connectionState.get().equals(State.SHUTDOWN)) return;
if (socket != null) return;
connectionState.set(State.DISCONNECTED);
heartbeats_need_a_token = false;
session_token.set(null);
socket = new Socket(this);
socket.connect();
}

public <T extends Packet> boolean sendPacket(@NonNull T packet){
if (connectionState.get().equals(State.SHUTDOWN) || connectionState.get().equals(State.DISCONNECTED)) return false;
if (socket == null || connectionState.get().equals(State.DISCONNECTED)) return false;
if (!connectionState.get().equals(State.CONNECTED) && packet instanceof HeartbeatPacket) return false;
if (session_token.get() != null) packet.setToken(session_token.get());
if (packet instanceof HeartbeatPacket heartbeatPacket) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,11 @@ public void onRun(int currentTick) {
}

public static void ping_backend() {
String content = Utils.WebUtils.get(Gateway.getUrl()).getBody();
var result = content.toLowerCase().contains("jan sohn / xxarox");

Gateway.broken = result;
var response = Utils.WebUtils.get(Gateway.getUrl());
var result = response != null && response.getBody().toLowerCase().contains("jan sohn / xxarox");
if (result) {
ReconnectingTask.deactivate();
Gateway.broken = false;
Gateway.broken_popup = false;
App.getInstance().initSocket();
} else {
Gateway.broken = true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -351,12 +351,15 @@ public void update(APIActivity activity) {

@Override
public void tick(int currentTick) {
String status = switch (App.getInstance().getSocket().getConnectionState().get()) {
case SHUTDOWN -> "ui.tab.home.backend_status.conn.off";
case DISCONNECTED -> "ui.tab.home.backend_status.conn.nop";
case CONNECTING -> "ui.tab.home.backend_status.conn.may";
case CONNECTED -> "ui.tab.home.backend_status.conn.yes";
};
String status = "ui.tab.home.backend_status.conn.off";
if (App.getInstance().getSocket() != null) {
status = switch (App.getInstance().getSocket().getConnectionState().get()) {
case SHUTDOWN -> "ui.tab.home.backend_status.conn.off";
case DISCONNECTED -> "ui.tab.home.backend_status.conn.nop";
case CONNECTING -> "ui.tab.home.backend_status.conn.may";
case CONNECTED -> "ui.tab.home.backend_status.conn.yes";
};
}
if (backend_status != null) backend_status.setText(Lang.get(status));

if (currentTick %20 == 0) update(null); // TODO: maybe remove this
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import xxAROX.PresenceMan.Application.App;
import xxAROX.PresenceMan.Application.entity.Gateway;
import xxAROX.PresenceMan.Application.ui.AUITab;
import xxAROX.PresenceMan.Application.ui.AppUI;
import xxAROX.PresenceMan.Application.ui.popup.PartnerPopup;
Expand Down Expand Up @@ -100,7 +101,7 @@ public void tick(int currentTick) {
private void reloadPartners() {
if (partnerItems != null) partnerItems.clear();
else partnerItems = new ArrayList<>();
var result = Utils.WebUtils.get("https://presence-man.com/api/v1/partners");
var result = Utils.WebUtils.get(Gateway.getUrl()+"/api/v1/partners");
Utils.GSON.fromJson(result.getBody(), JsonArray.class).asList().stream().map(JsonElement::getAsJsonObject).forEach(obj -> {
try {partnerItems.add(new PartnerItem(obj.get("title").getAsString(), obj.get("about_text").getAsString(), obj.get("domain").getAsString(), obj.get("image").isJsonNull() ? null : new ImageIcon(new URL(obj.get("image").getAsString())), obj.get("banner_image").isJsonNull() ? null : new ImageIcon(new URL(obj.get("banner_image").getAsString())), obj.get("enabled").getAsBoolean(), obj.get("url").isJsonNull() ? null : obj.get("url").getAsString()));} catch (MalformedURLException ignore) {}
});
Expand Down
14 changes: 8 additions & 6 deletions src/main/java/xxAROX/PresenceMan/Application/utils/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -230,22 +230,24 @@ public static class WebUtils {
public static WebRequester.Result get(String url, Map<String, String> headers) {
WebRequester.init(GSON, App.getInstance().getTickExecutor());
try {
return WebRequester.get(url, headers).get();
var result = WebRequester.get(url, headers).get();
return result;
} catch (ExecutionException | InterruptedException e) {
App.getLogger().error("Error while executing GET request: ", e);
App.getLogger().error("Error while GET: " + e.getMessage());
return null;
}
return null;
}
public static WebRequester.Result post(String url) {return post(url, new HashMap<>(), new HashMap<>());}
public static WebRequester.Result post(String url, Map<String, String> headers) {return post(url, headers, new HashMap<>());}
public static WebRequester.Result post(String url, Map<String, String> headers, Map<String, String> body) {
WebRequester.init(GSON, App.getInstance().getTickExecutor());
try {
return WebRequester.post(url, headers, body).get();
var result = WebRequester.post(url, headers, body).get();
return result;
} catch (ExecutionException | InterruptedException e) {
App.getLogger().error("Error while executing POST request: ", e);
App.getLogger().error("Error while POST: " + e.getMessage());
return null;
}
return null;
}
}

Expand Down
32 changes: 0 additions & 32 deletions src/test/java/test.java

This file was deleted.

0 comments on commit 4e00fe6

Please sign in to comment.