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:
@@ -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);
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user