about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-10-07 00:57:51 +0100
committerJames Booth <boothj5@gmail.com>2014-10-07 00:57:51 +0100
commitd8eb97eec878d797e4184f48c22a7e6284fc213d (patch)
tree95e6d1f82586d074866521961e17512651081c63 /src
parentd6a4af9992f94633b04ff9ae40d725b30bbfd6de (diff)
downloadprofani-tty-d8eb97eec878d797e4184f48c22a7e6284fc213d.tar.gz
Refactor handle_muc_occupant_online
Diffstat (limited to 'src')
-rw-r--r--src/server_events.c50
1 files changed, 24 insertions, 26 deletions
diff --git a/src/server_events.c b/src/server_events.c
index 0e559c3c..40de2318 100644
--- a/src/server_events.c
+++ b/src/server_events.c
@@ -719,35 +719,33 @@ void
 handle_muc_occupant_online(const char * const room, const char * const nick, const char * const jid,
     const char * const role, const char * const affiliation, const char * const show, const char * const status)
 {
+    gboolean updated = muc_roster_add(room, nick, jid, role, affiliation, show, status);
+
     if (!muc_roster_complete(room)) {
-        muc_roster_add(room, nick, jid, role, affiliation, show, status);
-    } else {
-        char *old_nick = muc_roster_nick_change_complete(room, nick);
+        return;
+    }
 
-        if (old_nick) {
-            muc_roster_add(room, nick, jid, role, affiliation, show, status);
-            ui_room_member_nick_change(room, old_nick, nick);
-            free(old_nick);
-        } else {
-            if (!muc_roster_contains_nick(room, nick)) {
-                muc_roster_add(room, nick, jid, role, affiliation, show, status);
+    char *old_nick = muc_roster_nick_change_complete(room, nick);
+    if (old_nick) {
+        ui_room_member_nick_change(room, old_nick, nick);
+        free(old_nick);
+        return;
+    }
 
-                char *muc_status_pref = prefs_get_string(PREF_STATUSES_MUC);
-                if (g_strcmp0(muc_status_pref, "none") != 0) {
-                    ui_room_member_online(room, nick, show, status);
-                }
-                prefs_free_string(muc_status_pref);
-            } else {
-                gboolean updated = muc_roster_add(room, nick, jid, role, affiliation, show, status);
-
-                if (updated) {
-                    char *muc_status_pref = prefs_get_string(PREF_STATUSES_MUC);
-                    if (g_strcmp0(muc_status_pref, "all") == 0) {
-                        ui_room_member_presence(room, nick, show, status);
-                    }
-                    prefs_free_string(muc_status_pref);
-                }
-            }
+    if (!muc_roster_contains_nick(room, nick)) {
+        char *muc_status_pref = prefs_get_string(PREF_STATUSES_MUC);
+        if (g_strcmp0(muc_status_pref, "none") != 0) {
+            ui_room_member_online(room, nick, show, status);
+        }
+        prefs_free_string(muc_status_pref);
+        return;
+    }
+
+    if (updated) {
+        char *muc_status_pref = prefs_get_string(PREF_STATUSES_MUC);
+        if (g_strcmp0(muc_status_pref, "all") == 0) {
+            ui_room_member_presence(room, nick, show, status);
         }
+        prefs_free_string(muc_status_pref);
     }
 }
\ No newline at end of file