fix: properly stack/merge PubSub & IRC timeouts again (#5855)
This commit is contained in:
+1
-1
@@ -17,7 +17,7 @@
|
||||
- Bugfix: Fixed deleted messages not immediately disappearing when "Hide deleted messages" is enabled. (#5844, #5854)
|
||||
- Dev: Highlight checks now use non-capturing groups for the boundaries. (#5784)
|
||||
- Dev: Updated Conan dependencies. (#5776)
|
||||
- Dev: Replaced usage of `parseTime` with `serverReceivedTime` for clearchat messages. (#5824)
|
||||
- Dev: Replaced usage of `parseTime` with `serverReceivedTime` for clearchat messages. (#5824, #5855)
|
||||
- Dev: Support Boost 1.87. (#5832)
|
||||
- Dev: Words from `TextElement`s are now combined where possible. (#5847)
|
||||
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
#include "controllers/commands/builtin/chatterino/Debugging.hpp"
|
||||
|
||||
#include "Application.hpp"
|
||||
#include "common/Channel.hpp"
|
||||
#include "common/Env.hpp"
|
||||
#include "common/Literals.hpp"
|
||||
#include "controllers/commands/CommandContext.hpp"
|
||||
#include "messages/Image.hpp"
|
||||
#include "messages/Message.hpp"
|
||||
#include "messages/MessageBuilder.hpp"
|
||||
#include "messages/MessageElement.hpp"
|
||||
#include "providers/twitch/PubSubActions.hpp"
|
||||
#include "providers/twitch/TwitchChannel.hpp"
|
||||
#include "providers/twitch/TwitchIrcServer.hpp"
|
||||
#include "singletons/Theme.hpp"
|
||||
#include "util/PostToThread.hpp"
|
||||
|
||||
@@ -140,7 +145,46 @@ QString debugTest(const CommandContext &ctx)
|
||||
return "";
|
||||
}
|
||||
|
||||
ctx.channel->addSystemMessage("debug-test called");
|
||||
const auto command = ctx.words.value(1);
|
||||
|
||||
if (command == "timeout-pubsub")
|
||||
{
|
||||
QJsonObject data;
|
||||
data["created_by_user_id"] = ctx.twitchChannel->roomId();
|
||||
data["created_by"] = ctx.twitchChannel->getName();
|
||||
|
||||
BanAction action(data, ctx.twitchChannel->roomId());
|
||||
|
||||
action.source.id = ctx.twitchChannel->roomId();
|
||||
action.source.login = ctx.twitchChannel->getName();
|
||||
|
||||
action.target.id = "11148817";
|
||||
action.target.login = "pajlada";
|
||||
action.duration = 10;
|
||||
|
||||
MessageBuilder msg(action, QDateTime::currentDateTime());
|
||||
msg->flags.set(MessageFlag::PubSub);
|
||||
ctx.channel->addOrReplaceTimeout(msg.release(),
|
||||
QDateTime::currentDateTime());
|
||||
}
|
||||
else if (command == "timeout-irc")
|
||||
{
|
||||
auto nowMillis = QDateTime::currentDateTime().toSecsSinceEpoch();
|
||||
|
||||
const auto ircText =
|
||||
QString(
|
||||
"@tmi-sent-ts=%1;room-id=117166826;user-id=11148817;badges=;"
|
||||
"badge-info=;flags=;user-type=;emotes=;target-user-id=11148817;"
|
||||
"ban-"
|
||||
"duration=1 :tmi.twitch.tv CLEARCHAT #testaccount_420 pajlada")
|
||||
.arg(nowMillis);
|
||||
getApp()->getTwitch()->addFakeMessage(ircText);
|
||||
}
|
||||
else
|
||||
{
|
||||
ctx.channel->addSystemMessage(
|
||||
QString("debug-test called with command: '%1'").arg(command));
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -719,7 +719,8 @@ MessageBuilder::MessageBuilder(TimeoutMessageTag, const QString &username,
|
||||
this->message().serverReceivedTime = time;
|
||||
}
|
||||
|
||||
MessageBuilder::MessageBuilder(const BanAction &action, uint32_t count)
|
||||
MessageBuilder::MessageBuilder(const BanAction &action, const QDateTime &time,
|
||||
uint32_t count)
|
||||
: MessageBuilder()
|
||||
{
|
||||
auto current = getApp()->getAccounts()->twitch.getCurrent();
|
||||
@@ -817,9 +818,11 @@ MessageBuilder::MessageBuilder(const BanAction &action, uint32_t count)
|
||||
|
||||
this->message().messageText = text;
|
||||
this->message().searchText = text;
|
||||
|
||||
this->message().serverReceivedTime = time;
|
||||
}
|
||||
|
||||
MessageBuilder::MessageBuilder(const UnbanAction &action)
|
||||
MessageBuilder::MessageBuilder(const UnbanAction &action, const QDateTime &time)
|
||||
: MessageBuilder()
|
||||
{
|
||||
this->emplace<TimestampElement>();
|
||||
@@ -839,6 +842,8 @@ MessageBuilder::MessageBuilder(const UnbanAction &action)
|
||||
|
||||
this->message().messageText = text;
|
||||
this->message().searchText = text;
|
||||
|
||||
this->message().serverReceivedTime = time;
|
||||
}
|
||||
|
||||
MessageBuilder::MessageBuilder(const WarnAction &action)
|
||||
|
||||
@@ -112,8 +112,9 @@ public:
|
||||
MessageBuilder(TimeoutMessageTag, const QString &username,
|
||||
const QString &durationInSeconds, bool multipleTimes,
|
||||
const QDateTime &time);
|
||||
MessageBuilder(const BanAction &action, uint32_t count = 1);
|
||||
MessageBuilder(const UnbanAction &action);
|
||||
MessageBuilder(const BanAction &action, const QDateTime &time,
|
||||
uint32_t count = 1);
|
||||
MessageBuilder(const UnbanAction &action, const QDateTime &time);
|
||||
MessageBuilder(const WarnAction &action);
|
||||
MessageBuilder(const RaidAction &action);
|
||||
MessageBuilder(const UnraidAction &action);
|
||||
|
||||
@@ -319,7 +319,9 @@ void TwitchIrcServer::initialize()
|
||||
}
|
||||
|
||||
postToThread([chan, action] {
|
||||
MessageBuilder msg(action);
|
||||
// TODO: Can we utilize some pubsub time field? maybe not worth
|
||||
auto time = QDateTime::currentDateTime();
|
||||
MessageBuilder msg(action, time);
|
||||
msg->flags.set(MessageFlag::PubSub);
|
||||
chan->addOrReplaceTimeout(msg.release(),
|
||||
QDateTime::currentDateTime());
|
||||
@@ -399,7 +401,9 @@ void TwitchIrcServer::initialize()
|
||||
return;
|
||||
}
|
||||
|
||||
auto msg = MessageBuilder(action).release();
|
||||
// TODO: Can we utilize some pubsub time field? maybe not worth
|
||||
auto time = QDateTime::currentDateTime();
|
||||
auto msg = MessageBuilder(action, time).release();
|
||||
|
||||
postToThread([chan, msg] {
|
||||
chan->addMessage(msg, MessageContext::Original);
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
#include "messages/MessageBuilder.hpp"
|
||||
#include "singletons/Settings.hpp"
|
||||
|
||||
#include <QDateTime>
|
||||
|
||||
namespace chatterino {
|
||||
|
||||
/// Adds a timeout or replaces a previous one sent in the last 20 messages and in the last 5s.
|
||||
|
||||
Reference in New Issue
Block a user