fix: show rewards early, replace later (#5948)

This commit is contained in:
nerix
2025-02-10 22:12:30 +01:00
committed by GitHub
parent 9527421bcd
commit 2b118c9aa2
6 changed files with 23 additions and 6 deletions
+17 -1
View File
@@ -44,6 +44,7 @@
#include "util/Helpers.hpp"
#include "util/PostToThread.hpp"
#include "util/QStringHash.hpp"
#include "util/VectorMessageSink.hpp"
#include "widgets/Window.hpp"
#include <IrcConnection>
@@ -460,9 +461,24 @@ void TwitchChannel::addChannelPointReward(const ChannelPointReward &reward)
[&](const QueuedRedemption &msg) {
if (reward.id == msg.rewardID)
{
VectorMessageSink sink(
MessageSinkTrait::AddMentionsToGlobalChannel);
IrcMessageHandler::instance().addMessage(
msg.message.get(), *this, this, msg.originalContent,
msg.message.get(), sink, this, msg.originalContent,
*server, false, false);
if (sink.messages().empty())
{
return true;
}
MessagePtr next = sink.messages().back();
auto prev = this->findMessageByID(next->id);
if (!prev)
{
// message gone
this->addMessage(next, MessageContext::Repost);
return true;
}
this->replaceMessage(prev, next);
return true;
}
return false;