108 lines
3.1 KiB
Java
108 lines
3.1 KiB
Java
package de.winniepat.citrus.beta;
|
|
|
|
import de.winniepat.citrus.Client;
|
|
import de.winniepat.citrus.managers.ConfigManager;
|
|
import de.winniepat.citrus.ModConfig;
|
|
import net.minecraft.client.MinecraftClient;
|
|
|
|
import java.util.concurrent.Executors;
|
|
import java.util.concurrent.ScheduledExecutorService;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
public class BetaManager {
|
|
private static BetaManager instance;
|
|
|
|
private final VerificationClient verificationClient;
|
|
private boolean isVerified = false;
|
|
private ScheduledExecutorService scheduler;
|
|
|
|
private BetaManager() {
|
|
this.verificationClient = VerificationClient.getInstance();
|
|
setupPeriodicValidation();
|
|
}
|
|
|
|
public static synchronized BetaManager getInstance() {
|
|
if (instance == null) {
|
|
instance = new BetaManager();
|
|
}
|
|
return instance;
|
|
}
|
|
|
|
public void initialize() {
|
|
Client.debugLog("Initializing Beta Verification System");
|
|
|
|
ConfigManager.load();
|
|
|
|
checkVerificationOnStartup();
|
|
}
|
|
|
|
public void checkVerificationOnStartup() {
|
|
Executors.newSingleThreadExecutor().submit(() -> {
|
|
if (!validateSession()) {
|
|
Client.debugLog("No valid beta session found");
|
|
|
|
ModConfig.BetaConfig betaConfig = ConfigManager.getBetaConfig();
|
|
if (betaConfig.firstLaunch || (!hasBetaKey() && !hasValidToken())) {
|
|
MinecraftClient.getInstance().execute(() -> {
|
|
MinecraftClient client = MinecraftClient.getInstance();
|
|
if (client.currentScreen == null) {
|
|
client.setScreen(new BetaKeyScreen());
|
|
}
|
|
});
|
|
}
|
|
} else {
|
|
Client.debugLog("Beta verification successful");
|
|
}
|
|
});
|
|
}
|
|
|
|
public boolean validateSession() {
|
|
ModConfig.BetaConfig betaConfig = ConfigManager.getBetaConfig();
|
|
|
|
if (!ConfigManager.hasValidToken()) {
|
|
return false;
|
|
}
|
|
|
|
VerificationResult result = verificationClient.validateSession(
|
|
betaConfig.verificationToken
|
|
);
|
|
|
|
if (result.isSuccess()) {
|
|
isVerified = true;
|
|
return true;
|
|
} else {
|
|
isVerified = false;
|
|
betaConfig.verificationToken = "";
|
|
betaConfig.tokenExpiresAt = 0;
|
|
ConfigManager.save();
|
|
return false;
|
|
}
|
|
}
|
|
|
|
private void setupPeriodicValidation() {
|
|
scheduler = Executors.newScheduledThreadPool(1);
|
|
scheduler.scheduleAtFixedRate(() -> {
|
|
if (isVerified) {
|
|
validateSession();
|
|
}
|
|
}, 5, 5, TimeUnit.MINUTES);
|
|
}
|
|
|
|
public void shutdown() {
|
|
if (scheduler != null) {
|
|
scheduler.shutdown();
|
|
}
|
|
}
|
|
|
|
public boolean isVerified() {
|
|
return isVerified;
|
|
}
|
|
|
|
public boolean hasBetaKey() {
|
|
return ConfigManager.hasBetaKey();
|
|
}
|
|
|
|
public boolean hasValidToken() {
|
|
return ConfigManager.hasValidToken();
|
|
}
|
|
} |