about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2013-06-02 00:20:22 +0100
committerJames Booth <boothj5@gmail.com>2013-06-02 00:20:22 +0100
commit65c09db19e663e2ba51f95e85e89f43840a0da1f (patch)
tree966231de5f2f7813e466de1c08659b7dcc931ac5
parentcf8d00185b7908607d1bee56a17bf7500d939326 (diff)
downloadprofani-tty-65c09db19e663e2ba51f95e85e89f43840a0da1f.tar.gz
Added message in console on /roster add
-rw-r--r--src/profanity.c7
-rw-r--r--src/profanity.h1
-rw-r--r--src/ui/core.c10
-rw-r--r--src/ui/ui.h1
-rw-r--r--src/xmpp/roster.c11
-rw-r--r--src/xmpp/xmpp.h3
6 files changed, 29 insertions, 4 deletions
diff --git a/src/profanity.c b/src/profanity.c
index edec2fb3..84af8ab1 100644
--- a/src/profanity.c
+++ b/src/profanity.c
@@ -200,6 +200,13 @@ prof_handle_subscription(const char *from, jabber_subscr_t type)
 }
 
 void
+prof_handle_roster_add(const char * const barejid, const char * const name)
+{
+    ui_roster_add(barejid, name);
+    ui_current_page_off();
+}
+
+void
 prof_handle_login_account_success(char *account_name)
 {
     ProfAccount *account = accounts_get_account(account_name);
diff --git a/src/profanity.h b/src/profanity.h
index 0f4699a7..7f96b04e 100644
--- a/src/profanity.h
+++ b/src/profanity.h
@@ -80,5 +80,6 @@ void prof_handle_disco_info(const char *from, GSList *identities,
     GSList *features);
 void prof_handle_duck_help(const char * const result);
 void prof_handle_duck_result(const char * const result);
+void prof_handle_roster_add(const char * const barejid, const char * const name);
 
 #endif
diff --git a/src/ui/core.c b/src/ui/core.c
index 9f86332e..8cb8831b 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -440,6 +440,16 @@ ui_incoming_msg(const char * const from, const char * const message,
 }
 
 void
+ui_roster_add(const char * const barejid, const char * const name)
+{
+    if (name != NULL) {
+        cons_show("Roster item added: %s (%s)", barejid, name);
+    } else {
+        cons_show("Roster item added: %s", barejid);
+    }
+}
+
+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 be57a0be..8f5610fc 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -112,6 +112,7 @@ void ui_room_member_nick_change(const char * const room,
 void ui_room_nick_change(const char * const room, const char * const nick);
 void ui_room_member_presence(const char * const room,
     const char * const nick, const char * const show, const char * const status);
+void ui_roster_add(const char * const barejid, const char * const name);
 
 // contact status functions
 void ui_status_room(const char * const contact);
diff --git a/src/xmpp/roster.c b/src/xmpp/roster.c
index 18000cd4..b5e94f42 100644
--- a/src/xmpp/roster.c
+++ b/src/xmpp/roster.c
@@ -27,6 +27,7 @@
 #include <strophe.h>
 
 #include "log.h"
+#include "profanity.h"
 #include "tools/autocomplete.h"
 #include "xmpp/connection.h"
 #include "xmpp/roster.h"
@@ -157,7 +158,7 @@ roster_remove(const char * const barejid)
 
 gboolean
 roster_add(const char * const barejid, const char * const name, GSList *groups,
-    const char * const subscription, gboolean pending_out)
+    const char * const subscription, gboolean pending_out, gboolean from_initial)
 {
     gboolean added = FALSE;
     PContact contact = g_hash_table_lookup(contacts, barejid);
@@ -176,6 +177,10 @@ roster_add(const char * const barejid, const char * const name, GSList *groups,
         autocomplete_add(barejid_ac, strdup(barejid));
         _add_name_and_barejid(name, barejid);
 
+        if (!from_initial) {
+            prof_handle_roster_add(barejid, name);
+        }
+
         added = TRUE;
     }
 
@@ -189,7 +194,7 @@ roster_update(const char * const barejid, const char * const name,
     PContact contact = g_hash_table_lookup(contacts, barejid);
 
     if (contact == NULL) {
-        roster_add(barejid, name, groups, subscription, pending_out);
+        roster_add(barejid, name, groups, subscription, pending_out, FALSE);
     } else {
         p_contact_set_subscription(contact, subscription);
         p_contact_set_pending_out(contact, pending_out);
@@ -444,7 +449,7 @@ _roster_handle_result(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
 
             GSList *groups = _get_groups_from_item(item);
 
-            gboolean added = roster_add(barejid, name, groups, sub, pending_out);
+            gboolean added = roster_add(barejid, name, groups, sub, pending_out, TRUE);
 
             if (!added) {
                 log_warning("Attempt to add contact twice: %s", barejid);
diff --git a/src/xmpp/xmpp.h b/src/xmpp/xmpp.h
index 5469519b..345fa8f1 100644
--- a/src/xmpp/xmpp.h
+++ b/src/xmpp/xmpp.h
@@ -140,7 +140,8 @@ char * roster_find_contact(char *search_str);
 char * roster_find_jid(char *search_str);
 char * roster_find_resource(char *search_str);
 gboolean roster_add(const char * const barejid, const char * const name,
-    GSList *groups, const char * const subscription, gboolean pending_out);
+    GSList *groups, const char * const subscription, gboolean pending_out,
+    gboolean from_initial);
 void roster_change_name(const char * const barejid, const char * const new_name);
 char * roster_barejid_from_name(const char * const name);
 void roster_add_new(const char * const barejid, const char * const name);