2020-08-08 15:37:22 +02:00
|
|
|
#include "ChannelPointReward.hpp"
|
Sort and force grouping of includes (#4172)
This change enforces strict include grouping using IncludeCategories
In addition to adding this to the .clang-format file and applying it in the tests/src and src directories, I also did the following small changes:
In ChatterSet.hpp, I changed lrucache to a <>include
In Irc2.hpp, I change common/SignalVector.hpp to a "project-include"
In AttachedWindow.cpp, NativeMessaging.cpp, WindowsHelper.hpp, BaseWindow.cpp, and StreamerMode.cpp, I disabled clang-format for the windows-includes
In WindowDescriptors.hpp, I added the missing vector include. It was previously not needed because the include was handled by another file that was previously included first.
clang-format minimum version has been bumped, so Ubuntu version used in the check-formatting job has been bumped to 22.04 (which is the latest LTS)
2022-11-27 19:32:53 +01:00
|
|
|
|
2020-11-21 16:20:10 +01:00
|
|
|
#include "common/QLogging.hpp"
|
2022-12-31 15:41:01 +01:00
|
|
|
#include "messages/Image.hpp"
|
2020-08-08 15:37:22 +02:00
|
|
|
|
|
|
|
namespace chatterino {
|
|
|
|
|
2022-05-07 17:22:39 +02:00
|
|
|
ChannelPointReward::ChannelPointReward(const QJsonObject &redemption)
|
2020-08-08 15:37:22 +02:00
|
|
|
{
|
2022-05-07 17:22:39 +02:00
|
|
|
auto reward = redemption.value("reward").toObject();
|
2020-08-08 15:37:22 +02:00
|
|
|
|
2022-05-07 17:22:39 +02:00
|
|
|
this->id = reward.value("id").toString();
|
|
|
|
this->channelId = reward.value("channel_id").toString();
|
|
|
|
this->title = reward.value("title").toString();
|
|
|
|
this->cost = reward.value("cost").toInt();
|
|
|
|
this->isUserInputRequired = reward.value("is_user_input_required").toBool();
|
2020-08-08 15:37:22 +02:00
|
|
|
|
|
|
|
// We don't need to store user information for rewards with user input
|
|
|
|
// because we will get the user info from a corresponding IRC message
|
|
|
|
if (!this->isUserInputRequired)
|
|
|
|
{
|
2022-05-07 17:22:39 +02:00
|
|
|
auto user = redemption.value("user").toObject();
|
|
|
|
|
|
|
|
this->user.id = user.value("id").toString();
|
|
|
|
this->user.login = user.value("login").toString();
|
|
|
|
this->user.displayName = user.value("display_name").toString();
|
2020-08-08 15:37:22 +02:00
|
|
|
}
|
|
|
|
|
2022-05-07 17:22:39 +02:00
|
|
|
auto imageValue = reward.value("image");
|
2024-02-25 18:19:20 +01:00
|
|
|
// From Twitch docs
|
|
|
|
// The size is only an estimation, the actual size might vary.
|
|
|
|
constexpr QSize baseSize(28, 28);
|
2022-05-07 17:22:39 +02:00
|
|
|
|
|
|
|
if (imageValue.isObject())
|
2020-08-08 15:37:22 +02:00
|
|
|
{
|
2022-05-07 17:22:39 +02:00
|
|
|
auto imageObject = imageValue.toObject();
|
2020-08-08 15:37:22 +02:00
|
|
|
this->image = ImageSet{
|
2024-02-25 18:19:20 +01:00
|
|
|
Image::fromUrl({imageObject.value("url_1x").toString()}, 1,
|
|
|
|
baseSize),
|
|
|
|
Image::fromUrl({imageObject.value("url_2x").toString()}, 0.5,
|
|
|
|
baseSize * 2),
|
|
|
|
Image::fromUrl({imageObject.value("url_4x").toString()}, 0.25,
|
|
|
|
baseSize * 4),
|
2020-08-08 15:37:22 +02:00
|
|
|
};
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
static const ImageSet defaultImage{
|
2024-02-25 18:19:20 +01:00
|
|
|
Image::fromUrl({TWITCH_CHANNEL_POINT_REWARD_URL("1.png")}, 1,
|
|
|
|
baseSize),
|
|
|
|
Image::fromUrl({TWITCH_CHANNEL_POINT_REWARD_URL("2.png")}, 0.5,
|
|
|
|
baseSize * 2),
|
|
|
|
Image::fromUrl({TWITCH_CHANNEL_POINT_REWARD_URL("4.png")}, 0.25,
|
|
|
|
baseSize * 4)};
|
2020-08-08 15:37:22 +02:00
|
|
|
this->image = defaultImage;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
} // namespace chatterino
|