about summary refs log tree commit diff stats
path: root/src/event
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2016-02-04 01:24:37 +0000
committerJames Booth <boothj5@gmail.com>2016-02-04 01:24:37 +0000
commit6702bb9739ffae6f1b905e15fc9504773e0e64c4 (patch)
tree76a36311c65d3df49fbd911ed3bf31fb1a28a727 /src/event
parente1962261a90ceb12860ad64c564a610730c2cc6f (diff)
downloadprofani-tty-6702bb9739ffae6f1b905e15fc9504773e0e64c4.tar.gz
Don't show notification reminders for messages the user does not want notifications for
Diffstat (limited to 'src/event')
-rw-r--r--src/event/server_events.c38
1 files changed, 15 insertions, 23 deletions
diff --git a/src/event/server_events.c b/src/event/server_events.c
index 42d75cdb..0b11fbfa 100644
--- a/src/event/server_events.c
+++ b/src/event/server_events.c
@@ -259,28 +259,29 @@ sv_ev_room_message(const char *const room_jid, const char *const nick, const cha
     mucwin_message(mucwin, nick, message, mention, triggers != NULL);
 
     ProfWin *window = (ProfWin*)mucwin;
-    gboolean is_current = wins_is_current(window);
     int num = wins_get_num(window);
-    gboolean notify = prefs_do_room_notify(is_current, mucwin->roomjid, mynick, message, mention, triggers != NULL);
+    gboolean is_current = FALSE;
 
     // currently in groupchat window
     if (wins_is_current(window)) {
+        is_current = TRUE;
         status_bar_active(num);
 
+        if ((g_strcmp0(mynick, nick) != 0) && (prefs_get_boolean(PREF_BEEP))) {
+            beep();
+        }
+
     // not currently on groupchat window
     } else {
         status_bar_new(num);
 
-        cons_show_incoming_room_message(nick, mucwin->roomjid, num, mention, triggers, mucwin->unread);
-
-        if (prefs_get_boolean(PREF_FLASH) && (strcmp(nick, mynick) != 0)) {
+        if ((g_strcmp0(mynick, nick) != 0) && (prefs_get_boolean(PREF_FLASH))) {
             flash();
         }
 
+        cons_show_incoming_room_message(nick, mucwin->roomjid, num, mention, triggers, mucwin->unread);
+
         mucwin->unread++;
-        if (notify) {
-            mucwin->notify = TRUE;
-        }
 
         if (mention) {
             mucwin->unread_mentions = TRUE;
@@ -290,26 +291,17 @@ sv_ev_room_message(const char *const room_jid, const char *const nick, const cha
         }
     }
 
+    if (prefs_do_room_notify(is_current, mucwin->roomjid, mynick, nick, message, mention, triggers != NULL)) {
+        Jid *jidp = jid_create(mucwin->roomjid);
+        notify_room_message(nick, jidp->localpart, num, message);
+        jid_destroy(jidp);
+    }
+
     if (triggers) {
         g_list_free_full(triggers, free);
     }
 
     rosterwin_roster();
-
-    // don't notify self messages
-    if (strcmp(nick, mynick) == 0) {
-        return;
-    }
-
-    if (prefs_get_boolean(PREF_BEEP)) {
-        beep();
-    }
-
-    if (notify) {
-        Jid *jidp = jid_create(mucwin->roomjid);
-        notify_room_message(nick, jidp->localpart, num, message);
-        jid_destroy(jidp);
-    }
 }
 
 void