diff options
-rw-r--r-- | src/event/server_events.c | 5 | ||||
-rw-r--r-- | src/ui/mucwin.c | 35 | ||||
-rw-r--r-- | src/ui/ui.h | 3 | ||||
-rw-r--r-- | tests/unittests/ui/stub_ui.c | 3 |
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) {} |