mirror of
https://github.com/profanity-im/profanity.git
synced 2024-09-22 19:45:54 -04:00
Merge pull request #1826 from H3rnand3zzz/feature/roster-nickname-remove
Add nickname support for `/roster remove`
This commit is contained in:
commit
ebec68821f
@ -2292,7 +2292,7 @@ _roster_autocomplete(ProfWin* window, const char* const input, gboolean previous
|
|||||||
if (result) {
|
if (result) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
result = autocomplete_param_with_func(input, "/roster remove", roster_barejid_autocomplete, previous, NULL);
|
result = autocomplete_param_with_func(input, "/roster remove", roster_contact_autocomplete, previous, NULL);
|
||||||
if (result) {
|
if (result) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -290,7 +290,7 @@ static const struct cmd_t command_defs[] = {
|
|||||||
"/roster size <percent>",
|
"/roster size <percent>",
|
||||||
"/roster wrap on|off",
|
"/roster wrap on|off",
|
||||||
"/roster add <jid> [<nick>]",
|
"/roster add <jid> [<nick>]",
|
||||||
"/roster remove <jid>",
|
"/roster remove <contact>",
|
||||||
"/roster remove_all contacts",
|
"/roster remove_all contacts",
|
||||||
"/roster nick <jid> <nick>",
|
"/roster nick <jid> <nick>",
|
||||||
"/roster clearnick <jid>",
|
"/roster clearnick <jid>",
|
||||||
|
@ -2922,14 +2922,17 @@ cmd_roster(ProfWin* window, const char* const command, gchar** args)
|
|||||||
cons_show("You are not currently connected.");
|
cons_show("You are not currently connected.");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
char* jid = args[1];
|
char* usr = args[1];
|
||||||
if (jid == NULL) {
|
if (usr == NULL) {
|
||||||
cons_bad_cmd_usage(command);
|
cons_bad_cmd_usage(command);
|
||||||
} else {
|
return TRUE;
|
||||||
roster_send_remove(jid);
|
|
||||||
}
|
}
|
||||||
|
char* barejid = roster_barejid_from_name(usr);
|
||||||
|
if (barejid == NULL) {
|
||||||
|
barejid = usr;
|
||||||
|
}
|
||||||
|
roster_send_remove(barejid);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
} else if (strcmp(args[0], "remove_all") == 0) {
|
} else if (strcmp(args[0], "remove_all") == 0) {
|
||||||
if (g_strcmp0(args[1], "contacts") != 0) {
|
if (g_strcmp0(args[1], "contacts") != 0) {
|
||||||
cons_bad_cmd_usage(command);
|
cons_bad_cmd_usage(command);
|
||||||
|
@ -83,6 +83,7 @@ int main(int argc, char* argv[]) {
|
|||||||
PROF_FUNC_TEST(sends_new_item),
|
PROF_FUNC_TEST(sends_new_item),
|
||||||
PROF_FUNC_TEST(sends_new_item_nick),
|
PROF_FUNC_TEST(sends_new_item_nick),
|
||||||
PROF_FUNC_TEST(sends_remove_item),
|
PROF_FUNC_TEST(sends_remove_item),
|
||||||
|
PROF_FUNC_TEST(sends_remove_item_nick),
|
||||||
PROF_FUNC_TEST(sends_nick_change),
|
PROF_FUNC_TEST(sends_nick_change),
|
||||||
|
|
||||||
PROF_FUNC_TEST(send_software_version_request),
|
PROF_FUNC_TEST(send_software_version_request),
|
||||||
|
@ -92,6 +92,35 @@ sends_remove_item(void **state)
|
|||||||
assert_true(prof_output_exact("Roster item removed: buddy1@localhost"));
|
assert_true(prof_output_exact("Roster item removed: buddy1@localhost"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
sends_remove_item_nick(void **state)
|
||||||
|
{
|
||||||
|
prof_connect_with_roster(
|
||||||
|
"<item jid='buddy1@localhost' name='Bobby' subscription='both'/>"
|
||||||
|
"<item jid='buddy2@localhost' subscription='both'/>"
|
||||||
|
);
|
||||||
|
|
||||||
|
stbbr_for_query("jabber:iq:roster",
|
||||||
|
"<iq id='*' type='set'>"
|
||||||
|
"<query xmlns='jabber:iq:roster'>"
|
||||||
|
"<item jid='buddy1@localhost' subscription='remove'/>"
|
||||||
|
"</query>"
|
||||||
|
"</iq>"
|
||||||
|
);
|
||||||
|
|
||||||
|
prof_input("/roster remove Bobby");
|
||||||
|
|
||||||
|
assert_true(stbbr_received(
|
||||||
|
"<iq type='set' id='*'>"
|
||||||
|
"<query xmlns='jabber:iq:roster'>"
|
||||||
|
"<item jid='buddy1@localhost' subscription='remove'/>"
|
||||||
|
"</query>"
|
||||||
|
"</iq>"
|
||||||
|
));
|
||||||
|
|
||||||
|
assert_true(prof_output_exact("Roster item removed: buddy1@localhost"));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
sends_nick_change(void **state)
|
sends_nick_change(void **state)
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
void sends_new_item(void **state);
|
void sends_new_item(void **state);
|
||||||
void sends_new_item_nick(void **state);
|
void sends_new_item_nick(void **state);
|
||||||
void sends_remove_item(void **state);
|
void sends_remove_item(void **state);
|
||||||
|
void sends_remove_item_nick(void **state);
|
||||||
void sends_nick_change(void **state);
|
void sends_nick_change(void **state);
|
||||||
|
@ -114,12 +114,34 @@ cmd_roster_remove_sends_roster_remove_request(void** state)
|
|||||||
char* jid = "bob@server.org";
|
char* jid = "bob@server.org";
|
||||||
gchar* args[] = { "remove", jid, NULL };
|
gchar* args[] = { "remove", jid, NULL };
|
||||||
|
|
||||||
|
roster_create();
|
||||||
|
roster_add("bob@server.org", "bob", NULL, "both", FALSE);
|
||||||
|
|
||||||
will_return(connection_get_status, JABBER_CONNECTED);
|
will_return(connection_get_status, JABBER_CONNECTED);
|
||||||
|
|
||||||
expect_string(roster_send_remove, barejid, jid);
|
expect_string(roster_send_remove, barejid, jid);
|
||||||
|
|
||||||
gboolean result = cmd_roster(NULL, CMD_ROSTER, args);
|
gboolean result = cmd_roster(NULL, CMD_ROSTER, args);
|
||||||
assert_true(result);
|
assert_true(result);
|
||||||
|
roster_destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
cmd_roster_remove_nickname_sends_roster_remove_request(void** state)
|
||||||
|
{
|
||||||
|
char* jid = "bob@server.org";
|
||||||
|
gchar* args[] = { "remove", "bob", NULL };
|
||||||
|
|
||||||
|
roster_create();
|
||||||
|
roster_add("bob@server.org", "bob", NULL, "both", FALSE);
|
||||||
|
|
||||||
|
will_return(connection_get_status, JABBER_CONNECTED);
|
||||||
|
|
||||||
|
expect_string(roster_send_remove, barejid, jid);
|
||||||
|
|
||||||
|
gboolean result = cmd_roster(NULL, CMD_ROSTER, args);
|
||||||
|
assert_true(result);
|
||||||
|
roster_destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -7,6 +7,7 @@ void cmd_roster_add_shows_message_when_no_jid(void** state);
|
|||||||
void cmd_roster_add_sends_roster_add_request(void** state);
|
void cmd_roster_add_sends_roster_add_request(void** state);
|
||||||
void cmd_roster_remove_shows_message_when_no_jid(void** state);
|
void cmd_roster_remove_shows_message_when_no_jid(void** state);
|
||||||
void cmd_roster_remove_sends_roster_remove_request(void** state);
|
void cmd_roster_remove_sends_roster_remove_request(void** state);
|
||||||
|
void cmd_roster_remove_nickname_sends_roster_remove_request(void** state);
|
||||||
void cmd_roster_nick_shows_message_when_no_jid(void** state);
|
void cmd_roster_nick_shows_message_when_no_jid(void** state);
|
||||||
void cmd_roster_nick_shows_message_when_no_nick(void** state);
|
void cmd_roster_nick_shows_message_when_no_nick(void** state);
|
||||||
void cmd_roster_nick_shows_message_when_no_contact_exists(void** state);
|
void cmd_roster_nick_shows_message_when_no_contact_exists(void** state);
|
||||||
|
@ -584,6 +584,7 @@ main(int argc, char* argv[])
|
|||||||
unit_test(cmd_roster_add_sends_roster_add_request),
|
unit_test(cmd_roster_add_sends_roster_add_request),
|
||||||
unit_test(cmd_roster_remove_shows_message_when_no_jid),
|
unit_test(cmd_roster_remove_shows_message_when_no_jid),
|
||||||
unit_test(cmd_roster_remove_sends_roster_remove_request),
|
unit_test(cmd_roster_remove_sends_roster_remove_request),
|
||||||
|
unit_test(cmd_roster_remove_nickname_sends_roster_remove_request),
|
||||||
unit_test(cmd_roster_nick_shows_message_when_no_jid),
|
unit_test(cmd_roster_nick_shows_message_when_no_jid),
|
||||||
unit_test(cmd_roster_nick_shows_message_when_no_nick),
|
unit_test(cmd_roster_nick_shows_message_when_no_nick),
|
||||||
unit_test(cmd_roster_nick_shows_message_when_no_contact_exists),
|
unit_test(cmd_roster_nick_shows_message_when_no_contact_exists),
|
||||||
|
Loading…
Reference in New Issue
Block a user