Add support for non-highlight channel point rewards (#1809)

This commit is contained in:
Jonas Schmitt
2020-08-08 15:37:22 +02:00
committed by GitHub
parent 1bd3d10eef
commit 11b8948290
23 changed files with 498 additions and 25 deletions
@@ -192,6 +192,17 @@ MessagePtr TwitchMessageBuilder::build()
this->parseRoomID();
// If it is a reward it has to be appended first
if (this->args.channelPointRewardId != "")
{
const auto &reward = this->twitchChannel->channelPointReward(
this->args.channelPointRewardId);
if (reward)
{
this->appendChannelPointRewardMessage(reward.get(), this);
}
}
this->appendChannelName();
if (this->tags.contains("rm-deleted"))
@@ -1130,4 +1141,34 @@ Outcome TwitchMessageBuilder::tryParseCheermote(const QString &string)
return Success;
}
void TwitchMessageBuilder::appendChannelPointRewardMessage(
const ChannelPointReward &reward, MessageBuilder *builder)
{
QString redeemed = "Redeemed";
if (!reward.isUserInputRequired)
{
builder->emplace<TextElement>(
reward.user.login, MessageElementFlag::ChannelPointReward,
MessageColor::Text, FontStyle::ChatMediumBold);
redeemed = "redeemed";
}
builder->emplace<TextElement>(redeemed,
MessageElementFlag::ChannelPointReward);
builder->emplace<TextElement>(
reward.title, MessageElementFlag::ChannelPointReward,
MessageColor::Text, FontStyle::ChatMediumBold);
builder->emplace<ScalingImageElement>(
reward.image, MessageElementFlag::ChannelPointReward);
builder->emplace<TextElement>(
QString::number(reward.cost), MessageElementFlag::ChannelPointReward,
MessageColor::Text, FontStyle::ChatMediumBold);
if (reward.isUserInputRequired)
{
builder->emplace<LinebreakElement>(
MessageElementFlag::ChannelPointReward);
}
builder->message().flags.set(MessageFlag::RedeemedChannelPointReward);
}
} // namespace chatterino