diff --git a/src/controllers/accounts/AccountController.cpp b/src/controllers/accounts/AccountController.cpp index d44e1d466..a50f3a812 100644 --- a/src/controllers/accounts/AccountController.cpp +++ b/src/controllers/accounts/AccountController.cpp @@ -20,7 +20,7 @@ AccountController::AccountController() auto it = std::find(accs.begin(), accs.end(), args.item); assert(it != accs.end()); - this->accounts_.removeItem(it - accs.begin()); + this->accounts_.removeItem(it - accs.begin(), this); } }); @@ -29,11 +29,13 @@ AccountController::AccountController() { case ProviderId::Twitch: { - auto &accs = this->twitch.accounts; - auto it = std::find(accs.begin(), accs.end(), args.item); - assert(it != accs.end()); - - this->twitch.accounts.removeItem(it - accs.begin(), this); + if (args.caller != this) + { + auto accs = this->twitch.accounts.cloneVector(); + auto it = std::find(accs.begin(), accs.end(), args.item); + assert(it != accs.end()); + this->twitch.accounts.removeItem(it - accs.begin(), this); + } } break; } diff --git a/src/providers/chatterino/ChatterinoBadges.cpp b/src/providers/chatterino/ChatterinoBadges.cpp index ac40b4f16..433121093 100644 --- a/src/providers/chatterino/ChatterinoBadges.cpp +++ b/src/providers/chatterino/ChatterinoBadges.cpp @@ -22,9 +22,9 @@ ChatterinoBadges::ChatterinoBadges() { } -boost::optional ChatterinoBadges::getBadge(const UserName &username) +boost::optional ChatterinoBadges::getBadge(const UserId &id) { - auto it = badgeMap.find(username.string); + auto it = badgeMap.find(id.string); if (it != badgeMap.end()) { return emotes[it->second]; @@ -34,10 +34,9 @@ boost::optional ChatterinoBadges::getBadge(const UserName &username) void ChatterinoBadges::loadChatterinoBadges() { - static QUrl url("https://fourtf.com/chatterino/badges.json"); + static QUrl url("https://api.chatterino.com/badges"); NetworkRequest(url) - .onSuccess([this](auto result) -> Outcome { auto jsonRoot = result.parseJson(); int index = 0; @@ -46,7 +45,9 @@ void ChatterinoBadges::loadChatterinoBadges() auto jsonBadge = jsonBadge_.toObject(); auto emote = Emote{ EmoteName{}, - ImageSet{Url{jsonBadge.value("image").toString()}}, + ImageSet{Url{jsonBadge.value("image1").toString()}, + Url{jsonBadge.value("image2").toString()}, + Url{jsonBadge.value("image3").toString()}}, Tooltip{jsonBadge.value("tooltip").toString()}, Url{}}; emotes.push_back( diff --git a/src/providers/chatterino/ChatterinoBadges.hpp b/src/providers/chatterino/ChatterinoBadges.hpp index b77e2de4c..62c81a65d 100644 --- a/src/providers/chatterino/ChatterinoBadges.hpp +++ b/src/providers/chatterino/ChatterinoBadges.hpp @@ -19,7 +19,7 @@ public: virtual void initialize(Settings &settings, Paths &paths) override; ChatterinoBadges(); - boost::optional getBadge(const UserName &username); + boost::optional getBadge(const UserId &id); private: void loadChatterinoBadges(); diff --git a/src/providers/twitch/TwitchAccountManager.cpp b/src/providers/twitch/TwitchAccountManager.cpp index b6fdc5c68..4904ad12e 100644 --- a/src/providers/twitch/TwitchAccountManager.cpp +++ b/src/providers/twitch/TwitchAccountManager.cpp @@ -15,8 +15,9 @@ TwitchAccountManager::TwitchAccountManager() currentUser->loadIgnores(); }); - this->accounts.itemRemoved.connect( - [this](const auto &acc) { this->removeUser(acc.item.get()); }); + this->accounts.itemRemoved.connect([this](const auto &acc) { // + this->removeUser(acc.item.get()); + }); } std::shared_ptr TwitchAccountManager::getCurrent() diff --git a/src/providers/twitch/TwitchMessageBuilder.cpp b/src/providers/twitch/TwitchMessageBuilder.cpp index be48c918e..9b8d30cc2 100644 --- a/src/providers/twitch/TwitchMessageBuilder.cpp +++ b/src/providers/twitch/TwitchMessageBuilder.cpp @@ -191,6 +191,8 @@ void TwitchMessageBuilder::triggerHighlights() MessagePtr TwitchMessageBuilder::build() { // PARSING + this->userId_ = this->ircMessage->tag("user-id").toString(); + this->parseUsername(); if (this->userName == this->channel->getName()) @@ -1276,11 +1278,9 @@ void TwitchMessageBuilder::appendTwitchBadges() void TwitchMessageBuilder::appendChatterinoBadges() { - auto chatterinoBadgePtr = - getApp()->chatterinoBadges->getBadge({this->userName}); - if (chatterinoBadgePtr) + if (auto badge = getApp()->chatterinoBadges->getBadge({this->userId_})) { - this->emplace(*chatterinoBadgePtr, + this->emplace(*badge, MessageElementFlag::BadgeChatterino); } } diff --git a/src/providers/twitch/TwitchMessageBuilder.hpp b/src/providers/twitch/TwitchMessageBuilder.hpp index 664176b0b..98552d1cf 100644 --- a/src/providers/twitch/TwitchMessageBuilder.hpp +++ b/src/providers/twitch/TwitchMessageBuilder.hpp @@ -80,6 +80,7 @@ private: bool hasBits_ = false; bool historicalMessage_ = false; + QString userId_; QColor usernameColor_; QString originalMessage_; bool senderIsBroadcaster{};