about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/jabber.c16
-rw-r--r--src/profanity.c20
-rw-r--r--src/profanity.h2
3 files changed, 26 insertions, 12 deletions
diff --git a/src/jabber.c b/src/jabber.c
index b057e637..16131fb0 100644
--- a/src/jabber.c
+++ b/src/jabber.c
@@ -490,19 +490,11 @@ _jabber_presence_handler(xmpp_conn_t * const conn,
         status_str = NULL;
 
     if (strcmp(short_jid, short_from) !=0) {
-        if (type == NULL) {// online
-            gboolean result = contact_list_add(short_from, show_str, status_str);
-            if (result) {
-                win_contact_online(short_from, show_str, status_str);
-            }
-        } else {// offline
-            gboolean result = contact_list_remove(short_from);
-            if (result) {
-                win_contact_offline(short_from, show_str, status_str);
-            }
+        if (type == NULL) {
+            prof_handle_contact_online(short_from, show_str, status_str);
+        } else {
+            prof_handle_contact_offline(short_from, show_str, status_str);
         }
-
-        win_page_off();
     }
 
     return 1;
diff --git a/src/profanity.c b/src/profanity.c
index ff0e5518..01be4289 100644
--- a/src/profanity.c
+++ b/src/profanity.c
@@ -227,6 +227,26 @@ prof_handle_failed_login(void)
     log_info("disconnected");
 }
 
+void
+prof_handle_contact_online(char *contact, char *show, char *status)
+{
+    gboolean result = contact_list_add(contact, show, status);
+    if (result) {
+        win_contact_online(contact, show, status);
+    }
+    win_page_off();
+}
+
+void
+prof_handle_contact_offline(char *contact, char *show, char *status)
+{
+    gboolean result = contact_list_remove(contact);
+    if (result) {
+        win_contact_offline(contact, show, status);
+    }
+    win_page_off();
+}
+
 static void
 _create_config_directory()
 {
diff --git a/src/profanity.h b/src/profanity.h
index e6d79d3e..af6b3e11 100644
--- a/src/profanity.h
+++ b/src/profanity.h
@@ -29,6 +29,8 @@ void prof_handle_login_success(const char *jid);
 void prof_handle_lost_connection(void);
 void prof_handle_failed_login(void);
 void prof_handle_typing(char *from);
+void prof_handle_contact_online(char *contact, char *show, char *status);
+void prof_handle_contact_offline(char *contact, char *show, char *status);
 void prof_handle_incoming_message(char *from, char *message);
 void profanity_shutdown_init(void);
 void profanity_shutdown(void);