diff --git a/core/api/core.api b/core/api/core.api index 9585ae1b2a79..670bd59a6992 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -6401,7 +6401,7 @@ public final class dev/kord/core/entity/GuildWidget : dev/kord/core/KordObject, } public abstract class dev/kord/core/entity/Icon : dev/kord/core/KordObject { - public synthetic fun (ZLdev/kord/rest/route/CdnUrl;Ldev/kord/core/Kord;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ldev/kord/rest/Image$Format;ZLdev/kord/rest/route/CdnUrl;Ldev/kord/core/Kord;Lkotlin/jvm/internal/DefaultConstructorMarker;)V public final fun getAnimated ()Z public final fun getCdnUrl ()Ldev/kord/rest/route/CdnUrl; public final fun getFormat ()Ldev/kord/rest/Image$Format; diff --git a/core/src/main/kotlin/entity/Icon.kt b/core/src/main/kotlin/entity/Icon.kt index 422acc206e45..cfc623174ed1 100644 --- a/core/src/main/kotlin/entity/Icon.kt +++ b/core/src/main/kotlin/entity/Icon.kt @@ -7,15 +7,12 @@ import dev.kord.rest.Image import dev.kord.rest.route.CdnUrl import dev.kord.rest.route.DiscordCdn -public sealed class Icon(public val animated: Boolean, public val cdnUrl: CdnUrl, override val kord: Kord) : - KordObject { - - public val format: Image.Format - get() = when { - animated -> Image.Format.GIF - else -> Image.Format.WEBP - } - +public sealed class Icon( + public val format: Image.Format, + public val animated: Boolean, + public val cdnUrl: CdnUrl, + override val kord: Kord +) : KordObject { public val url: String get() = cdnUrl.toUrl { this.format = this@Icon.format @@ -40,22 +37,22 @@ public sealed class Icon(public val animated: Boolean, public val cdnUrl: CdnUrl }) override fun toString(): String { - return "Icon(type=${javaClass.name},animated=$animated,cdnUrl=$cdnUrl,kord=$kord)" + return "Icon(type=${javaClass.name},format=$format,animated=$animated,cdnUrl=$cdnUrl,kord=$kord)" } public class EmojiIcon(animated: Boolean, emojiId: Snowflake, kord: Kord) : - Icon(animated, DiscordCdn.emoji(emojiId), kord) + Icon(if (animated) Image.Format.GIF else Image.Format.WEBP, animated, DiscordCdn.emoji(emojiId), kord) public class DefaultUserAvatar(discriminator: Int, kord: Kord) : - Icon(false, DiscordCdn.defaultAvatar(discriminator), kord) + Icon(Image.Format.PNG /* Discord Default Avatars only support PNG */, false, DiscordCdn.defaultAvatar(discriminator), kord) public class UserAvatar(userId: Snowflake, avatarHash: String, kord: Kord) : - Icon(avatarHash.startsWith("a_"), DiscordCdn.userAvatar(userId, avatarHash), kord) + Icon(if (avatarHash.startsWith("a_")) Image.Format.GIF else Image.Format.WEBP, avatarHash.startsWith("a_"), DiscordCdn.userAvatar(userId, avatarHash), kord) public class MemberAvatar(guildId: Snowflake, userId: Snowflake, avatarHash: String, kord: Kord) : - Icon(avatarHash.startsWith("a_"), DiscordCdn.memberAvatar(guildId, userId, avatarHash), kord) + Icon(if (avatarHash.startsWith("a_")) Image.Format.GIF else Image.Format.WEBP, avatarHash.startsWith("a_"), DiscordCdn.memberAvatar(guildId, userId, avatarHash), kord) public class RoleIcon(roleId: Snowflake, iconHash: String, kord: Kord) : - Icon(iconHash.startsWith("a_"), DiscordCdn.roleIcon(roleId, iconHash), kord) + Icon(if (iconHash.startsWith("a_")) Image.Format.GIF else Image.Format.WEBP, iconHash.startsWith("a_"), DiscordCdn.roleIcon(roleId, iconHash), kord) }