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
+30 -5
View File
@@ -1,4 +1,4 @@
#include "IrcMessageHandler.hpp"
#include "IrcMessageHandler.hpp"
#include "Application.hpp"
#include "controllers/accounts/AccountController.hpp"
@@ -215,6 +215,32 @@ void IrcMessageHandler::addMessage(Communi::IrcMessage *_message,
args.isStaffOrBroadcaster = true;
}
auto channel = dynamic_cast<TwitchChannel *>(chan.get());
const auto &tags = _message->tags();
if (const auto &it = tags.find("custom-reward-id"); it != tags.end())
{
const auto rewardId = it.value().toString();
if (!channel->isChannelPointRewardKnown(rewardId))
{
// Need to wait for pubsub reward notification
auto clone = _message->clone();
channel->channelPointRewardAdded.connect(
[=, &server](ChannelPointReward reward) {
if (reward.id == rewardId)
{
this->addMessage(clone, target, content, server, isSub,
isAction);
clone->deleteLater();
return true;
}
return false;
});
return;
}
args.channelPointRewardId = rewardId;
}
TwitchMessageBuilder builder(chan.get(), _message, args, content, isAction);
if (isSub || !builder.isIgnored())
@@ -224,7 +250,6 @@ void IrcMessageHandler::addMessage(Communi::IrcMessage *_message,
builder->flags.set(MessageFlag::Subscription);
builder->flags.unset(MessageFlag::Highlighted);
}
auto msg = builder.build();
IrcMessageHandler::setSimilarityFlags(msg, chan);
@@ -399,9 +424,9 @@ void IrcMessageHandler::handleClearMessageMessage(Communi::IrcMessage *message)
if (chan->isEmpty())
{
qDebug()
<< "[IrcMessageHandler:handleClearMessageMessage] Twitch channel"
<< chanName << "not found";
qDebug() << "[IrcMessageHandler:handleClearMessageMessage] Twitch "
"channel"
<< chanName << "not found";
return;
}