feat: add filter for external badges (#6709)

Co-authored-by: Ava Chow <github@achow101.com>
Reviewed-by: Nerixyz <nerixdev@outlook.de>
This commit is contained in:
pajlada
2026-01-05 16:20:21 +01:00
committed by GitHub
parent 25ea6b9214
commit 327dc0ebcb
186 changed files with 554 additions and 40 deletions
+2
View File
@@ -132,6 +132,8 @@ QJsonObject Message::toJson() const
}
msg["twitchBadgeInfos"_L1] = twitchBadgeInfos;
msg["externalBadges"_L1] = QJsonArray::fromStringList(this->externalBadges);
if (this->highlightColor)
{
msg["highlightColor"_L1] = this->highlightColor->name(QColor::HexArgb);
+7
View File
@@ -61,6 +61,13 @@ struct Message {
/// Map of extra data associated with each Twitch badge
std::unordered_map<QString, QString> twitchBadgeInfos;
/// List of external badges associated with this message
/// The badge should follow the following format: "provider:badgename". e.g.:
/// - betterttv:pro
/// - frankerfacez:mod
/// - 7tv:sub
QStringList externalBadges;
std::shared_ptr<QColor> highlightColor;
// Each reply holds a reference to the thread. When every reply is dropped,
// the reply thread will be cleaned up by the TwitchChannel.
+15
View File
@@ -2472,6 +2472,9 @@ void MessageBuilder::appendChatterinoBadges(const QString &userID)
{
this->emplace<BadgeElement>(*badge,
MessageElementFlag::BadgeChatterino);
/// e.g. "chatterino:Chatterino Top donator"
this->message().externalBadges.emplace_back((*badge)->name.string);
}
}
@@ -2482,6 +2485,9 @@ void MessageBuilder::appendFfzBadges(TwitchChannel *twitchChannel,
{
this->emplace<FfzBadgeElement>(
badge.emote, MessageElementFlag::BadgeFfz, badge.color);
/// e.g. "frankerfacez:subwoofer"
this->message().externalBadges.emplace_back(badge.emote->name.string);
}
if (twitchChannel == nullptr)
@@ -2493,6 +2499,9 @@ void MessageBuilder::appendFfzBadges(TwitchChannel *twitchChannel,
{
this->emplace<FfzBadgeElement>(
badge.emote, MessageElementFlag::BadgeFfz, badge.color);
/// e.g. "frankerfacez:subwoofer"
this->message().externalBadges.emplace_back(badge.emote->name.string);
}
}
@@ -2501,6 +2510,9 @@ void MessageBuilder::appendBttvBadges(const QString &userID)
if (auto badge = getApp()->getBttvBadges()->getBadge({userID}))
{
this->emplace<BadgeElement>(*badge, MessageElementFlag::BadgeBttv);
/// e.g. "betterttv:Pro Subscriber"
this->message().externalBadges.emplace_back((*badge)->name.string);
}
}
@@ -2509,6 +2521,9 @@ void MessageBuilder::appendSeventvBadges(const QString &userID)
if (auto badge = getApp()->getSeventvBadges()->getBadge({userID}))
{
this->emplace<BadgeElement>(*badge, MessageElementFlag::BadgeSevenTV);
/// e.g. "7tv:NNYS 2024"
this->message().externalBadges.emplace_back((*badge)->name.string);
}
}