diff options
Diffstat (limited to 'src/ui')
-rw-r--r-- | src/ui/core.c | 26 | ||||
-rw-r--r-- | src/ui/ui.h | 1 |
2 files changed, 27 insertions, 0 deletions
diff --git a/src/ui/core.c b/src/ui/core.c index 5502f972..be1afd03 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -403,6 +403,32 @@ ui_group_removed(const char * const contact, const char * const group) } void +ui_handle_error_message(const char * const from, const char * const err_msg) +{ + win_type_t win_type = ui_current_win_type(); + if (err_msg == NULL) { + cons_show_error("Unknown error received from service."); + } else if (strcmp(err_msg, "conflict") == 0) { + if (win_type == WIN_MUC) { + ui_current_print_line("Nickname already in use."); + } else { + cons_show_error("Error received from server: %s", err_msg); + } + // remove the room from muc + Jid *room_jid = jid_create(from); + if (!muc_get_roster_received(room_jid->barejid)) { + muc_leave_room(room_jid->barejid); + } + jid_destroy(room_jid); + + } else { + cons_show_error("Error received from server: %s", err_msg); + } + + ui_print_error_from_recipient(from, err_msg); +} + +void ui_contact_online(const char * const barejid, const char * const resource, const char * const show, const char * const status, GDateTime *last_activity) { diff --git a/src/ui/ui.h b/src/ui/ui.h index 4d4ead7b..7fff0703 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -59,6 +59,7 @@ void ui_reset_idle_time(void); void ui_new_chat_win(const char * const to); void ui_print_error_from_recipient(const char * const from, const char *err_msg); void ui_print_system_msg_from_recipient(const char * const from, const char *message); +void ui_handle_error_message(const char * const from, const char * const err_msg); gint ui_unread(void); void ui_close_connected_win(int index); int ui_close_all_wins(void); |