mirror of
https://forge.fsky.io/lda/Parsee.git
synced 2026-03-13 18:25:10 +00:00
[ADD/WIP] Temporary vCard avatard
Gajim still reacts weirdly.... also it leaks memory related to avatars, so that sucks...
This commit is contained in:
parent
9ea8f35c49
commit
d585134ce1
8 changed files with 43 additions and 27 deletions
|
|
@ -18,7 +18,7 @@ static const char *
|
|||
GetXMPPInformation(ParseeData *data, HashMap *event, char **from, char **to);
|
||||
|
||||
static char *
|
||||
JoinMUC(ParseeData *data, HashMap *event, char *jid, char *muc, char *name)
|
||||
JoinMUC(ParseeData *data, HashMap *event, char *jid, char *muc, char *name, char *hash)
|
||||
{
|
||||
char *sender = GrabString(event, 1, "sender");
|
||||
|
||||
|
|
@ -33,7 +33,8 @@ JoinMUC(ParseeData *data, HashMap *event, char *jid, char *muc, char *name)
|
|||
UnistrFree(uninick);
|
||||
UnistrFree(filtered);
|
||||
|
||||
while (!XMPPJoinMUC(data->jabber, jid, rev, true) && nonce < 32)
|
||||
/* TODO: vCards! */
|
||||
while (!XMPPJoinMUC(data->jabber, jid, rev, hash, true) && nonce < 32)
|
||||
{
|
||||
char *nonce_str = StrInt(nonce);
|
||||
char *input = StrConcat(3, sender, name, nonce_str);
|
||||
|
|
@ -101,18 +102,24 @@ ParseeMemberHandler(ParseeData *data, HashMap *event)
|
|||
else if (StrEquals(membership, "join") && !ParseeIsPuppet(conf, state_key))
|
||||
{
|
||||
char *jid = ParseeEncodeMXID(state_key);
|
||||
char *sha = NULL, *mime = NULL;
|
||||
char *avatar = ASGetAvatar(data->config, room_id, state_key);
|
||||
char *url = ParseeToUnauth(data, avatar);
|
||||
chat_id = ParseeGetFromRoomID(data, room_id);
|
||||
|
||||
ASGetMIMESHA(data->config, avatar, &mime, &sha);
|
||||
Free(avatar);
|
||||
avatar = NULL;
|
||||
if (chat_id)
|
||||
{
|
||||
char *muc = ParseeGetMUCID(data, chat_id);
|
||||
char *name = ASGetName(data->config, room_id, state_key);
|
||||
char *avatar = ASGetAvatar(data->config, room_id, state_key);
|
||||
char *jabber = JoinMUC(data, event, jid, muc, name);
|
||||
|
||||
char *jabber = JoinMUC(data, event, jid, muc, name, sha);
|
||||
avatar = ASGetAvatar(data->config, room_id, state_key);
|
||||
Log(LOG_DEBUG, "MATRIX: Joining as '%s' (avatar=%s)", jabber, avatar);
|
||||
|
||||
Free(avatar);
|
||||
Free(jabber);
|
||||
Free(avatar);
|
||||
Free(name);
|
||||
Free(muc);
|
||||
|
||||
|
|
@ -120,18 +127,14 @@ ParseeMemberHandler(ParseeData *data, HashMap *event)
|
|||
}
|
||||
else
|
||||
{
|
||||
char *avatar = ASGetAvatar(data->config, room_id, state_key);
|
||||
char *sha = NULL, *mime = NULL, *url = NULL;
|
||||
char *full_jid = StrConcat(3,
|
||||
jid, "@", data->config->component_host
|
||||
);
|
||||
XMLElement *elem, *pevent, *items, *item, *meta, *info;
|
||||
|
||||
Log(LOG_DEBUG, "MATRIX: Got local user '%s'(mxid=%s avatar=%s)", jid, state_key, avatar);
|
||||
Log(LOG_DEBUG, "MATRIX: Got local user '%s'(mxid=%s)", jid, state_key);
|
||||
|
||||
url = ParseeToUnauth(data, avatar);
|
||||
elem = XMLCreateTag("message");
|
||||
ASGetMIMESHA(data->config, avatar, &mime, &sha);
|
||||
{
|
||||
#define PUBSUB "http://jabber.org/protocol/pubsub"
|
||||
#define AVATAR "urn:xmpp:avatar:metadata"
|
||||
|
|
@ -180,13 +183,12 @@ ParseeMemberHandler(ParseeData *data, HashMap *event)
|
|||
XMLFreeElement(elem);
|
||||
|
||||
Free(full_jid);
|
||||
Free(avatar);
|
||||
Free(mime);
|
||||
Free(sha);
|
||||
Free(url);
|
||||
}
|
||||
Free(jid);
|
||||
Free(chat_id);
|
||||
Free(mime);
|
||||
Free(sha);
|
||||
Free(jid);
|
||||
Free(url);
|
||||
}
|
||||
else if ((StrEquals(membership, "leave") ||
|
||||
StrEquals(membership, "ban"))
|
||||
|
|
@ -343,7 +345,7 @@ GetXMPPInformation(ParseeData *data, HashMap *event, char **from, char **to)
|
|||
}
|
||||
|
||||
matrix_name = ASGetName(data->config, room_id, matrix_sender);
|
||||
Free(JoinMUC(data, event, *from, muc_id, matrix_name));
|
||||
Free(JoinMUC(data, event, *from, muc_id, matrix_name, NULL));
|
||||
*to = muc_id;
|
||||
|
||||
Free(matrix_name);
|
||||
|
|
@ -432,7 +434,7 @@ ParseeMessageHandler(ParseeData *data, HashMap *event)
|
|||
|
||||
/* TODO: Avoid using the AS endpoints */
|
||||
name = ASGetName(data->config, id, m_sender);
|
||||
Free(JoinMUC(data, event, encoded_from, muc_id, name));
|
||||
Free(JoinMUC(data, event, encoded_from, muc_id, name, NULL));
|
||||
|
||||
to = muc_id;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue