fix: use serverReceivedTime over parseTime for stacking (#5824)

This commit is contained in:
nerix
2025-01-19 13:37:58 +01:00
committed by GitHub
parent f85543381f
commit c1959259ce
19 changed files with 776 additions and 40 deletions
+9 -8
View File
@@ -16,7 +16,7 @@ namespace chatterino {
/// @param disableUserMessages If set, disables all message by the timed out user.
template <typename Buf, typename Replace, typename Add>
void addOrReplaceChannelTimeout(const Buf &buffer, MessagePtr message,
QTime now, Replace replaceMessage,
const QDateTime &now, Replace replaceMessage,
Add addMessage, bool disableUserMessages)
{
// NOTE: This function uses the messages PARSE time to figure out whether they should be replaced
@@ -30,7 +30,7 @@ void addOrReplaceChannelTimeout(const Buf &buffer, MessagePtr message,
bool shouldAddMessage = true;
QTime minimumTime = now.addSecs(-5);
QDateTime minimumTime = now.addSecs(-5);
auto timeoutStackStyle = static_cast<TimeoutStackStyle>(
getSettings()->timeoutStackStyle.getValue());
@@ -39,7 +39,7 @@ void addOrReplaceChannelTimeout(const Buf &buffer, MessagePtr message,
{
const MessagePtr &s = buffer[i];
if (s->parseTime < minimumTime)
if (s->serverReceivedTime < minimumTime)
{
break;
}
@@ -82,7 +82,7 @@ void addOrReplaceChannelTimeout(const Buf &buffer, MessagePtr message,
MessageBuilder replacement(timeoutMessage, message->timeoutUser,
message->loginName, message->searchText,
count);
count, message->serverReceivedTime);
replacement->timeoutUser = message->timeoutUser;
replacement->count = count;
@@ -126,7 +126,8 @@ void addOrReplaceChannelTimeout(const Buf &buffer, MessagePtr message,
/// - adds the `message`.
template <typename Buffer, typename Replace, typename Add>
void addOrReplaceChannelClear(const Buffer &buffer, MessagePtr message,
QTime now, Replace replaceMessage, Add addMessage)
const QDateTime &now, Replace replaceMessage,
Add addMessage)
{
// NOTE: This function uses the messages PARSE time to figure out whether they should be replaced
// This works as expected for incoming messages, but not for historic messages.
@@ -135,7 +136,7 @@ void addOrReplaceChannelClear(const Buffer &buffer, MessagePtr message,
auto snapshotLength = static_cast<qsizetype>(buffer.size());
auto end = std::max<qsizetype>(0, snapshotLength - 20);
bool shouldAddMessage = true;
QTime minimumTime = now.addSecs(-5);
QDateTime minimumTime = now.addSecs(-5);
auto timeoutStackStyle = static_cast<TimeoutStackStyle>(
getSettings()->timeoutStackStyle.getValue());
@@ -149,7 +150,7 @@ void addOrReplaceChannelClear(const Buffer &buffer, MessagePtr message,
{
const MessagePtr &s = buffer[i];
if (s->parseTime < minimumTime)
if (s->serverReceivedTime < minimumTime)
{
break;
}
@@ -180,7 +181,7 @@ void addOrReplaceChannelClear(const Buffer &buffer, MessagePtr message,
uint32_t count = s->count + 1;
auto replacement = MessageBuilder::makeClearChatMessage(
message->parseTime, message->timeoutUser, count);
message->serverReceivedTime, message->timeoutUser, count);
replacement->flags = message->flags;
replaceMessage(i, s, replacement);
+2 -2
View File
@@ -24,7 +24,7 @@ void VectorMessageSink::addMessage(MessagePtr message, MessageContext ctx,
}
void VectorMessageSink::addOrReplaceTimeout(MessagePtr clearchatMessage,
QTime now)
const QDateTime &now)
{
addOrReplaceChannelTimeout(
this->messages_, std::move(clearchatMessage), now,
@@ -39,7 +39,7 @@ void VectorMessageSink::addOrReplaceTimeout(MessagePtr clearchatMessage,
}
void VectorMessageSink::addOrReplaceClearChat(MessagePtr clearchatMessage,
QTime now)
const QDateTime &now)
{
addOrReplaceChannelClear(
this->messages_, std::move(clearchatMessage), now,
+4 -2
View File
@@ -14,8 +14,10 @@ public:
void addMessage(
MessagePtr message, MessageContext ctx,
std::optional<MessageFlags> overridingFlags = std::nullopt) override;
void addOrReplaceTimeout(MessagePtr clearchatMessage, QTime now) override;
void addOrReplaceClearChat(MessagePtr clearchatMessage, QTime now) override;
void addOrReplaceTimeout(MessagePtr clearchatMessage,
const QDateTime &now) override;
void addOrReplaceClearChat(MessagePtr clearchatMessage,
const QDateTime &now) override;
void disableAllMessages() override;