diff options
author | James Booth <boothj5@gmail.com> | 2012-11-06 23:03:05 +0000 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2012-11-06 23:03:05 +0000 |
commit | 8beca3cbf7e2baa3c4ef00255ffe0a937571ef26 (patch) | |
tree | abffe22636e50d8002e10987364d93990db5906e | |
parent | 92ae93de33087c57a23a63af45402a509f4443cd (diff) | |
download | profani-tty-8beca3cbf7e2baa3c4ef00255ffe0a937571ef26.tar.gz |
Refactored sending chat states
-rw-r--r-- | src/jabber.c | 95 |
1 files changed, 28 insertions, 67 deletions
diff --git a/src/jabber.c b/src/jabber.c index 3f216441..2c5f4f44 100644 --- a/src/jabber.c +++ b/src/jabber.c @@ -53,6 +53,7 @@ static void _xmpp_file_logger(void * const userdata, static xmpp_log_t * _xmpp_get_file_logger(); static void _jabber_roster_request(void); +void _jabber_send_state(const char * const recipient, const char * const state); // XMPP event handlers static void _connection_handler(xmpp_conn_t * const conn, @@ -208,87 +209,27 @@ jabber_send_groupchat(const char * const msg, const char * const recipient) } void -jabber_send_inactive(const char * const recipient) +jabber_send_composing(const char * const recipient) { - xmpp_stanza_t *message, *inactive; - - message = xmpp_stanza_new(jabber_conn.ctx); - xmpp_stanza_set_name(message, "message"); - xmpp_stanza_set_type(message, "chat"); - xmpp_stanza_set_attribute(message, "to", recipient); - - inactive = xmpp_stanza_new(jabber_conn.ctx); - xmpp_stanza_set_name(inactive, "inactive"); - xmpp_stanza_set_ns(inactive, "http://jabber.org/protocol/chatstates"); - xmpp_stanza_add_child(message, inactive); - - xmpp_send(jabber_conn.conn, message); - xmpp_stanza_release(message); - - chat_session_set_sent(recipient); + _jabber_send_state(recipient, "composing"); } void -jabber_send_composing(const char * const recipient) +jabber_send_paused(const char * const recipient) { - xmpp_stanza_t *message, *composing; - - message = xmpp_stanza_new(jabber_conn.ctx); - xmpp_stanza_set_name(message, "message"); - xmpp_stanza_set_type(message, "chat"); - xmpp_stanza_set_attribute(message, "to", recipient); - - composing = xmpp_stanza_new(jabber_conn.ctx); - xmpp_stanza_set_name(composing, "composing"); - xmpp_stanza_set_ns(composing, "http://jabber.org/protocol/chatstates"); - xmpp_stanza_add_child(message, composing); - - xmpp_send(jabber_conn.conn, message); - xmpp_stanza_release(message); - - chat_session_set_sent(recipient); + _jabber_send_state(recipient, "paused"); } void -jabber_send_paused(const char * const recipient) +jabber_send_inactive(const char * const recipient) { - xmpp_stanza_t *message, *paused; - - message = xmpp_stanza_new(jabber_conn.ctx); - xmpp_stanza_set_name(message, "message"); - xmpp_stanza_set_type(message, "chat"); - xmpp_stanza_set_attribute(message, "to", recipient); - - paused = xmpp_stanza_new(jabber_conn.ctx); - xmpp_stanza_set_name(paused, "paused"); - xmpp_stanza_set_ns(paused, "http://jabber.org/protocol/chatstates"); - xmpp_stanza_add_child(message, paused); - - xmpp_send(jabber_conn.conn, message); - xmpp_stanza_release(message); - - chat_session_set_sent(recipient); + _jabber_send_state(recipient, "inactive"); } void jabber_send_gone(const char * const recipient) { - xmpp_stanza_t *message, *gone; - - message = xmpp_stanza_new(jabber_conn.ctx); - xmpp_stanza_set_name(message, "message"); - xmpp_stanza_set_type(message, "chat"); - xmpp_stanza_set_attribute(message, "to", recipient); - - gone = xmpp_stanza_new(jabber_conn.ctx); - xmpp_stanza_set_name(gone, "gone"); - xmpp_stanza_set_ns(gone, "http://jabber.org/protocol/chatstates"); - xmpp_stanza_add_child(message, gone); - - xmpp_send(jabber_conn.conn, message); - xmpp_stanza_release(message); - - chat_session_set_sent(recipient); + _jabber_send_state(recipient, "gone"); } void @@ -768,3 +709,23 @@ _xmpp_get_file_logger() return file_log; } +void +_jabber_send_state(const char * const recipient, const char * const state) +{ + xmpp_stanza_t *message, *chat_state; + + message = xmpp_stanza_new(jabber_conn.ctx); + xmpp_stanza_set_name(message, "message"); + xmpp_stanza_set_type(message, "chat"); + xmpp_stanza_set_attribute(message, "to", recipient); + + chat_state = xmpp_stanza_new(jabber_conn.ctx); + xmpp_stanza_set_name(chat_state, state); + xmpp_stanza_set_ns(chat_state, "http://jabber.org/protocol/chatstates"); + xmpp_stanza_add_child(message, chat_state); + + xmpp_send(jabber_conn.conn, message); + xmpp_stanza_release(message); + + chat_session_set_sent(recipient); +} |