From ad8ee97de98c5af2c91c7329c2c9ae9c72d6e48d Mon Sep 17 00:00:00 2001 From: Rasmus Karlsson Date: Sat, 4 Nov 2017 17:22:53 +0100 Subject: [PATCH] Fall back to default subscriber badge if there's no other badge available --- resources/images/subscriber.png | Bin 0 -> 1645 bytes resources/resources.qrc | 1 + src/channel.hpp | 2 -- src/resources.cpp | 1 + src/resources.hpp | 1 + src/twitch/twitchmessagebuilder.cpp | 40 ++++++++++++++++------------ 6 files changed, 26 insertions(+), 19 deletions(-) create mode 100644 resources/images/subscriber.png diff --git a/resources/images/subscriber.png b/resources/images/subscriber.png new file mode 100644 index 0000000000000000000000000000000000000000..bfdd39b841f9b634d7d49e3aaa49bfa67351e33e GIT binary patch literal 1645 zcmV-z29o)SP)Px*CrLy>RCodHntf0eRTRL_<2{i06jVe6`4o`=p;F*M8j6AvHRbd*P1cmwUo|z; zR5O)Y&QuH&>10D=GK^tmH7Q0!rUp4EAEH25#GB+p1q1>NLB64Tc814O*xkGD?S1>0 z*)zkiZ_mB=oc-Kz)ouiEruT9f>zYp%n;LRHLzww z0K}3%oxRPt1vcYJRQytKb$0|O7YDd^?J_I&5n)p{14y3|Z1gl?^Ypdxra~7s0m#LD z9z?|Y7!icUEQW>N&c@$LUf2YnxQ&6J(@ndg(P+R{deO933ce=&rl1+t^(jF>I4LfQ z1M&;@0E~a`6i+W_2)}R1owu$2TX8^o68rE;q76*eiUPve2jd<-iB9kZXEz5vwN>sb z3Mev;#6I&Kc^_0~uZ4Irfh#GB0umZtQ&5y%%@hNKu}@^|(kTwS|9yizAYg@Z8(75v z#U+zHmr3lyONb~Ew}c3(nd%e+6i?zDT3Mas5B3gP+Tya7Qv{H2@O)SnLO*P{4eUB) zHn55SGToTczHX&rBC7+!*aznysS>)%3l{mfNUdgZc@1syLi)3jkiIR_VuRQKZbr?K z$w_(gEdH!&hwPnaU}Sh))D7w**MdWJpe3tL+S3uDjj}3WE?854s!OlJfjy-#HacN? zoA;U;5Vnw?Qw#X+w5fa z1AM*jJV+g-k^$i(AN`_+n@3Wg47VKu0-pSGHzy@; z4YSA*IV9(c%lkOpoJ!@f6*q3Q2#s)v?RNOnMI{HwhPNdxQBmrL=*tg?MQ zgOK&cZ_wI!!>syZm6!lRqlZ7KZ{IuaTuN1BCN~H9pluC-`w`d#oTa1H^iGO##7| zux7pg)KA&}GXaDXb7Y*f6{fpm0QS9A40}n?*VQI1G|;EA%V}g1C@zok0%zBGRBscH zCW`Y7aO_|W3=fTQb#^^p2x-qmK*|&0RG+5A1_lonlv zceWM4xfA>+gl?X9-IhvB(=JUJ*#TkN+-x#*Ym_?*$#~^gxPGN?wjzS}`biJU%_xJ+ z*G}@*Pmqu?B52G+DLSlwu>9x z;$T`&=vr1lo{ODtOKa)t9pXOo;z?iczk@=4NYdfZ#38!-g+i#mc->eR6S88>NQ^Kx zFw2FkfJ`T6oG;!bz2(fa^~GqoKP?1sp}2av*PNzi)R7I4qmvGr8@kECc?nfo$qY{{ zym704guIwaZl&`lNuP27qRtPp(EmAGUDi2h&QcI?Tm>Wm2URK{6_5x45w+TbR6rsG rMAT{zQUQq&5K*f=NChN9Kt%mNf^d3wEu*!=00000NkvXXu0mjfeTDwF literal 0 HcmV?d00001 diff --git a/resources/resources.qrc b/resources/resources.qrc index e09f9785..51124350 100644 --- a/resources/resources.qrc +++ b/resources/resources.qrc @@ -32,6 +32,7 @@ images/UserProfile_22x.png images/VSO_Link_blue_16x.png sounds/ping2.wav + images/subscriber.png qt.conf diff --git a/src/channel.hpp b/src/channel.hpp index 5ad469b1..ceca68f2 100644 --- a/src/channel.hpp +++ b/src/channel.hpp @@ -19,8 +19,6 @@ namespace messages { class Message; } -class IrcManager; - class Channel { public: diff --git a/src/resources.cpp b/src/resources.cpp index 7ac6cde9..3411bba7 100644 --- a/src/resources.cpp +++ b/src/resources.cpp @@ -29,6 +29,7 @@ Resources::Resources(EmoteManager &em, WindowManager &wm) , badgeBroadcaster(lli(em, wm, ":/images/broadcaster_bg.png")) , badgePremium(lli(em, wm, ":/images/twitchprime_bg.png")) , badgeVerified(lli(em, wm, ":/images/verified.png", 0.25)) + , badgeSubscriber(lli(em, wm, ":/images/subscriber.png", 0.25)) , cheerBadge100000(lli(em, wm, ":/images/cheer100000")) , cheerBadge10000(lli(em, wm, ":/images/cheer10000")) , cheerBadge5000(lli(em, wm, ":/images/cheer5000")) diff --git a/src/resources.hpp b/src/resources.hpp index 161f16c3..cf6ac030 100644 --- a/src/resources.hpp +++ b/src/resources.hpp @@ -27,6 +27,7 @@ public: messages::LazyLoadedImage *badgeBroadcaster; messages::LazyLoadedImage *badgePremium; messages::LazyLoadedImage *badgeVerified; + messages::LazyLoadedImage *badgeSubscriber; messages::LazyLoadedImage *cheerBadge100000; messages::LazyLoadedImage *cheerBadge10000; diff --git a/src/twitch/twitchmessagebuilder.cpp b/src/twitch/twitchmessagebuilder.cpp index 3966ae31..245ced8a 100644 --- a/src/twitch/twitchmessagebuilder.cpp +++ b/src/twitch/twitchmessagebuilder.cpp @@ -619,25 +619,31 @@ void TwitchMessageBuilder::parseTwitchBadges() continue; } - try { - const auto &badgeSet = channelResources.badgeSets.at("subscriber"); - - std::string versionKey = badge.mid(11).toStdString(); - - try { - auto &badgeVersion = badgeSet.versions.at(versionKey); - - appendWord( - Word(badgeVersion.badgeImage1x, Word::Type::BadgeSubscription, QString(), - QString("Twitch " + QString::fromStdString(badgeVersion.title)))); - } catch (const std::exception &e) { - qDebug() << "Exception caught:" << e.what() - << "when trying to fetch badge version " << versionKey.c_str(); - } - } catch (const std::exception &e) { - qDebug() << "No channel badge set with key `subscriber`. Exception: " << e.what(); + auto badgeSetIt = channelResources.badgeSets.find("subscriber"); + if (badgeSetIt == channelResources.badgeSets.end()) { + // Fall back to default badge + appendWord(Word(this->resources.badgeSubscriber, Word::Type::BadgeSubscription, + QString(), QString("Twitch Subscriber"))); + continue; } + const auto &badgeSet = badgeSetIt->second; + + std::string versionKey = badge.mid(11).toStdString(); + + auto badgeVersionIt = badgeSet.versions.find(versionKey); + + if (badgeVersionIt == badgeSet.versions.end()) { + // Fall back to default badge + appendWord(Word(this->resources.badgeSubscriber, Word::Type::BadgeSubscription, + QString(), QString("Twitch Subscriber"))); + continue; + } + + auto &badgeVersion = badgeVersionIt->second; + + appendWord(Word(badgeVersion.badgeImage1x, Word::Type::BadgeSubscription, QString(), + QString("Twitch " + QString::fromStdString(badgeVersion.title)))); } else { if (!this->resources.dynamicBadgesLoaded) { // Do nothing