Fixed incorrect format of userProperties. Closes #286
This commit is contained in:
@@ -66,4 +66,20 @@ public final class PropertyMap extends HashMap<String, String> {
|
|||||||
return result;
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hmcl.auth.yggdrasil;
|
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.auth.*;
|
||||||
import org.jackhuang.hmcl.util.StringUtils;
|
import org.jackhuang.hmcl.util.StringUtils;
|
||||||
import org.jackhuang.hmcl.util.UUIDTypeAdapter;
|
import org.jackhuang.hmcl.util.UUIDTypeAdapter;
|
||||||
@@ -108,7 +110,7 @@ public class YggdrasilAccount extends Account {
|
|||||||
GameProfile profile = session.getSelectedProfile();
|
GameProfile profile = session.getSelectedProfile();
|
||||||
|
|
||||||
return new AuthInfo(profile.getName(), UUIDTypeAdapter.fromUUID(profile.getId()), session.getAccessToken(), profile.getUserType(),
|
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
|
@Override
|
||||||
@@ -167,7 +169,7 @@ public class YggdrasilAccount extends Account {
|
|||||||
Optional.ofNullable(session)
|
Optional.ofNullable(session)
|
||||||
.map(YggdrasilSession::getSelectedProfile)
|
.map(YggdrasilSession::getSelectedProfile)
|
||||||
.map(GameProfile::getProperties)
|
.map(GameProfile::getProperties)
|
||||||
.ifPresent(it -> it.remove("texture"));
|
.ifPresent(it -> it.remove("textures"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user