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)
|
- 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: Highlight checks now use non-capturing groups for the boundaries. (#5784)
|
||||||
- Dev: Updated Conan dependencies. (#5776)
|
- 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: Support Boost 1.87. (#5832)
|
||||||
- Dev: Words from `TextElement`s are now combined where possible. (#5847)
|
- Dev: Words from `TextElement`s are now combined where possible. (#5847)
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,17 @@
|
|||||||
#include "controllers/commands/builtin/chatterino/Debugging.hpp"
|
#include "controllers/commands/builtin/chatterino/Debugging.hpp"
|
||||||
|
|
||||||
|
#include "Application.hpp"
|
||||||
#include "common/Channel.hpp"
|
#include "common/Channel.hpp"
|
||||||
#include "common/Env.hpp"
|
#include "common/Env.hpp"
|
||||||
#include "common/Literals.hpp"
|
#include "common/Literals.hpp"
|
||||||
#include "controllers/commands/CommandContext.hpp"
|
#include "controllers/commands/CommandContext.hpp"
|
||||||
#include "messages/Image.hpp"
|
#include "messages/Image.hpp"
|
||||||
|
#include "messages/Message.hpp"
|
||||||
#include "messages/MessageBuilder.hpp"
|
#include "messages/MessageBuilder.hpp"
|
||||||
#include "messages/MessageElement.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 "singletons/Theme.hpp"
|
||||||
#include "util/PostToThread.hpp"
|
#include "util/PostToThread.hpp"
|
||||||
|
|
||||||
@@ -140,7 +145,46 @@ QString debugTest(const CommandContext &ctx)
|
|||||||
return "";
|
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 "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -719,7 +719,8 @@ MessageBuilder::MessageBuilder(TimeoutMessageTag, const QString &username,
|
|||||||
this->message().serverReceivedTime = time;
|
this->message().serverReceivedTime = time;
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageBuilder::MessageBuilder(const BanAction &action, uint32_t count)
|
MessageBuilder::MessageBuilder(const BanAction &action, const QDateTime &time,
|
||||||
|
uint32_t count)
|
||||||
: MessageBuilder()
|
: MessageBuilder()
|
||||||
{
|
{
|
||||||
auto current = getApp()->getAccounts()->twitch.getCurrent();
|
auto current = getApp()->getAccounts()->twitch.getCurrent();
|
||||||
@@ -817,9 +818,11 @@ MessageBuilder::MessageBuilder(const BanAction &action, uint32_t count)
|
|||||||
|
|
||||||
this->message().messageText = text;
|
this->message().messageText = text;
|
||||||
this->message().searchText = text;
|
this->message().searchText = text;
|
||||||
|
|
||||||
|
this->message().serverReceivedTime = time;
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageBuilder::MessageBuilder(const UnbanAction &action)
|
MessageBuilder::MessageBuilder(const UnbanAction &action, const QDateTime &time)
|
||||||
: MessageBuilder()
|
: MessageBuilder()
|
||||||
{
|
{
|
||||||
this->emplace<TimestampElement>();
|
this->emplace<TimestampElement>();
|
||||||
@@ -839,6 +842,8 @@ MessageBuilder::MessageBuilder(const UnbanAction &action)
|
|||||||
|
|
||||||
this->message().messageText = text;
|
this->message().messageText = text;
|
||||||
this->message().searchText = text;
|
this->message().searchText = text;
|
||||||
|
|
||||||
|
this->message().serverReceivedTime = time;
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageBuilder::MessageBuilder(const WarnAction &action)
|
MessageBuilder::MessageBuilder(const WarnAction &action)
|
||||||
|
|||||||
@@ -112,8 +112,9 @@ public:
|
|||||||
MessageBuilder(TimeoutMessageTag, const QString &username,
|
MessageBuilder(TimeoutMessageTag, const QString &username,
|
||||||
const QString &durationInSeconds, bool multipleTimes,
|
const QString &durationInSeconds, bool multipleTimes,
|
||||||
const QDateTime &time);
|
const QDateTime &time);
|
||||||
MessageBuilder(const BanAction &action, uint32_t count = 1);
|
MessageBuilder(const BanAction &action, const QDateTime &time,
|
||||||
MessageBuilder(const UnbanAction &action);
|
uint32_t count = 1);
|
||||||
|
MessageBuilder(const UnbanAction &action, const QDateTime &time);
|
||||||
MessageBuilder(const WarnAction &action);
|
MessageBuilder(const WarnAction &action);
|
||||||
MessageBuilder(const RaidAction &action);
|
MessageBuilder(const RaidAction &action);
|
||||||
MessageBuilder(const UnraidAction &action);
|
MessageBuilder(const UnraidAction &action);
|
||||||
|
|||||||
@@ -319,7 +319,9 @@ void TwitchIrcServer::initialize()
|
|||||||
}
|
}
|
||||||
|
|
||||||
postToThread([chan, action] {
|
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);
|
msg->flags.set(MessageFlag::PubSub);
|
||||||
chan->addOrReplaceTimeout(msg.release(),
|
chan->addOrReplaceTimeout(msg.release(),
|
||||||
QDateTime::currentDateTime());
|
QDateTime::currentDateTime());
|
||||||
@@ -399,7 +401,9 @@ void TwitchIrcServer::initialize()
|
|||||||
return;
|
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] {
|
postToThread([chan, msg] {
|
||||||
chan->addMessage(msg, MessageContext::Original);
|
chan->addMessage(msg, MessageContext::Original);
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
#include "messages/MessageBuilder.hpp"
|
#include "messages/MessageBuilder.hpp"
|
||||||
#include "singletons/Settings.hpp"
|
#include "singletons/Settings.hpp"
|
||||||
|
|
||||||
|
#include <QDateTime>
|
||||||
|
|
||||||
namespace chatterino {
|
namespace chatterino {
|
||||||
|
|
||||||
/// Adds a timeout or replaces a previous one sent in the last 20 messages and in the last 5s.
|
/// 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