Fixed incorrect format of userProperties. Closes #286

This commit is contained in:
huanghongxun
2018-02-22 15:46:48 +08:00
parent 7a788d1e6e
commit 0f7b5299e9
2 changed files with 20 additions and 2 deletions

View File

@@ -66,4 +66,20 @@ public final class PropertyMap extends HashMap<String, String> {
return result;
}
}
public static class LegacySerializer
implements JsonSerializer<PropertyMap> {
public static final LegacySerializer INSTANCE = new LegacySerializer();
@Override
public JsonElement serialize(PropertyMap src, Type typeOfSrc, JsonSerializationContext context) {
JsonObject result = new JsonObject();
for (PropertyMap.Entry<String, String> entry : src.entrySet()) {
JsonArray values = new JsonArray();
values.add(new JsonPrimitive(entry.getValue()));
result.add(entry.getKey(), values);
}
return result;
}
}
}

View File

@@ -17,6 +17,8 @@
*/
package org.jackhuang.hmcl.auth.yggdrasil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.jackhuang.hmcl.auth.*;
import org.jackhuang.hmcl.util.StringUtils;
import org.jackhuang.hmcl.util.UUIDTypeAdapter;
@@ -108,7 +110,7 @@ public class YggdrasilAccount extends Account {
GameProfile profile = session.getSelectedProfile();
return new AuthInfo(profile.getName(), UUIDTypeAdapter.fromUUID(profile.getId()), session.getAccessToken(), profile.getUserType(),
YggdrasilService.GSON.toJson(Optional.ofNullable(session.getUser()).map(User::getProperties).orElseGet(PropertyMap::new)));
new GsonBuilder().registerTypeAdapter(PropertyMap.class, PropertyMap.LegacySerializer.INSTANCE).create().toJson(Optional.ofNullable(session.getUser()).map(User::getProperties).orElseGet(PropertyMap::new)));
}
@Override
@@ -167,7 +169,7 @@ public class YggdrasilAccount extends Account {
Optional.ofNullable(session)
.map(YggdrasilSession::getSelectedProfile)
.map(GameProfile::getProperties)
.ifPresent(it -> it.remove("texture"));
.ifPresent(it -> it.remove("textures"));
}
@Override