Handle room broadcasts

This commit is contained in:
James Booth
2012-11-19 22:15:53 +00:00
parent db15494e22
commit b3e1d473a2
7 changed files with 67 additions and 9 deletions

View File

@@ -426,18 +426,34 @@ _groupchat_message_handler(xmpp_stanza_t * const stanza)
char *room = NULL;
char *nick = NULL;
char *message = NULL;
xmpp_stanza_t *subject = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_SUBJECT);
gchar *room_jid = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
// handle subject
if (subject != NULL) {
message = xmpp_stanza_get_text(subject);
if (message != NULL) {
room = room_get_room_from_full_jid(room_jid);
prof_handle_room_subject(room, message);
}
// handle room broadcasts
if (room_from_jid_is_room(room_jid)) {
xmpp_stanza_t *subject = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_SUBJECT);
return 1;
// handle subject
if (subject != NULL) {
message = xmpp_stanza_get_text(subject);
if (message != NULL) {
room = room_get_room_from_full_jid(room_jid);
prof_handle_room_subject(room, message);
}
return 1;
// handle other room broadcasts
} else {
xmpp_stanza_t *body = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_BODY);
if (body != NULL) {
message = xmpp_stanza_get_text(body);
if (message != NULL) {
prof_handle_room_broadcast(room_jid, message);
}
}
return 1;
}
}
// room jid not of form room/nick