about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/event/server_events.c5
-rw-r--r--src/ui/mucwin.c35
-rw-r--r--src/ui/ui.h3
-rw-r--r--tests/unittests/ui/stub_ui.c3
4 files changed, 22 insertions, 24 deletions
diff --git a/src/event/server_events.c b/src/event/server_events.c
index 3e054fa9..84bc407a 100644
--- a/src/event/server_events.c
+++ b/src/event/server_events.c
@@ -155,7 +155,10 @@ void
 sv_ev_room_history(const char *const room_jid, const char *const nick,
     GDateTime *timestamp, const char *const message)
 {
-    mucwin_history(room_jid, nick, timestamp, message);
+    ProfMucWin *mucwin = wins_get_muc(room_jid);
+    if (mucwin) {
+        mucwin_history(mucwin, nick, timestamp, message);
+    }
 }
 
 void
diff --git a/src/ui/mucwin.c b/src/ui/mucwin.c
index f300abec..b0990cd8 100644
--- a/src/ui/mucwin.c
+++ b/src/ui/mucwin.c
@@ -332,29 +332,26 @@ mucwin_nick_change(ProfMucWin *mucwin, const char *const nick)
 }
 
 void
-mucwin_history(const char *const roomjid, const char *const nick,
-    GDateTime *timestamp, const char *const message)
+mucwin_history(ProfMucWin *mucwin, const char *const nick, GDateTime *timestamp, const char *const message)
 {
-    ProfWin *window = (ProfWin*)wins_get_muc(roomjid);
-    if (window == NULL) {
-        log_error("Room history message received from %s, but no window open for %s", nick, roomjid);
-    } else {
-        GString *line = g_string_new("");
+    assert(mucwin != NULL);
 
-        if (strncmp(message, "/me ", 4) == 0) {
-            g_string_append(line, "*");
-            g_string_append(line, nick);
-            g_string_append(line, " ");
-            g_string_append(line, message + 4);
-        } else {
-            g_string_append(line, nick);
-            g_string_append(line, ": ");
-            g_string_append(line, message);
-        }
+    ProfWin *window = (ProfWin*)mucwin;
+    GString *line = g_string_new("");
 
-        win_print(window, '-', 0, timestamp, NO_COLOUR_DATE, 0, "", line->str);
-        g_string_free(line, TRUE);
+    if (strncmp(message, "/me ", 4) == 0) {
+        g_string_append(line, "*");
+        g_string_append(line, nick);
+        g_string_append(line, " ");
+        g_string_append(line, message + 4);
+    } else {
+        g_string_append(line, nick);
+        g_string_append(line, ": ");
+        g_string_append(line, message);
     }
+
+    win_print(window, '-', 0, timestamp, NO_COLOUR_DATE, 0, "", line->str);
+    g_string_free(line, TRUE);
 }
 
 void
diff --git a/src/ui/ui.h b/src/ui/ui.h
index df5233bc..9784c569 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -173,8 +173,7 @@ void mucwin_occupant_affiliation_change(ProfMucWin *mucwin, const char *const ni
 void mucwin_occupant_role_and_affiliation_change(ProfMucWin *mucwin, const char *const nick,
     const char *const role, const char *const affiliation, const char *const actor, const char *const reason);
 void mucwin_roster(ProfMucWin *mucwin, GList *occupants, const char *const presence);
-void mucwin_history(const char *const roomjid, const char *const nick, GDateTime *timestamp,
-    const char *const message);
+void mucwin_history(ProfMucWin *mucwin, const char *const nick, GDateTime *timestamp, const char *const message);
 void mucwin_message(const char *const roomjid, const char *const nick, const char *const message);
 void mucwin_subject(const char *const roomjid, const char *const nick, const char *const subject);
 void mucwin_requires_config(const char *const roomjid);
diff --git a/tests/unittests/ui/stub_ui.c b/tests/unittests/ui/stub_ui.c
index 655b2ed8..b37e8e67 100644
--- a/tests/unittests/ui/stub_ui.c
+++ b/tests/unittests/ui/stub_ui.c
@@ -204,8 +204,7 @@ void mucwin_occupant_affiliation_change(ProfMucWin *mucwin, const char * const n
 void mucwin_occupant_role_and_affiliation_change(ProfMucWin *mucwin, const char * const nick, const char * const role,
     const char * const affiliation, const char * const actor, const char * const reason) {}
 void mucwin_roster(ProfMucWin *mucwin, GList *occupants, const char * const presence) {}
-void mucwin_history(const char * const roomjid, const char * const nick,
-    GDateTime *timestamp, const char * const message) {}
+void mucwin_history(ProfMucWin *mucwin, const char * const nick, GDateTime *timestamp, const char * const message) {}
 void mucwin_message(const char * const roomjid, const char * const nick,
     const char * const message) {}
 void mucwin_subject(const char * const roomjid, const char * const nick, const char * const subject) {}