清理 GlobalConfig (#2903)

This commit is contained in:
Glavo 2024-03-08 10:01:01 +08:00 committed by GitHub
parent 24fc436870
commit 20d93dd085
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -21,9 +21,7 @@ import com.google.gson.*;
import com.google.gson.annotations.JsonAdapter; import com.google.gson.annotations.JsonAdapter;
import javafx.beans.InvalidationListener; import javafx.beans.InvalidationListener;
import javafx.beans.Observable; import javafx.beans.Observable;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.IntegerProperty; import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleIntegerProperty;
import org.jackhuang.hmcl.util.javafx.ObservableHelper; import org.jackhuang.hmcl.util.javafx.ObservableHelper;
import org.jackhuang.hmcl.util.javafx.PropertyUtils; import org.jackhuang.hmcl.util.javafx.PropertyUtils;
@ -33,7 +31,7 @@ import java.lang.reflect.Type;
import java.util.*; import java.util.*;
@JsonAdapter(GlobalConfig.Serializer.class) @JsonAdapter(GlobalConfig.Serializer.class)
public class GlobalConfig implements Cloneable, Observable { public final class GlobalConfig implements Cloneable, Observable {
@Nullable @Nullable
public static GlobalConfig fromJson(String json) throws JsonParseException { public static GlobalConfig fromJson(String json) throws JsonParseException {
@ -47,17 +45,13 @@ public class GlobalConfig implements Cloneable, Observable {
return instance; return instance;
} }
private IntegerProperty agreementVersion = new SimpleIntegerProperty(); private final IntegerProperty agreementVersion = new SimpleIntegerProperty();
private IntegerProperty platformPromptVersion = new SimpleIntegerProperty(); private final IntegerProperty platformPromptVersion = new SimpleIntegerProperty();
private BooleanProperty multiplayerRelay = new SimpleBooleanProperty();
private IntegerProperty multiplayerAgreementVersion = new SimpleIntegerProperty(0);
private final Map<String, Object> unknownFields = new HashMap<>(); private final Map<String, Object> unknownFields = new HashMap<>();
private transient ObservableHelper helper = new ObservableHelper(this); private final transient ObservableHelper helper = new ObservableHelper(this);
public GlobalConfig() { public GlobalConfig() {
PropertyUtils.attachListener(this, helper); PropertyUtils.attachListener(this, helper);
@ -106,37 +100,10 @@ public class GlobalConfig implements Cloneable, Observable {
this.platformPromptVersion.set(platformPromptVersion); this.platformPromptVersion.set(platformPromptVersion);
} }
public boolean isMultiplayerRelay() { public static final class Serializer implements JsonSerializer<GlobalConfig>, JsonDeserializer<GlobalConfig> {
return multiplayerRelay.get();
}
public BooleanProperty multiplayerRelayProperty() {
return multiplayerRelay;
}
public void setMultiplayerRelay(boolean multiplayerRelay) {
this.multiplayerRelay.set(multiplayerRelay);
}
public int getMultiplayerAgreementVersion() {
return multiplayerAgreementVersion.get();
}
public IntegerProperty multiplayerAgreementVersionProperty() {
return multiplayerAgreementVersion;
}
public void setMultiplayerAgreementVersion(int multiplayerAgreementVersion) {
this.multiplayerAgreementVersion.set(multiplayerAgreementVersion);
}
public static class Serializer implements JsonSerializer<GlobalConfig>, JsonDeserializer<GlobalConfig> {
private static final Set<String> knownFields = new HashSet<>(Arrays.asList( private static final Set<String> knownFields = new HashSet<>(Arrays.asList(
"agreementVersion", "agreementVersion",
"platformPromptVersion", "platformPromptVersion"
"multiplayerToken",
"multiplayerRelay",
"multiplayerAgreementVersion"
)); ));
@Override @Override
@ -148,8 +115,6 @@ public class GlobalConfig implements Cloneable, Observable {
JsonObject jsonObject = new JsonObject(); JsonObject jsonObject = new JsonObject();
jsonObject.add("agreementVersion", context.serialize(src.getAgreementVersion())); jsonObject.add("agreementVersion", context.serialize(src.getAgreementVersion()));
jsonObject.add("platformPromptVersion", context.serialize(src.getPlatformPromptVersion())); jsonObject.add("platformPromptVersion", context.serialize(src.getPlatformPromptVersion()));
jsonObject.add("multiplayerRelay", context.serialize(src.isMultiplayerRelay()));
jsonObject.add("multiplayerAgreementVersion", context.serialize(src.getMultiplayerAgreementVersion()));
for (Map.Entry<String, Object> entry : src.unknownFields.entrySet()) { for (Map.Entry<String, Object> entry : src.unknownFields.entrySet()) {
jsonObject.add(entry.getKey(), context.serialize(entry.getValue())); jsonObject.add(entry.getKey(), context.serialize(entry.getValue()));
} }
@ -166,8 +131,6 @@ public class GlobalConfig implements Cloneable, Observable {
GlobalConfig config = new GlobalConfig(); GlobalConfig config = new GlobalConfig();
config.setAgreementVersion(Optional.ofNullable(obj.get("agreementVersion")).map(JsonElement::getAsInt).orElse(0)); config.setAgreementVersion(Optional.ofNullable(obj.get("agreementVersion")).map(JsonElement::getAsInt).orElse(0));
config.setPlatformPromptVersion(Optional.ofNullable(obj.get("platformPromptVersion")).map(JsonElement::getAsInt).orElse(0)); config.setPlatformPromptVersion(Optional.ofNullable(obj.get("platformPromptVersion")).map(JsonElement::getAsInt).orElse(0));
config.setMultiplayerRelay(Optional.ofNullable(obj.get("multiplayerRelay")).map(JsonElement::getAsBoolean).orElse(false));
config.setMultiplayerAgreementVersion(Optional.ofNullable(obj.get("multiplayerAgreementVersion")).map(JsonElement::getAsInt).orElse(0));
for (Map.Entry<String, JsonElement> entry : obj.entrySet()) { for (Map.Entry<String, JsonElement> entry : obj.entrySet()) {
if (!knownFields.contains(entry.getKey())) { if (!knownFields.contains(entry.getKey())) {