Make deletions show like timeouts/bans. (#2841)

Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
This commit is contained in:
Mm2PL
2021-06-06 15:51:57 +00:00
committed by GitHub
parent 8639f450f2
commit f1e843a672
8 changed files with 60 additions and 3 deletions
+11 -1
View File
@@ -479,7 +479,17 @@ void IrcMessageHandler::handleClearMessageMessage(Communi::IrcMessage *message)
QString targetID = tags.value("target-msg-id").toString();
chan->deleteMessage(targetID);
auto msg = chan->findMessage(targetID);
if (msg != nullptr)
{
msg->flags.set(MessageFlag::Disabled);
if (!getSettings()->hideDeletionActions)
{
MessageBuilder builder;
TwitchMessageBuilder::deletionMessage(msg, &builder);
chan->addMessage(builder.release());
}
}
}
void IrcMessageHandler::handleUserStateMessage(Communi::IrcMessage *message)
@@ -1356,5 +1356,36 @@ void TwitchMessageBuilder::hostingSystemMessage(const QString &channelName,
MessageColor::System, FontStyle::ChatMediumBold)
->setLink({Link::UserInfo, channelName});
}
void TwitchMessageBuilder::deletionMessage(const MessagePtr originalMessage,
MessageBuilder *builder)
{
builder->emplace<TimestampElement>();
builder->message().flags.set(MessageFlag::System);
builder->message().flags.set(MessageFlag::DoNotTriggerNotification);
builder->message().flags.set(MessageFlag::Timeout);
// TODO(mm2pl): If or when jumping to a single message gets implemented a link,
// add a link to the originalMessage
builder->emplace<TextElement>("A message from", MessageElementFlag::Text,
MessageColor::System);
builder
->emplace<TextElement>(originalMessage->displayName,
MessageElementFlag::Username,
MessageColor::System, FontStyle::ChatMediumBold)
->setLink({Link::UserInfo, originalMessage->loginName});
builder->emplace<TextElement>("was deleted:", MessageElementFlag::Text,
MessageColor::System);
if (originalMessage->messageText.length() > 50)
{
builder->emplace<TextElement>(
originalMessage->messageText.left(50) + "...",
MessageElementFlag::Text, MessageColor::Text);
}
else
{
builder->emplace<TextElement>(originalMessage->messageText,
MessageElementFlag::Text,
MessageColor::Text);
}
}
} // namespace chatterino
@@ -64,6 +64,8 @@ public:
MessageBuilder *builder);
static void hostingSystemMessage(const QString &channelName,
MessageBuilder *builder);
static void deletionMessage(const MessagePtr originalMessage,
MessageBuilder *builder);
private:
void parseUsernameColor() override;