about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/profanity.c12
-rw-r--r--src/profanity.h3
-rw-r--r--src/ui/core.c10
-rw-r--r--src/ui/ui.h3
-rw-r--r--src/xmpp/roster.c5
5 files changed, 27 insertions, 6 deletions
diff --git a/src/profanity.c b/src/profanity.c
index 7042b7b5..d67cd6a9 100644
--- a/src/profanity.c
+++ b/src/profanity.c
@@ -149,10 +149,18 @@ prof_handle_duck_result(const char * const result)
 }
 
 void
-prof_handle_already_in_group(const char * const barejid,
+prof_handle_already_in_group(const char * const contact,
     const char * const group)
 {
-    ui_contact_already_in_group(barejid, group);
+    ui_contact_already_in_group(contact, group);
+    ui_current_page_off();
+}
+
+void
+prof_handle_not_in_group(const char * const contact,
+    const char * const group)
+{
+    ui_contact_not_in_group(contact, group);
     ui_current_page_off();
 }
 
diff --git a/src/profanity.h b/src/profanity.h
index 7254c2de..d7e37870 100644
--- a/src/profanity.h
+++ b/src/profanity.h
@@ -82,6 +82,7 @@ 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);
 void prof_handle_roster_remove(const char * const barejid);
-void prof_handle_already_in_group(const char * const barejid, const char * const group);
+void prof_handle_already_in_group(const char * const contact, const char * const group);
+void prof_handle_not_in_group(const char * const contact, const char * const group);
 
 #endif
diff --git a/src/ui/core.c b/src/ui/core.c
index 86518bf7..8f04a375 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -456,9 +456,15 @@ ui_roster_remove(const char * const barejid)
 }
 
 void
-ui_contact_already_in_group(const char * const barejid, const char * const group)
+ui_contact_already_in_group(const char * const contact, const char * const group)
 {
-    cons_show("%s already in group %s", barejid, group);
+    cons_show("%s already in group %s", contact, group);
+}
+
+void
+ui_contact_not_in_group(const char * const contact, const char * const group)
+{
+    cons_show("%s is not currently in group %s", contact, group);
 }
 
 void
diff --git a/src/ui/ui.h b/src/ui/ui.h
index f8a6ff2d..65880b2a 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -114,7 +114,8 @@ 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);
 void ui_roster_remove(const char * const barejid);
-void ui_contact_already_in_group(const char * const barejid, const char * const group);
+void ui_contact_already_in_group(const char * const contact, const char * const group);
+void ui_contact_not_in_group(const char * const contact, const char * const group);
 
 // contact status functions
 void ui_status_room(const char * const contact);
diff --git a/src/xmpp/roster.c b/src/xmpp/roster.c
index f29ac09b..262ad0b1 100644
--- a/src/xmpp/roster.c
+++ b/src/xmpp/roster.c
@@ -326,6 +326,11 @@ roster_remove_from_group(const char * const group, const char * const barejid)
 
     if (contact != NULL) {
         if (!p_contact_in_group(contact, group)) {
+            if (p_contact_name(contact) != NULL) {
+                prof_handle_not_in_group(p_contact_name(contact), group);
+            } else {
+                prof_handle_not_in_group(p_contact_barejid(contact), group);
+            }
             return;
         }