mirror of
https://github.com/profanity-im/profanity.git
synced 2024-11-03 19:37:16 -05:00
Added output for /disco items
This commit is contained in:
parent
681c3b6be2
commit
7bd7c15994
@ -408,6 +408,13 @@ prof_handle_room_list(GSList *rooms, const char *conference_node)
|
||||
win_current_page_off();
|
||||
}
|
||||
|
||||
void
|
||||
prof_handle_disco_items(GSList *items, const char *jid)
|
||||
{
|
||||
cons_show_disco_items(items, jid);
|
||||
win_current_page_off();
|
||||
}
|
||||
|
||||
/*
|
||||
* Take a line of input and process it, return TRUE if profanity is to
|
||||
* continue, FALSE otherwise
|
||||
|
@ -72,5 +72,6 @@ void prof_handle_version_result(const char * const jid,
|
||||
const char * const presence, const char * const name,
|
||||
const char * const version, const char * const os);
|
||||
void prof_handle_room_list(GSList *rooms, const char *conference_node);
|
||||
void prof_handle_disco_items(GSList *items, const char *jid);
|
||||
|
||||
#endif
|
||||
|
@ -174,6 +174,7 @@ void cons_show_software_version(const char * const jid,
|
||||
const char * const version, const char * const os);
|
||||
void cons_show_account_list(gchar **accounts);
|
||||
void cons_show_room_list(GSList *room, const char * const conference_node);
|
||||
void cons_show_disco_items(GSList *items, const char * const jid);
|
||||
|
||||
// status bar actions
|
||||
void status_bar_refresh(void);
|
||||
|
@ -1323,6 +1323,26 @@ cons_show_room_list(GSList *rooms, const char * const conference_node)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
cons_show_disco_items(GSList *items, const char * const jid)
|
||||
{
|
||||
if ((items != NULL) && (g_slist_length(items) > 0)) {
|
||||
cons_show("Service discovery items for %s:", jid);
|
||||
while (items != NULL) {
|
||||
DiscoItem *item = items->data;
|
||||
_win_show_time(console->win, '-');
|
||||
wprintw(console->win, " %s", item->jid);
|
||||
if (item->name != NULL) {
|
||||
wprintw(console->win, ", (%s)", item->name);
|
||||
}
|
||||
wprintw(console->win, "\n");
|
||||
items = g_slist_next(items);
|
||||
}
|
||||
} else {
|
||||
cons_show("No service discovery items for %s", jid);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
cons_show_status(const char * const contact)
|
||||
{
|
||||
|
@ -495,10 +495,10 @@ _iq_handle_discoitems_result(xmpp_conn_t * const conn, xmpp_stanza_t * const sta
|
||||
const char *stanza_name = NULL;
|
||||
const char *item_jid = NULL;
|
||||
const char *item_name = NULL;
|
||||
GSList *items = NULL;
|
||||
|
||||
if (g_strcmp0(id, "confreq") == 0) {
|
||||
if ((g_strcmp0(id, "confreq") == 0) || (g_strcmp0(id, "discoitemsreq") == 0)) {
|
||||
log_debug("Response to query: %s", id);
|
||||
GSList *items = NULL;
|
||||
xmpp_stanza_t *query = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_QUERY);
|
||||
|
||||
if (query != NULL) {
|
||||
@ -523,12 +523,15 @@ _iq_handle_discoitems_result(xmpp_conn_t * const conn, xmpp_stanza_t * const sta
|
||||
child = xmpp_stanza_get_next(child);
|
||||
}
|
||||
}
|
||||
|
||||
prof_handle_room_list(items, from);
|
||||
g_slist_free_full(items, free);
|
||||
} else if ((id != NULL) && (g_strcmp0(id, "discoitemsreq") == 0)) {
|
||||
cons_show("GOT DISO ITEMS RESULT");
|
||||
}
|
||||
|
||||
if (g_strcmp0(id, "confreq") == 0) {
|
||||
prof_handle_room_list(items, from);
|
||||
} else if (g_strcmp0(id, "discoitemsreq") == 0) {
|
||||
prof_handle_disco_items(items, from);
|
||||
}
|
||||
|
||||
g_slist_free_full(items, free);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user