refactor: Move TwitchBadges to Application (#5096)
* refactor: Move TwitchBadges to Application * refactor: Use named initializers * refactor: Use `empty()` instead of `size() > 0` * refactor: use emplace instead of push into the callback queue
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#include "TwitchBadges.hpp"
|
||||
#include "providers/twitch/TwitchBadges.hpp"
|
||||
|
||||
#include "common/network/NetworkRequest.hpp"
|
||||
#include "common/network/NetworkResult.hpp"
|
||||
@@ -45,14 +45,15 @@ void TwitchBadges::loadTwitchBadges()
|
||||
for (const auto &version : badgeSet.versions)
|
||||
{
|
||||
const auto &emote = Emote{
|
||||
EmoteName{},
|
||||
ImageSet{
|
||||
Image::fromUrl(version.imageURL1x, 1),
|
||||
Image::fromUrl(version.imageURL2x, .5),
|
||||
Image::fromUrl(version.imageURL4x, .25),
|
||||
},
|
||||
Tooltip{version.title},
|
||||
version.clickURL,
|
||||
.name = EmoteName{},
|
||||
.images =
|
||||
ImageSet{
|
||||
Image::fromUrl(version.imageURL1x, 1),
|
||||
Image::fromUrl(version.imageURL2x, .5),
|
||||
Image::fromUrl(version.imageURL4x, .25),
|
||||
},
|
||||
.tooltip = Tooltip{version.title},
|
||||
.homePage = version.clickURL,
|
||||
};
|
||||
(*badgeSets)[setID][version.id] =
|
||||
std::make_shared<Emote>(emote);
|
||||
@@ -112,20 +113,19 @@ void TwitchBadges::parseTwitchBadges(QJsonObject root)
|
||||
auto versionObj = vIt.value().toObject();
|
||||
|
||||
auto emote = Emote{
|
||||
{""},
|
||||
ImageSet{
|
||||
Image::fromUrl(
|
||||
{versionObj.value("image_url_1x").toString()}, 1),
|
||||
Image::fromUrl(
|
||||
{versionObj.value("image_url_2x").toString()}, .5),
|
||||
Image::fromUrl(
|
||||
{versionObj.value("image_url_4x").toString()}, .25),
|
||||
},
|
||||
Tooltip{versionObj.value("title").toString()},
|
||||
Url{versionObj.value("click_url").toString()},
|
||||
.name = {""},
|
||||
.images =
|
||||
ImageSet{
|
||||
Image::fromUrl(
|
||||
{versionObj.value("image_url_1x").toString()}, 1),
|
||||
Image::fromUrl(
|
||||
{versionObj.value("image_url_2x").toString()}, .5),
|
||||
Image::fromUrl(
|
||||
{versionObj.value("image_url_4x").toString()}, .25),
|
||||
},
|
||||
.tooltip = Tooltip{versionObj.value("title").toString()},
|
||||
.homePage = Url{versionObj.value("click_url").toString()},
|
||||
};
|
||||
// "title"
|
||||
// "clickAction"
|
||||
|
||||
(*badgeSets)[key][vIt.key()] = std::make_shared<Emote>(emote);
|
||||
}
|
||||
@@ -176,9 +176,10 @@ std::optional<EmotePtr> TwitchBadges::badge(const QString &set) const
|
||||
auto it = badgeSets->find(set);
|
||||
if (it != badgeSets->end())
|
||||
{
|
||||
if (it->second.size() > 0)
|
||||
const auto &badges = it->second;
|
||||
if (!badges.empty())
|
||||
{
|
||||
return it->second.begin()->second;
|
||||
return badges.begin()->second;
|
||||
}
|
||||
}
|
||||
return std::nullopt;
|
||||
@@ -193,7 +194,7 @@ void TwitchBadges::getBadgeIcon(const QString &name, BadgeIconCallback callback)
|
||||
{
|
||||
// Badges have not been loaded yet, store callback in a queue
|
||||
std::unique_lock queueLock(this->queueMutex_);
|
||||
this->callbackQueue_.push({name, std::move(callback)});
|
||||
this->callbackQueue_.emplace(name, std::move(callback));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -279,16 +280,4 @@ void TwitchBadges::loadEmoteImage(const QString &name, ImagePtr image,
|
||||
.execute();
|
||||
}
|
||||
|
||||
TwitchBadges *TwitchBadges::instance_;
|
||||
|
||||
TwitchBadges *TwitchBadges::instance()
|
||||
{
|
||||
if (TwitchBadges::instance_ == nullptr)
|
||||
{
|
||||
TwitchBadges::instance_ = new TwitchBadges();
|
||||
}
|
||||
|
||||
return TwitchBadges::instance_;
|
||||
}
|
||||
|
||||
} // namespace chatterino
|
||||
|
||||
@@ -32,7 +32,7 @@ class TwitchBadges
|
||||
using BadgeIconCallback = std::function<void(QString, const QIconPtr)>;
|
||||
|
||||
public:
|
||||
static TwitchBadges *instance();
|
||||
TwitchBadges();
|
||||
|
||||
// Get badge from name and version
|
||||
std::optional<EmotePtr> badge(const QString &set,
|
||||
@@ -46,9 +46,6 @@ public:
|
||||
BadgeIconCallback callback);
|
||||
|
||||
private:
|
||||
static TwitchBadges *instance_;
|
||||
|
||||
TwitchBadges();
|
||||
void loadTwitchBadges();
|
||||
void parseTwitchBadges(QJsonObject root);
|
||||
void loaded();
|
||||
|
||||
@@ -163,7 +163,7 @@ namespace {
|
||||
}
|
||||
|
||||
if (auto globalBadge =
|
||||
TwitchBadges::instance()->badge(badge.key_, badge.value_))
|
||||
getIApp()->getTwitchBadges()->badge(badge.key_, badge.value_))
|
||||
{
|
||||
return globalBadge;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user