some concurrency additions (#2698)

This commit is contained in:
fourtf
2021-05-01 13:38:58 +02:00
committed by GitHub
parent 345bcdb963
commit 8b3f301c50
10 changed files with 84 additions and 54 deletions
@@ -4,14 +4,11 @@
#include <QJsonObject>
#include <QJsonValue>
#include <QThread>
#include <QUrl>
#include "common/NetworkRequest.hpp"
#include "common/Outcome.hpp"
#include "messages/Emote.hpp"
#include <QUrl>
#include <map>
namespace chatterino {
void ChatterinoBadges::initialize(Settings &settings, Paths &paths)
{
@@ -24,6 +21,8 @@ ChatterinoBadges::ChatterinoBadges()
boost::optional<EmotePtr> ChatterinoBadges::getBadge(const UserId &id)
{
std::shared_lock lock(this->mutex_);
auto it = badgeMap.find(id.string);
if (it != badgeMap.end())
{
@@ -37,8 +36,12 @@ void ChatterinoBadges::loadChatterinoBadges()
static QUrl url("https://api.chatterino.com/badges");
NetworkRequest(url)
.concurrent()
.onSuccess([this](auto result) -> Outcome {
auto jsonRoot = result.parseJson();
std::unique_lock lock(this->mutex_);
int index = 0;
for (const auto &jsonBadge_ : jsonRoot.value("badges").toArray())
{