Add support for Nicknames on IRC (#4170)
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
This commit is contained in:
@@ -246,4 +246,60 @@ void SharedMessageBuilder::triggerHighlights()
|
||||
}
|
||||
}
|
||||
|
||||
QString SharedMessageBuilder::stylizeUsername(const QString &username,
|
||||
const Message &message)
|
||||
{
|
||||
auto app = getApp();
|
||||
|
||||
const QString &localizedName = message.localizedName;
|
||||
bool hasLocalizedName = !localizedName.isEmpty();
|
||||
|
||||
// The full string that will be rendered in the chat widget
|
||||
QString usernameText;
|
||||
|
||||
switch (getSettings()->usernameDisplayMode.getValue())
|
||||
{
|
||||
case UsernameDisplayMode::Username: {
|
||||
usernameText = username;
|
||||
}
|
||||
break;
|
||||
|
||||
case UsernameDisplayMode::LocalizedName: {
|
||||
if (hasLocalizedName)
|
||||
{
|
||||
usernameText = localizedName;
|
||||
}
|
||||
else
|
||||
{
|
||||
usernameText = username;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
case UsernameDisplayMode::UsernameAndLocalizedName: {
|
||||
if (hasLocalizedName)
|
||||
{
|
||||
usernameText = username + "(" + localizedName + ")";
|
||||
}
|
||||
else
|
||||
{
|
||||
usernameText = username;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
auto nicknames = getCSettings().nicknames.readOnly();
|
||||
|
||||
for (const auto &nickname : *nicknames)
|
||||
{
|
||||
if (nickname.match(usernameText))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return usernameText;
|
||||
}
|
||||
} // namespace chatterino
|
||||
|
||||
@@ -38,6 +38,9 @@ public:
|
||||
// Parses "badges" tag which contains a comma separated list of key-value elements
|
||||
static std::vector<Badge> parseBadgeTag(const QVariantMap &tags);
|
||||
|
||||
static QString stylizeUsername(const QString &username,
|
||||
const Message &message);
|
||||
|
||||
protected:
|
||||
virtual void parse();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user