about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2015-11-01 23:52:16 +0000
committerJames Booth <boothj5@gmail.com>2015-11-01 23:52:16 +0000
commitd505a92d1e2f9c47d2e46c4ac934f16abb131308 (patch)
treed12558ad51320f177efe6cc002b4e8f0ffb700d6 /src
parent3a98bf315c5ab5678aa8a77c3fa46b2d3dec7ac8 (diff)
downloadprofani-tty-d505a92d1e2f9c47d2e46c4ac934f16abb131308.tar.gz
mucwin_occupant_online takes ProfMucWin
Diffstat (limited to 'src')
-rw-r--r--src/event/server_events.c5
-rw-r--r--src/ui/mucwin.c26
-rw-r--r--src/ui/ui.h2
3 files changed, 16 insertions, 17 deletions
diff --git a/src/event/server_events.c b/src/event/server_events.c
index c823e164..d1e8380b 100644
--- a/src/event/server_events.c
+++ b/src/event/server_events.c
@@ -646,8 +646,9 @@ sv_ev_muc_occupant_online(const char *const room, const char *const nick, const
     // joined room
     if (!occupant) {
         char *muc_status_pref = prefs_get_string(PREF_STATUSES_MUC);
-        if (g_strcmp0(muc_status_pref, "none") != 0) {
-            mucwin_occupant_online(room, nick, role, affiliation, show, status);
+        ProfMucWin *mucwin = wins_get_muc(room);
+        if (mucwin && g_strcmp0(muc_status_pref, "none") != 0) {
+            mucwin_occupant_online(mucwin, nick, role, affiliation, show, status);
         }
         prefs_free_string(muc_status_pref);
         occupantswin_occupants(room);
diff --git a/src/ui/mucwin.c b/src/ui/mucwin.c
index 4b07ffdc..b7d41800 100644
--- a/src/ui/mucwin.c
+++ b/src/ui/mucwin.c
@@ -285,24 +285,22 @@ mucwin_occupant_banned(ProfMucWin *mucwin, const char *const nick, const char *c
 }
 
 void
-mucwin_occupant_online(const char *const roomjid, const char *const nick, const char *const role,
+mucwin_occupant_online(ProfMucWin *mucwin, const char *const nick, const char *const role,
     const char *const affiliation, const char *const show, const char *const status)
 {
-    ProfWin *window = (ProfWin*)wins_get_muc(roomjid);
-    if (window == NULL) {
-        log_error("Received online presence for room participant %s, but no window open for %s.", nick, roomjid);
-    } else {
-        win_vprint(window, '!', 0, NULL, NO_EOL, THEME_ONLINE, "", "-> %s has joined the room", nick);
-        if (prefs_get_boolean(PREF_MUC_PRIVILEGES)) {
-            if (role) {
-                win_vprint(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ONLINE, "", ", role: %s", role);
-            }
-            if (affiliation) {
-                win_vprint(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ONLINE, "", ", affiliation: %s", affiliation);
-            }
+    assert(mucwin != NULL);
+
+    ProfWin *window = (ProfWin*)mucwin;
+    win_vprint(window, '!', 0, NULL, NO_EOL, THEME_ONLINE, "", "-> %s has joined the room", nick);
+    if (prefs_get_boolean(PREF_MUC_PRIVILEGES)) {
+        if (role) {
+            win_vprint(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ONLINE, "", ", role: %s", role);
+        }
+        if (affiliation) {
+            win_vprint(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ONLINE, "", ", affiliation: %s", affiliation);
         }
-        win_print(window, '!', 0, NULL, NO_DATE, THEME_ROOMINFO, "", "");
     }
+    win_print(window, '!', 0, NULL, NO_DATE, THEME_ROOMINFO, "", "");
 }
 
 void
diff --git a/src/ui/ui.h b/src/ui/ui.h
index 543019c3..25212f27 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -189,7 +189,7 @@ void mucwin_occupant_banned(ProfMucWin *mucwin, const char *const nick, const ch
     const char *const reason);
 void mucwin_broadcast(const char *const roomjid, const char *const message);
 void mucwin_occupant_offline(ProfMucWin *mucwin, const char *const nick);
-void mucwin_occupant_online(const char *const roomjid, const char *const nick, const char *const roles,
+void mucwin_occupant_online(ProfMucWin *mucwin, const char *const nick, const char *const roles,
     const char *const affiliation, const char *const show, const char *const status);
 void mucwin_occupant_nick_change(const char *const roomjid, const char *const old_nick, const char *const nick);
 void mucwin_nick_change(const char *const roomjid, const char *const nick);