Make deletions show like timeouts/bans. (#2841)
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user