about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2012-11-06 23:03:05 +0000
committerJames Booth <boothj5@gmail.com>2012-11-06 23:03:05 +0000
commit8beca3cbf7e2baa3c4ef00255ffe0a937571ef26 (patch)
treeabffe22636e50d8002e10987364d93990db5906e /src
parent92ae93de33087c57a23a63af45402a509f4443cd (diff)
downloadprofani-tty-8beca3cbf7e2baa3c4ef00255ffe0a937571ef26.tar.gz
Refactored sending chat states
Diffstat (limited to 'src')
-rw-r--r--src/jabber.c95
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);
+}