Use resource in chat sessions

This commit is contained in:
James Booth
2015-01-04 20:19:42 +00:00
parent 4898ed10a4
commit 42a5c431c7
11 changed files with 209 additions and 87 deletions

View File

@@ -149,23 +149,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 fulljid)
{
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, fulljid, 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 fulljid)
{
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, fulljid,
STANZA_NAME_PAUSED);
xmpp_send(conn, stanza);
@@ -173,11 +172,11 @@ message_send_paused(const char * const barejid)
}
void
message_send_inactive(const char * const barejid)
message_send_inactive(const char * const fulljid)
{
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, fulljid,
STANZA_NAME_INACTIVE);
xmpp_send(conn, stanza);
@@ -185,11 +184,11 @@ message_send_inactive(const char * const barejid)
}
void
message_send_gone(const char * const barejid)
message_send_gone(const char * const fulljid)
{
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, fulljid,
STANZA_NAME_GONE);
xmpp_send(conn, stanza);
@@ -469,7 +468,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;

View File

@@ -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);

View File

@@ -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,

View File

@@ -151,10 +151,10 @@ 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 fulljid);
void message_send_composing(const char * const fulljid);
void message_send_paused(const char * const fulljid);
void message_send_gone(const char * const fulljid);
void message_send_invite(const char * const room, const char * const contact,
const char * const reason);