refactor(eventsub): Respect "Hide moderation actions" explicitly (#6041)
This commit is contained in:
@@ -729,6 +729,7 @@ MessageBuilder::MessageBuilder(TimeoutMessageTag, const QString &username,
|
||||
|
||||
this->message().flags.set(MessageFlag::System);
|
||||
this->message().flags.set(MessageFlag::Timeout);
|
||||
this->message().flags.set(MessageFlag::ModerationAction);
|
||||
this->message().flags.set(MessageFlag::DoNotTriggerNotification);
|
||||
this->message().timeoutUser = username;
|
||||
|
||||
@@ -747,6 +748,7 @@ MessageBuilder::MessageBuilder(const BanAction &action, const QDateTime &time,
|
||||
this->emplace<TimestampElement>();
|
||||
this->message().flags.set(MessageFlag::System);
|
||||
this->message().flags.set(MessageFlag::Timeout);
|
||||
this->message().flags.set(MessageFlag::ModerationAction);
|
||||
this->message().timeoutUser = action.target.login;
|
||||
this->message().loginName = action.source.login;
|
||||
this->message().count = count;
|
||||
@@ -1464,7 +1466,7 @@ MessagePtr MessageBuilder::makeDeletionMessageFromIRC(
|
||||
builder.emplace<TimestampElement>();
|
||||
builder.message().flags.set(MessageFlag::System);
|
||||
builder.message().flags.set(MessageFlag::DoNotTriggerNotification);
|
||||
builder.message().flags.set(MessageFlag::Timeout);
|
||||
builder.message().flags.set(MessageFlag::ModerationAction);
|
||||
// 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,
|
||||
@@ -1503,7 +1505,7 @@ MessagePtr MessageBuilder::makeDeletionMessageFromPubSub(
|
||||
builder.emplace<TimestampElement>();
|
||||
builder.message().flags.set(MessageFlag::System);
|
||||
builder.message().flags.set(MessageFlag::DoNotTriggerNotification);
|
||||
builder.message().flags.set(MessageFlag::Timeout);
|
||||
builder.message().flags.set(MessageFlag::ModerationAction);
|
||||
|
||||
builder
|
||||
.emplace<TextElement>(action.source.login, MessageElementFlag::Username,
|
||||
@@ -1710,7 +1712,7 @@ std::pair<MessagePtr, MessagePtr> MessageBuilder::makeAutomodMessage(
|
||||
builder.message().loginName = "automod";
|
||||
builder.message().channelName = channelName;
|
||||
builder.message().flags.set(MessageFlag::PubSub);
|
||||
builder.message().flags.set(MessageFlag::Timeout);
|
||||
builder.message().flags.set(MessageFlag::ModerationAction);
|
||||
builder.message().flags.set(MessageFlag::AutoMod);
|
||||
builder.message().flags.set(MessageFlag::AutoModOffendingMessageHeader);
|
||||
|
||||
@@ -1761,7 +1763,7 @@ std::pair<MessagePtr, MessagePtr> MessageBuilder::makeAutomodMessage(
|
||||
builder2.emplace<TwitchModerationElement>();
|
||||
builder2.message().loginName = action.target.login;
|
||||
builder2.message().flags.set(MessageFlag::PubSub);
|
||||
builder2.message().flags.set(MessageFlag::Timeout);
|
||||
builder2.message().flags.set(MessageFlag::ModerationAction);
|
||||
builder2.message().flags.set(MessageFlag::AutoMod);
|
||||
builder2.message().flags.set(MessageFlag::AutoModOffendingMessage);
|
||||
|
||||
@@ -2063,9 +2065,9 @@ MessagePtrMut MessageBuilder::makeClearChatMessage(const QDateTime &now,
|
||||
builder.emplace<TimestampElement>(now.time());
|
||||
builder->count = count;
|
||||
builder->serverReceivedTime = now;
|
||||
builder.message().flags.set(MessageFlag::System,
|
||||
MessageFlag::DoNotTriggerNotification,
|
||||
MessageFlag::ClearChat);
|
||||
builder.message().flags.set(
|
||||
MessageFlag::System, MessageFlag::DoNotTriggerNotification,
|
||||
MessageFlag::ClearChat, MessageFlag::ModerationAction);
|
||||
|
||||
QString messageText;
|
||||
if (actor.isEmpty())
|
||||
|
||||
@@ -58,6 +58,13 @@ enum class MessageFlag : std::int64_t {
|
||||
ClearChat = (1LL << 39),
|
||||
/// The message is built from EventSub
|
||||
EventSub = (1LL << 40),
|
||||
/// The message is a moderation action.
|
||||
/// Example messages that would count as moderation actions:
|
||||
/// - forsen has been banned
|
||||
/// - forsen deleted message from forsen
|
||||
/// - forsen added "blockedterm" as a blocked term
|
||||
/// - Your message is being checked by mods and has not been sent
|
||||
ModerationAction = (1LL << 41),
|
||||
};
|
||||
using MessageFlags = FlagsEnum<MessageFlag>;
|
||||
|
||||
|
||||
@@ -166,16 +166,14 @@ void MessageLayout::actuallyLayout(const MessageLayoutContext &ctx)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (this->message_->flags.has(MessageFlag::Timeout) ||
|
||||
this->message_->flags.has(MessageFlag::Untimeout))
|
||||
if (this->message_->flags.has(MessageFlag::ModerationAction))
|
||||
{
|
||||
// NOTE: This hides the message but it will make the message re-appear if moderation message hiding is no longer active, and the layout is re-laid-out.
|
||||
// This is only the case for the moderation messages that don't get filtered during creation.
|
||||
// We should decide which is the correct method & apply that everywhere
|
||||
if (hideModerationActions ||
|
||||
(getSettings()->streamerModeHideModActions &&
|
||||
getApp()->getStreamerMode()->isEnabled()))
|
||||
getApp()->getStreamerMode()->shouldHideModActions())
|
||||
{
|
||||
// Message is being hidden because we consider the message
|
||||
// a moderation action (something a streamer is unlikely to
|
||||
// want to share if they briefly show their chat on stream)
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -515,7 +513,8 @@ bool MessageLayout::isReplyable() const
|
||||
|
||||
if (this->message_->flags.hasAny(
|
||||
{MessageFlag::System, MessageFlag::Subscription,
|
||||
MessageFlag::Timeout, MessageFlag::Whisper}))
|
||||
MessageFlag::Timeout, MessageFlag::Whisper,
|
||||
MessageFlag::ModerationAction}))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user