feat: stack /clear messages (#5806)
This commit is contained in:
@@ -197,9 +197,8 @@ std::optional<ClearChatMessage> parseClearChatMessage(
|
||||
if (message->parameters().length() == 1)
|
||||
{
|
||||
return ClearChatMessage{
|
||||
.message =
|
||||
makeSystemMessage("Chat has been cleared by a moderator.",
|
||||
calculateMessageTime(message).time()),
|
||||
.message = MessageBuilder::makeClearChatMessage(
|
||||
calculateMessageTime(message).time(), {}),
|
||||
.disableAllMessages = true,
|
||||
};
|
||||
}
|
||||
@@ -320,15 +319,14 @@ void IrcMessageHandler::parseMessageInto(Communi::IrcMessage *message,
|
||||
return;
|
||||
}
|
||||
auto &clearChat = *cc;
|
||||
auto time = calculateMessageTime(message).time();
|
||||
if (clearChat.disableAllMessages)
|
||||
{
|
||||
sink.addMessage(std::move(clearChat.message),
|
||||
MessageContext::Original);
|
||||
sink.addOrReplaceClearChat(std::move(clearChat.message), time);
|
||||
}
|
||||
else
|
||||
{
|
||||
sink.addOrReplaceTimeout(std::move(clearChat.message),
|
||||
calculateMessageTime(message).time());
|
||||
sink.addOrReplaceTimeout(std::move(clearChat.message), time);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -464,18 +462,16 @@ void IrcMessageHandler::handleClearChatMessage(Communi::IrcMessage *message)
|
||||
return;
|
||||
}
|
||||
|
||||
auto time = calculateMessageTime(message).time();
|
||||
// chat has been cleared by a moderator
|
||||
if (clearChat.disableAllMessages)
|
||||
{
|
||||
chan->disableAllMessages();
|
||||
chan->addMessage(std::move(clearChat.message),
|
||||
MessageContext::Original);
|
||||
|
||||
chan->addOrReplaceClearChat(std::move(clearChat.message), time);
|
||||
return;
|
||||
}
|
||||
|
||||
chan->addOrReplaceTimeout(std::move(clearChat.message),
|
||||
calculateMessageTime(message).time());
|
||||
chan->addOrReplaceTimeout(std::move(clearChat.message), time);
|
||||
|
||||
// refresh all
|
||||
getApp()->getWindows()->repaintVisibleChatWidgets(chan.get());
|
||||
|
||||
@@ -247,11 +247,10 @@ void TwitchIrcServer::initialize()
|
||||
return;
|
||||
}
|
||||
|
||||
QString text =
|
||||
QString("%1 cleared the chat.").arg(action.source.login);
|
||||
|
||||
postToThread([chan, text] {
|
||||
chan->addSystemMessage(text);
|
||||
postToThread([chan, actor{action.source.login}] {
|
||||
auto now = QTime::currentTime();
|
||||
chan->addOrReplaceClearChat(
|
||||
MessageBuilder::makeClearChatMessage(now, actor), now);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user