1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 11:08:11 +00:00

IRCClient: Only notify about channel messages containing our nickname

This commit is contained in:
Andreas Kling 2020-03-26 20:18:22 +01:00
parent 163812df97
commit 3c29818048
2 changed files with 30 additions and 17 deletions

View file

@ -93,25 +93,36 @@ bool IRCWindow::is_active() const
return m_client.current_window() == this;
}
void IRCWindow::post_notification_if_needed(const String& name, const String& message)
{
if (name.is_null() || message.is_null())
return;
if (is_active() && window()->is_active())
return;
auto notification = GUI::Notification::construct();
if (type() == Type::Channel) {
if (!message.contains(m_client.nickname()))
return;
StringBuilder builder;
builder.append(name);
builder.append(" in ");
builder.append(m_name);
notification->set_title(builder.to_string());
} else {
notification->set_title(name);
}
notification->set_text(message);
notification->show();
}
void IRCWindow::did_add_message(const String& name, const String& message)
{
if ((!is_active() || !window()->is_active()) && !name.is_null() && !message.is_null()) {
auto notification = GUI::Notification::construct();
if (type() == Type::Channel) {
StringBuilder builder;
builder.append(name);
builder.append(" in ");
builder.append(m_name);
notification->set_title(builder.to_string());
} else {
notification->set_title(name);
}
notification->set_title(name);
notification->set_text(message);
notification->show();
}
post_notification_if_needed(name, message);
if (!is_active()) {
++m_unread_count;