mirror of
https://github.com/profanity-im/profanity.git
synced 2024-09-29 19:56:07 -04:00
Added /roster remove command
This commit is contained in:
parent
518b6721ff
commit
01bdc6ae5a
@ -918,7 +918,9 @@ cmd_init(void)
|
|||||||
autocomplete_add(wins_ac, strdup("tidy"));
|
autocomplete_add(wins_ac, strdup("tidy"));
|
||||||
|
|
||||||
roster_ac = autocomplete_new();
|
roster_ac = autocomplete_new();
|
||||||
|
autocomplete_add(roster_ac, strdup("add"));
|
||||||
autocomplete_add(roster_ac, strdup("nick"));
|
autocomplete_add(roster_ac, strdup("nick"));
|
||||||
|
autocomplete_add(roster_ac, strdup("remove"));
|
||||||
|
|
||||||
theme_load_ac = NULL;
|
theme_load_ac = NULL;
|
||||||
|
|
||||||
@ -2038,6 +2040,21 @@ _cmd_roster(gchar **args, struct cmd_help_t help)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// remove contact
|
||||||
|
if (strcmp(args[0], "remove") == 0) {
|
||||||
|
|
||||||
|
if (args[1] == NULL) {
|
||||||
|
cons_show("Usage: %s", help.usage);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *jid = args[1];
|
||||||
|
|
||||||
|
roster_remove(jid);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
// change nickname
|
// change nickname
|
||||||
if (strcmp(args[0], "nick") == 0) {
|
if (strcmp(args[0], "nick") == 0) {
|
||||||
|
|
||||||
|
@ -145,6 +145,16 @@ roster_add_new(const char * const barejid, const char * const name)
|
|||||||
xmpp_stanza_release(iq);
|
xmpp_stanza_release(iq);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
roster_remove(const char * const barejid)
|
||||||
|
{
|
||||||
|
xmpp_conn_t * const conn = connection_get_conn();
|
||||||
|
xmpp_ctx_t * const ctx = connection_get_ctx();
|
||||||
|
xmpp_stanza_t *iq = stanza_create_roster_remove_set(ctx, barejid);
|
||||||
|
xmpp_send(conn, iq);
|
||||||
|
xmpp_stanza_release(iq);
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
roster_add(const char * const barejid, const char * const name, GSList *groups,
|
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)
|
||||||
@ -366,6 +376,9 @@ _roster_handle_push(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
|
|||||||
// remove from roster
|
// remove from roster
|
||||||
if (g_strcmp0(sub, "remove") == 0) {
|
if (g_strcmp0(sub, "remove") == 0) {
|
||||||
// remove barejid and name
|
// remove barejid and name
|
||||||
|
if (name == NULL) {
|
||||||
|
name = barejid;
|
||||||
|
}
|
||||||
autocomplete_remove(barejid_ac, barejid);
|
autocomplete_remove(barejid_ac, barejid);
|
||||||
autocomplete_remove(name_ac, name);
|
autocomplete_remove(name_ac, name);
|
||||||
g_hash_table_remove(name_to_barejid, name);
|
g_hash_table_remove(name_to_barejid, name);
|
||||||
|
@ -89,6 +89,29 @@ stanza_create_message(xmpp_ctx_t *ctx, const char * const recipient,
|
|||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xmpp_stanza_t *
|
||||||
|
stanza_create_roster_remove_set(xmpp_ctx_t *ctx, const char * const barejid)
|
||||||
|
{
|
||||||
|
xmpp_stanza_t *iq = xmpp_stanza_new(ctx);
|
||||||
|
xmpp_stanza_set_name(iq, STANZA_NAME_IQ);
|
||||||
|
xmpp_stanza_set_type(iq, STANZA_TYPE_SET);
|
||||||
|
|
||||||
|
xmpp_stanza_t *query = xmpp_stanza_new(ctx);
|
||||||
|
xmpp_stanza_set_name(query, STANZA_NAME_QUERY);
|
||||||
|
xmpp_stanza_set_ns(query, XMPP_NS_ROSTER);
|
||||||
|
|
||||||
|
xmpp_stanza_t *item = xmpp_stanza_new(ctx);
|
||||||
|
xmpp_stanza_set_name(item, STANZA_NAME_ITEM);
|
||||||
|
xmpp_stanza_set_attribute(item, STANZA_ATTR_JID, barejid);
|
||||||
|
xmpp_stanza_set_attribute(item, STANZA_ATTR_SUBSCRIPTION, "remove");
|
||||||
|
|
||||||
|
xmpp_stanza_add_child(query, item);
|
||||||
|
xmpp_stanza_add_child(iq, query);
|
||||||
|
|
||||||
|
return iq;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
xmpp_stanza_t *
|
xmpp_stanza_t *
|
||||||
stanza_create_roster_set(xmpp_ctx_t *ctx, const char * const jid,
|
stanza_create_roster_set(xmpp_ctx_t *ctx, const char * const jid,
|
||||||
const char * const handle, GSList *groups)
|
const char * const handle, GSList *groups)
|
||||||
|
@ -180,5 +180,7 @@ char * stanza_get_show(xmpp_stanza_t *stanza, char *def);
|
|||||||
|
|
||||||
xmpp_stanza_t * stanza_create_roster_set(xmpp_ctx_t *ctx, const char * const jid,
|
xmpp_stanza_t * stanza_create_roster_set(xmpp_ctx_t *ctx, const char * const jid,
|
||||||
const char * const handle, GSList *groups);
|
const char * const handle, GSList *groups);
|
||||||
|
xmpp_stanza_t * stanza_create_roster_remove_set(xmpp_ctx_t *ctx,
|
||||||
|
const char * const barejid);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -144,5 +144,6 @@ gboolean roster_add(const char * const barejid, const char * const name,
|
|||||||
void roster_change_name(const char * const barejid, const char * const new_name);
|
void roster_change_name(const char * const barejid, const char * const new_name);
|
||||||
char * roster_barejid_from_name(const char * const name);
|
char * roster_barejid_from_name(const char * const name);
|
||||||
void roster_add_new(const char * const barejid, const char * const name);
|
void roster_add_new(const char * const barejid, const char * const name);
|
||||||
|
void roster_remove(const char * const barejid);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user