From f66bc37368f33a8c1983e64332118a3b92704fae Mon Sep 17 00:00:00 2001 From: pajlada Date: Thu, 24 Oct 2024 10:26:20 +0200 Subject: [PATCH] fix: use static version of 7tv badges (#5674) --- CHANGELOG.md | 1 + src/providers/seventv/SeventvBadges.cpp | 2 +- src/providers/seventv/SeventvEmotes.cpp | 39 ++++++++++++++++++------- src/providers/seventv/SeventvEmotes.hpp | 4 ++- 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2992cd35021..189ebadcf34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,7 @@ - Bugfix: Fixed event emotes not showing up in autocomplete and popups. (#5239, #5580, #5582, #5632) - Bugfix: Fixed tab visibility being controllable in the emote popup. (#5530) - Bugfix: Fixed account switch not being saved if no other settings were changed. (#5558) +- Bugfix: Fixed 7TV badges being inadvertently animated. (#5674) - Bugfix: Fixed some tooltips not being readable. (#5578) - Bugfix: Fixed log files being locked longer than needed. (#5592) - Bugfix: Fixed global badges not showing in anonymous mode. (#5599) diff --git a/src/providers/seventv/SeventvBadges.cpp b/src/providers/seventv/SeventvBadges.cpp index 2f09bd087bd..e217fa91412 100644 --- a/src/providers/seventv/SeventvBadges.cpp +++ b/src/providers/seventv/SeventvBadges.cpp @@ -59,7 +59,7 @@ void SeventvBadges::registerBadge(const QJsonObject &badgeJson) auto emote = Emote{ .name = EmoteName{}, - .images = SeventvEmotes::createImageSet(badgeJson), + .images = SeventvEmotes::createImageSet(badgeJson, true), .tooltip = Tooltip{badgeJson["tooltip"].toString()}, .homePage = Url{}, .id = EmoteId{badgeID}, diff --git a/src/providers/seventv/SeventvEmotes.cpp b/src/providers/seventv/SeventvEmotes.cpp index 969b0e5f559..3df62793443 100644 --- a/src/providers/seventv/SeventvEmotes.cpp +++ b/src/providers/seventv/SeventvEmotes.cpp @@ -106,12 +106,18 @@ CreateEmoteResult createEmote(const QJsonObject &activeEmote, ? createAliasedTooltip(emoteName.string, baseEmoteName.string, author.string, isGlobal) : createTooltip(emoteName.string, author.string, isGlobal); - auto imageSet = SeventvEmotes::createImageSet(emoteData); - - auto emote = - Emote({emoteName, imageSet, tooltip, - Url{EMOTE_LINK_FORMAT.arg(emoteId.string)}, zeroWidth, emoteId, - author, makeConditionedOptional(aliasedName, baseEmoteName)}); + auto imageSet = SeventvEmotes::createImageSet(emoteData, false); + + auto emote = Emote({ + emoteName, + imageSet, + tooltip, + Url{EMOTE_LINK_FORMAT.arg(emoteId.string)}, + zeroWidth, + emoteId, + author, + makeConditionedOptional(aliasedName, baseEmoteName), + }); return {emote, emoteId, emoteName, !emote.images.getImage1()->isEmpty()}; } @@ -427,7 +433,8 @@ void SeventvEmotes::getEmoteSet( }); } -ImageSet SeventvEmotes::createImageSet(const QJsonObject &emoteData) +ImageSet SeventvEmotes::createImageSet(const QJsonObject &emoteData, + bool useStatic) { auto host = emoteData["host"].toObject(); // "//cdn.7tv[...]" @@ -463,9 +470,21 @@ ImageSet SeventvEmotes::createImageSet(const QJsonObject &emoteData) baseWidth = width; } - auto image = Image::fromUrl( - {QString("https:%1/%2").arg(baseUrl, file["name"].toString())}, - scale, {static_cast(width), file["height"].toInt(16)}); + auto name = [&] { + if (useStatic) + { + auto staticName = file["static_name"].toString(); + if (!staticName.isEmpty()) + { + return staticName; + } + } + return file["name"].toString(); + }(); + + auto image = + Image::fromUrl({QString("https:%1/%2").arg(baseUrl, name)}, scale, + {static_cast(width), file["height"].toInt(16)}); sizes.at(nextSize) = image; nextSize++; diff --git a/src/providers/seventv/SeventvEmotes.hpp b/src/providers/seventv/SeventvEmotes.hpp index 03b966f9c46..79a8500a93e 100644 --- a/src/providers/seventv/SeventvEmotes.hpp +++ b/src/providers/seventv/SeventvEmotes.hpp @@ -153,8 +153,10 @@ class SeventvEmotes final * Creates an image set from a 7TV emote or badge. * * @param emoteData { host: { files: [], url } } + * @param useStatic use static version if possible */ - static ImageSet createImageSet(const QJsonObject &emoteData); + static ImageSet createImageSet(const QJsonObject &emoteData, + bool useStatic); private: Atomic> global_;