diff options
Diffstat (limited to 'src/xmpp')
-rw-r--r-- | src/xmpp/message.c | 27 | ||||
-rw-r--r-- | src/xmpp/stanza.c | 5 | ||||
-rw-r--r-- | src/xmpp/stanza.h | 2 | ||||
-rw-r--r-- | src/xmpp/xmpp.h | 11 |
4 files changed, 23 insertions, 22 deletions
diff --git a/src/xmpp/message.c b/src/xmpp/message.c index d87c5fb2..c3cbc14f 100644 --- a/src/xmpp/message.c +++ b/src/xmpp/message.c @@ -80,19 +80,23 @@ message_add_handlers(void) } void -message_send_chat(const char * const barejid, const char * const resource, const char * const msg, gboolean send_state) +message_send_chat(const char * const barejid, const char * const msg) { xmpp_stanza_t *message; xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); + chat_session_on_message_send(barejid); + char *resource = chat_session_get_resource(barejid); + gboolean send_state = chat_session_send_states(barejid); + GString *jid = g_string_new(barejid); if (resource) { g_string_append(jid, "/"); g_string_append(jid, resource); } - if (send_state) { + if (prefs_get_boolean(PREF_STATES) && send_state) { message = stanza_create_message(ctx, jid->str, STANZA_TYPE_CHAT, msg, STANZA_NAME_ACTIVE); } else { message = stanza_create_message(ctx, jid->str, STANZA_TYPE_CHAT, msg, NULL); @@ -149,23 +153,22 @@ message_send_invite(const char * const roomjid, const char * const contact, } void -message_send_composing(const char * const barejid) +message_send_composing(const char * const jid) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); - xmpp_stanza_t *stanza = stanza_create_chat_state(ctx, barejid, - STANZA_NAME_COMPOSING); + xmpp_stanza_t *stanza = stanza_create_chat_state(ctx, jid, STANZA_NAME_COMPOSING); xmpp_send(conn, stanza); xmpp_stanza_release(stanza); } void -message_send_paused(const char * const barejid) +message_send_paused(const char * const jid) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); - xmpp_stanza_t *stanza = stanza_create_chat_state(ctx, barejid, + xmpp_stanza_t *stanza = stanza_create_chat_state(ctx, jid, STANZA_NAME_PAUSED); xmpp_send(conn, stanza); @@ -173,11 +176,11 @@ message_send_paused(const char * const barejid) } void -message_send_inactive(const char * const barejid) +message_send_inactive(const char * const jid) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); - xmpp_stanza_t *stanza = stanza_create_chat_state(ctx, barejid, + xmpp_stanza_t *stanza = stanza_create_chat_state(ctx, jid, STANZA_NAME_INACTIVE); xmpp_send(conn, stanza); @@ -185,11 +188,11 @@ message_send_inactive(const char * const barejid) } void -message_send_gone(const char * const barejid) +message_send_gone(const char * const jid) { xmpp_conn_t * const conn = connection_get_conn(); xmpp_ctx_t * const ctx = connection_get_ctx(); - xmpp_stanza_t *stanza = stanza_create_chat_state(ctx, barejid, + xmpp_stanza_t *stanza = stanza_create_chat_state(ctx, jid, STANZA_NAME_GONE); xmpp_send(conn, stanza); @@ -469,7 +472,7 @@ _chat_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, } // create or update chat session - chat_session_on_incoming_message(jid->barejid, recipient_supports); + chat_session_on_incoming_message(jid->barejid, jid->resourcepart, recipient_supports); // determine if the notifications happened whilst offline GTimeVal tv_stamp; diff --git a/src/xmpp/stanza.c b/src/xmpp/stanza.c index 1766fe26..4f1d412d 100644 --- a/src/xmpp/stanza.c +++ b/src/xmpp/stanza.c @@ -199,15 +199,14 @@ stanza_create_bookmarks_pubsub_add(xmpp_ctx_t *ctx, const char * const jid, #endif xmpp_stanza_t * -stanza_create_chat_state(xmpp_ctx_t *ctx, const char * const recipient, - const char * const state) +stanza_create_chat_state(xmpp_ctx_t *ctx, const char * const fulljid, const char * const state) { xmpp_stanza_t *msg, *chat_state; msg = xmpp_stanza_new(ctx); xmpp_stanza_set_name(msg, STANZA_NAME_MESSAGE); xmpp_stanza_set_type(msg, STANZA_TYPE_CHAT); - xmpp_stanza_set_attribute(msg, STANZA_ATTR_TO, recipient); + xmpp_stanza_set_attribute(msg, STANZA_ATTR_TO, fulljid); char *id = create_unique_id(NULL); xmpp_stanza_set_id(msg, id); free(id); diff --git a/src/xmpp/stanza.h b/src/xmpp/stanza.h index e60e9fe1..84282401 100644 --- a/src/xmpp/stanza.h +++ b/src/xmpp/stanza.h @@ -179,7 +179,7 @@ typedef enum { xmpp_stanza_t* stanza_create_bookmarks_storage_request(xmpp_ctx_t *ctx); xmpp_stanza_t* stanza_create_chat_state(xmpp_ctx_t *ctx, - const char * const recipient, const char * const state); + const char * const fulljid, const char * const state); xmpp_stanza_t* stanza_create_message(xmpp_ctx_t *ctx, const char * const recipient, const char * const type, diff --git a/src/xmpp/xmpp.h b/src/xmpp/xmpp.h index 2499d008..161eebdf 100644 --- a/src/xmpp/xmpp.h +++ b/src/xmpp/xmpp.h @@ -145,16 +145,15 @@ char* jabber_get_account_name(void); GList * jabber_get_available_resources(void); // message functions -void message_send_chat(const char * const barejid, const char * const resource, const char * const msg, - gboolean send_state); +void message_send_chat(const char * const barejid, const char * const msg); void message_send_private(const char * const fulljid, const char * const msg); void message_send_groupchat(const char * const roomjid, const char * const msg); void message_send_groupchat_subject(const char * const roomjid, const char * const subject); -void message_send_inactive(const char * const barejid); -void message_send_composing(const char * const barejid); -void message_send_paused(const char * const barejid); -void message_send_gone(const char * const barejid); +void message_send_inactive(const char * const jid); +void message_send_composing(const char * const jid); +void message_send_paused(const char * const jid); +void message_send_gone(const char * const jid); void message_send_invite(const char * const room, const char * const contact, const char * const reason); |