Add profile theme and profile effects to the DiscordUser model
All checks were successful
Deploy API / deploy (ubuntu-latest, 2.44.0) (push) Successful in 1m12s
All checks were successful
Deploy API / deploy (ubuntu-latest, 2.44.0) (push) Successful in 1m12s
This commit is contained in:
parent
3516fbc273
commit
e8bfc88e1e
@ -4,7 +4,10 @@ import kong.unirest.core.json.JSONArray;
|
|||||||
import kong.unirest.core.json.JSONObject;
|
import kong.unirest.core.json.JSONObject;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A linked connection to a {@link DiscordUser}.
|
* A linked connection to a {@link DiscordUser}.
|
||||||
|
@ -79,6 +79,16 @@ public final class DiscordUser {
|
|||||||
*/
|
*/
|
||||||
private final String bannerColor;
|
private final String bannerColor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The profile theme of this user, if any.
|
||||||
|
*/
|
||||||
|
private final ProfileTheme profileTheme;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The profile effect this user has, if any.
|
||||||
|
*/
|
||||||
|
private final ProfileEffect profileEffect;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The custom status of this user, if any.
|
* The custom status of this user, if any.
|
||||||
*/
|
*/
|
||||||
@ -199,11 +209,12 @@ public final class DiscordUser {
|
|||||||
// Finally return the constructed user
|
// Finally return the constructed user
|
||||||
return new DiscordUser(
|
return new DiscordUser(
|
||||||
snowflake, detailsJson.getString("username"), legacyUsername, detailsJson.optString("global_name", null),
|
snowflake, detailsJson.getString("username"), legacyUsername, detailsJson.optString("global_name", null),
|
||||||
discriminator, UserFlags.fromJson(detailsJson), Avatar.fromJson(snowflake, discriminator, legacyUsername != null, detailsJson), avatarDecoration,
|
discriminator, UserFlags.fromJson(detailsJson), Avatar.fromJson(snowflake, discriminator, legacyUsername != null, detailsJson),
|
||||||
Banner.fromJson(snowflake, detailsJson), detailsJson.optString("banner_color", null), CustomStatus.fromActivities(activities),
|
avatarDecoration, Banner.fromJson(snowflake, detailsJson), detailsJson.optString("banner_color", null),
|
||||||
bio, pronouns, accentColor, onlineStatus, member == null ? EnumSet.noneOf(ClientType.class) : member.getActiveClients(), activities,
|
ProfileTheme.fromJson(profileJson), ProfileEffect.fromJson(profileJson), CustomStatus.fromActivities(activities), bio, pronouns, accentColor,
|
||||||
SpotifyActivity.fromActivities(activities), UserBadge.fromJson(userJson), ConnectedAccount.fromJson(userJson), clan, nitroSubscription,
|
onlineStatus, member == null ? EnumSet.noneOf(ClientType.class) : member.getActiveClients(), activities, SpotifyActivity.fromActivities(activities),
|
||||||
detailsJson.optBoolean("bot", false), DiscordUtils.getTimeCreated(snowflake)
|
UserBadge.fromJson(userJson), ConnectedAccount.fromJson(userJson), clan, nitroSubscription, detailsJson.optBoolean("bot", false),
|
||||||
|
DiscordUtils.getTimeCreated(snowflake)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
package me.braydon.tether.model.user;
|
||||||
|
|
||||||
|
import kong.unirest.core.json.JSONObject;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A profile effect for a {@link DiscordUser}.
|
||||||
|
*
|
||||||
|
* @author Braydon
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor(access = AccessLevel.PRIVATE) @Getter @EqualsAndHashCode
|
||||||
|
public class ProfileEffect {
|
||||||
|
/**
|
||||||
|
* The id of the user's profile effect.
|
||||||
|
*/
|
||||||
|
@NonNull private final String id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The unix time of when this profile effect expires, null if permanent.
|
||||||
|
*/
|
||||||
|
private final Long expires;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a profile effect for a user.
|
||||||
|
*
|
||||||
|
* @param userProfileJson the user profile json
|
||||||
|
* @return the constructed profile effect, null if none
|
||||||
|
*/
|
||||||
|
protected static ProfileEffect fromJson(JSONObject userProfileJson) {
|
||||||
|
JSONObject effectJson;
|
||||||
|
if (userProfileJson == null || ((effectJson = userProfileJson.isNull("profile_effect") ? null
|
||||||
|
: userProfileJson.getJSONObject("profile_effect")) == null)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
String id = effectJson.getString("id");
|
||||||
|
long expires = effectJson.optLong("expires_at", -1L);
|
||||||
|
return new ProfileEffect(id, expires == -1L ? null : expires);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package me.braydon.tether.model.user;
|
||||||
|
|
||||||
|
import kong.unirest.core.json.JSONArray;
|
||||||
|
import kong.unirest.core.json.JSONObject;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The theme of a {@link DiscordUser}'s profile.
|
||||||
|
*
|
||||||
|
* @author Braydon
|
||||||
|
*/
|
||||||
|
@AllArgsConstructor(access = AccessLevel.PRIVATE) @Getter @EqualsAndHashCode
|
||||||
|
public class ProfileTheme {
|
||||||
|
/**
|
||||||
|
* The primary (hex) color of this theme.
|
||||||
|
*/
|
||||||
|
@NonNull private final String primary;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The accent (hex) color of this theme.
|
||||||
|
*/
|
||||||
|
@NonNull private final String accent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a profile theme for a user.
|
||||||
|
*
|
||||||
|
* @param userProfileJson the user profile json
|
||||||
|
* @return the constructed profile theme, null if none
|
||||||
|
*/
|
||||||
|
protected static ProfileTheme fromJson(JSONObject userProfileJson) {
|
||||||
|
JSONArray themeJson;
|
||||||
|
if (userProfileJson == null || ((themeJson = userProfileJson.isNull("theme_colors") ? null
|
||||||
|
: userProfileJson.getJSONArray("theme_colors")) == null)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
String primaryHex = String.format("#%06X", (0xFFFFFF & themeJson.getInt(0)));
|
||||||
|
String accentHex = String.format("#%06X", (0xFFFFFF & themeJson.getInt(1)));
|
||||||
|
return new ProfileTheme(primaryHex, accentHex);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user