Skip to content

Commit

Permalink
Add avatar decoration (discord/discord-api-docs#5723)
Browse files Browse the repository at this point in the history
  • Loading branch information
KubaZ2 committed Dec 22, 2022
1 parent 1f9e31f commit 87baed8
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 66 deletions.
8 changes: 1 addition & 7 deletions NetCord/ForumLayoutType.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NetCord;
namespace NetCord;

public enum ForumLayoutType
{
Expand Down
17 changes: 1 addition & 16 deletions NetCord/GuildUser.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.Globalization;

using NetCord.JsonModels;
using NetCord.JsonModels;
using NetCord.Rest;

namespace NetCord;
Expand All @@ -10,19 +8,6 @@ public class GuildUser : User, IJsonModel<JsonGuildUser>
JsonGuildUser IJsonModel<JsonGuildUser>.JsonModel => _jsonModel;
private protected new readonly JsonGuildUser _jsonModel;

public override ulong Id => _jsonModel.User.Id;
public override string Username => _jsonModel.User.Username;
public override ushort Discriminator => _jsonModel.User.Discriminator;
public override string? AvatarHash => _jsonModel.User.AvatarHash;
public override bool IsBot => _jsonModel.User.IsBot;
public override bool? IsSystemUser => _jsonModel.User.IsSystemUser;
public override bool? MfaEnabled => _jsonModel.User.MfaEnabled;
public override CultureInfo? Locale => _jsonModel.User.Locale;
public override bool? Verified => _jsonModel.User.Verified;
public override string? Email => _jsonModel.User.Email;
public override UserFlags? Flags => _jsonModel.User.Flags;
public override PremiumType? PremiumType => _jsonModel.User.PremiumType;
public override UserFlags? PublicFlags => _jsonModel.User.PublicFlags;
public string? Nickname => _jsonModel.Nickname;
public string? GuildAvatarHash => _jsonModel.GuildAvatarHash;
public IReadOnlyList<ulong> RoleIds => _jsonModel.RoleIds;
Expand Down
5 changes: 5 additions & 0 deletions NetCord/ImageUrl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,11 @@ public static ImageUrl GuildUserAvatar(ulong guildId, ulong userId, string avata
return new($"/guilds/{guildId}/users/{userId}/avatars/{avatarHash}", GetExtension(avatarHash, format));
}

public static ImageUrl UserAvatarDecoration(ulong userId, string avatarDecorationHash)
{
return new($"/avatar-decorations/{userId}/{avatarDecorationHash}", "png");
}

public static ImageUrl ApplicationIcon(ulong applicationId, string iconHash, ImageFormat format)
{
return new($"/app-icons/{applicationId}/{iconHash}", GetFormat(format));
Expand Down
27 changes: 15 additions & 12 deletions NetCord/JsonModels/JsonUser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,23 @@ namespace NetCord.JsonModels;
public partial class JsonUser : JsonEntity
{
[JsonPropertyName("username")]
public virtual string Username { get; set; }
public string Username { get; set; }

[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString)]
[JsonPropertyName("discriminator")]
public virtual ushort Discriminator { get; set; }
public ushort Discriminator { get; set; }

[JsonPropertyName("avatar")]
public virtual string? AvatarHash { get; set; }
public string? AvatarHash { get; set; }

[JsonPropertyName("bot")]
public virtual bool IsBot { get; set; }
public bool IsBot { get; set; }

[JsonPropertyName("system")]
public virtual bool? IsSystemUser { get; set; }
public bool? IsSystemUser { get; set; }

[JsonPropertyName("mfa_enabled")]
public virtual bool? MfaEnabled { get; set; }
public bool? MfaEnabled { get; set; }

[JsonPropertyName("banner")]
public string? BannerHash { get; set; }
Expand All @@ -31,22 +31,25 @@ public partial class JsonUser : JsonEntity
public Color? AccentColor { get; set; }

[JsonPropertyName("locale")]
public virtual CultureInfo? Locale { get; set; }
public CultureInfo? Locale { get; set; }

[JsonPropertyName("verified")]
public virtual bool? Verified { get; set; }
public bool? Verified { get; set; }

[JsonPropertyName("email")]
public virtual string? Email { get; set; }
public string? Email { get; set; }

[JsonPropertyName("flags")]
public virtual UserFlags? Flags { get; set; }
public UserFlags? Flags { get; set; }

[JsonPropertyName("premium_type")]
public virtual PremiumType? PremiumType { get; set; }
public PremiumType? PremiumType { get; set; }

[JsonPropertyName("public_flags")]
public virtual UserFlags? PublicFlags { get; set; }
public UserFlags? PublicFlags { get; set; }

[JsonPropertyName("avatar_decoration")]
public string? AvatarDecorationHash { get; set; }

[JsonSerializable(typeof(JsonUser))]
public partial class JsonUserSerializerContext : JsonSerializerContext
Expand Down
18 changes: 1 addition & 17 deletions NetCord/TeamUser.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.Globalization;

using NetCord.Rest;
using NetCord.Rest;

namespace NetCord;

Expand All @@ -13,20 +11,6 @@ public class TeamUser : User, IJsonModel<JsonModels.JsonTeamUser>
public IReadOnlyList<string> Permissions => _jsonTeamModel.Permissions;
public ulong TeamId => _jsonTeamModel.TeamId;

public override ulong Id => _jsonTeamModel.User.Id;
public override string Username => _jsonTeamModel.User.Username;
public override ushort Discriminator => _jsonTeamModel.User.Discriminator;
public override string? AvatarHash => _jsonTeamModel.User.AvatarHash;
public override bool IsBot => _jsonTeamModel.User.IsBot;
public override bool? IsSystemUser => _jsonTeamModel.User.IsSystemUser;
public override bool? MfaEnabled => _jsonTeamModel.User.MfaEnabled;
public override CultureInfo? Locale => _jsonTeamModel.User.Locale;
public override bool? Verified => _jsonTeamModel.User.Verified;
public override string? Email => _jsonTeamModel.User.Email;
public override UserFlags? Flags => _jsonTeamModel.User.Flags;
public override PremiumType? PremiumType => _jsonTeamModel.User.PremiumType;
public override UserFlags? PublicFlags => _jsonTeamModel.User.PublicFlags;

public TeamUser(JsonModels.JsonTeamUser jsonModel, RestClient client) : base(jsonModel.User, client)
{
_jsonTeamModel = jsonModel;
Expand Down
33 changes: 19 additions & 14 deletions NetCord/User.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,21 @@ public class User : ClientEntity, IJsonModel<JsonModels.JsonUser>
private protected readonly JsonModels.JsonUser _jsonModel;

public override ulong Id => _jsonModel.Id;
public virtual string Username => _jsonModel.Username;
public virtual ushort Discriminator => _jsonModel.Discriminator;
public virtual string? AvatarHash => _jsonModel.AvatarHash;
public virtual bool IsBot => _jsonModel.IsBot;
public virtual bool? IsSystemUser => _jsonModel.IsSystemUser;
public virtual bool? MfaEnabled => _jsonModel.MfaEnabled;
public virtual string? BannerHash => _jsonModel.BannerHash;
public virtual Color? AccentColor => _jsonModel.AccentColor;
public virtual CultureInfo? Locale => _jsonModel.Locale;
public virtual bool? Verified => _jsonModel.Verified;
public virtual string? Email => _jsonModel.Email;
public virtual UserFlags? Flags => _jsonModel.Flags;
public virtual PremiumType? PremiumType => _jsonModel.PremiumType;
public virtual UserFlags? PublicFlags => _jsonModel.PublicFlags;
public string Username => _jsonModel.Username;
public ushort Discriminator => _jsonModel.Discriminator;
public string? AvatarHash => _jsonModel.AvatarHash;
public bool IsBot => _jsonModel.IsBot;
public bool? IsSystemUser => _jsonModel.IsSystemUser;
public bool? MfaEnabled => _jsonModel.MfaEnabled;
public string? BannerHash => _jsonModel.BannerHash;
public Color? AccentColor => _jsonModel.AccentColor;
public CultureInfo? Locale => _jsonModel.Locale;
public bool? Verified => _jsonModel.Verified;
public string? Email => _jsonModel.Email;
public UserFlags? Flags => _jsonModel.Flags;
public PremiumType? PremiumType => _jsonModel.PremiumType;
public UserFlags? PublicFlags => _jsonModel.PublicFlags;
public string? AvatarDecorationHash => _jsonModel.AvatarDecorationHash;

public User(JsonModels.JsonUser jsonModel, RestClient client) : base(client)
{
Expand All @@ -38,6 +39,10 @@ public User(JsonModels.JsonUser jsonModel, RestClient client) : base(client)

public ImageUrl GetBannerUrl(ImageFormat? format = null) => ImageUrl.UserBanner(Id, BannerHash!, format);

public bool HasAvatarDecoration => AvatarDecorationHash != null;

public ImageUrl GetAvatarDecorationUrl() => ImageUrl.UserAvatarDecoration(Id, AvatarDecorationHash!);

public ImageUrl DefaultAvatarUrl => ImageUrl.DefaultUserAvatar(Discriminator);

public override string ToString() => $"<@{Id}>";
Expand Down

0 comments on commit 87baed8

Please sign in to comment.