diff --git a/components/buffer-header.js b/components/buffer-header.js index 3436bdf..072dd90 100644 --- a/components/buffer-header.js +++ b/components/buffer-header.js @@ -2,6 +2,7 @@ import { html, Component } from "../lib/index.js"; import linkify from "../lib/linkify.js"; import { strip as stripANSI } from "../lib/ansi.js"; import { BufferType, ServerStatus, getServerName } from "../state.js"; +import * as irc from "../lib/irc.js"; const UserStatus = { HERE: "here", @@ -134,7 +135,7 @@ export default function BufferHeader(props) { } let realname = props.buffer.name; - if (props.user.realname) { + if (irc.isMeaningfulRealname(props.user.realname, props.buffer.name)) { realname = stripANSI(props.user.realname || ""); } diff --git a/components/member-list.js b/components/member-list.js index d2095f1..93d8813 100644 --- a/components/member-list.js +++ b/components/member-list.js @@ -2,6 +2,7 @@ import { html, Component } from "../lib/index.js"; import { getNickURL } from "../state.js"; import { strip as stripANSI } from "../lib/ansi.js"; import Membership from "./membership.js"; +import * as irc from "../lib/irc.js"; class MemberItem extends Component { constructor(props) { @@ -48,7 +49,7 @@ class MemberItem extends Component { mask = `${user.username}@${user.hostname}`; } - if (user.realname) { + if (irc.isMeaningfulRealname(user.realname, this.props.nick)) { title = stripANSI(user.realname); if (mask) { title = `${title} (${mask})`; diff --git a/lib/irc.js b/lib/irc.js index 5a7b8a5..92204c7 100644 --- a/lib/irc.js +++ b/lib/irc.js @@ -638,3 +638,20 @@ export function forEachChannelModeUpdate(msg, isupport, callback) { callback(mode, add, arg); } } + +/** + * Since the realname is mandatory, many clients set a meaningless realname. + */ +export function isMeaningfulRealname(realname, nick) { + if (!realname || realname === nick) { + return false; + } + + if (realname.toLowerCase() === "realname") { + return false; + } + + // TODO: add more quirks + + return true; +}