From d505a92d1e2f9c47d2e46c4ac934f16abb131308 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 1 Nov 2015 23:52:16 +0000 Subject: [PATCH] mucwin_occupant_online takes ProfMucWin --- src/event/server_events.c | 5 +++-- src/ui/mucwin.c | 26 ++++++++++++-------------- src/ui/ui.h | 2 +- tests/unittests/ui/stub_ui.c | 2 +- 4 files changed, 17 insertions(+), 18 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); diff --git a/tests/unittests/ui/stub_ui.c b/tests/unittests/ui/stub_ui.c index 7b67d9be..375368ec 100644 --- a/tests/unittests/ui/stub_ui.c +++ b/tests/unittests/ui/stub_ui.c @@ -228,7 +228,7 @@ void ui_leave_room(const char * const roomjid) {} 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) {}