From e68784be432f7bce7cdd008577e7fef73c08ca15 Mon Sep 17 00:00:00 2001 From: James Booth Date: Mon, 2 Nov 2015 00:19:46 +0000 Subject: [PATCH] mucwin_history takes ProfMucWin --- src/event/server_events.c | 5 ++++- src/ui/mucwin.c | 37 +++++++++++++++++------------------- src/ui/ui.h | 3 +-- tests/unittests/ui/stub_ui.c | 3 +-- 4 files changed, 23 insertions(+), 25 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); + assert(mucwin != NULL); + + ProfWin *window = (ProfWin*)mucwin; + GString *line = g_string_new(""); + + 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 { - GString *line = g_string_new(""); - - 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); + 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) {}