Implement Chatterino badges

Fix #63
This commit is contained in:
Rasmus Karlsson
2017-08-12 13:20:52 +02:00
parent 3bfaba2d95
commit 63f85e9bee
4 changed files with 68 additions and 0 deletions
+34
View File
@@ -60,6 +60,8 @@ Resources::Resources(EmoteManager &em, WindowManager &wm)
this->dynamicBadgesLoaded = true;
});
this->loadChatterinoBadges();
}
Resources::BadgeVersion::BadgeVersion(QJsonObject &&root, EmoteManager &emoteManager,
@@ -110,4 +112,36 @@ void Resources::loadChannelData(const std::string &roomID, bool bypassCache)
});
}
void Resources::loadChatterinoBadges()
{
this->chatterinoBadges.clear();
QString url = "https://fourtf.com/chatterino/badges.json";
util::urlFetchJSON(url, [this](QJsonObject &root) {
QJsonArray badgeVariants = root.value("badges").toArray();
for (QJsonArray::iterator it = badgeVariants.begin(); it != badgeVariants.end(); ++it) {
QJsonObject badgeVariant = it->toObject();
const std::string badgeVariantTooltip =
badgeVariant.value("tooltip").toString().toStdString();
const QString &badgeVariantImageURL = badgeVariant.value("image").toString();
auto badgeVariantPtr = std::make_shared<ChatterinoBadge>(
badgeVariantTooltip,
new messages::LazyLoadedImage(this->emoteManager, this->windowManager,
badgeVariantImageURL));
QJsonArray badgeVariantUsers = badgeVariant.value("users").toArray();
for (QJsonArray::iterator it = badgeVariantUsers.begin(); it != badgeVariantUsers.end();
++it) {
const std::string username = it->toString().toStdString();
this->chatterinoBadges[username] =
std::shared_ptr<ChatterinoBadge>(badgeVariantPtr);
}
}
});
}
} // namespace chatterino