[ADD] Have avatars on first-message too

This commit is contained in:
LDA 2024-10-08 17:27:25 +02:00
commit a48c3ba126
3 changed files with 21 additions and 6 deletions

View file

@ -195,7 +195,6 @@ ASGetAvatar(const ParseeConfig *c, char *room, char *user)
ret = StrDuplicate( ret = StrDuplicate(
JsonValueAsString(HashMapGet(reply, "avatar_url")) JsonValueAsString(HashMapGet(reply, "avatar_url"))
); );
StreamFlush(StreamStderr());
HttpClientContextFree(ctx); HttpClientContextFree(ctx);
JsonFree(reply); JsonFree(reply);
Free(path); Free(path);

View file

@ -103,7 +103,7 @@ ParseeMemberHandler(ParseeData *data, HashMap *event)
{ {
char *jid = ParseeEncodeMXID(state_key); char *jid = ParseeEncodeMXID(state_key);
char *sha = NULL, *mime = NULL; char *sha = NULL, *mime = NULL;
char *avatar = ASGetAvatar(data->config, room_id, state_key); char *avatar = ASGetAvatar(data->config, NULL, state_key);
char *url = ParseeToUnauth(data, avatar); char *url = ParseeToUnauth(data, avatar);
chat_id = ParseeGetFromRoomID(data, room_id); chat_id = ParseeGetFromRoomID(data, room_id);
@ -115,7 +115,7 @@ ParseeMemberHandler(ParseeData *data, HashMap *event)
char *muc = ParseeGetMUCID(data, chat_id); char *muc = ParseeGetMUCID(data, chat_id);
char *name = ASGetName(data->config, room_id, state_key); char *name = ASGetName(data->config, room_id, state_key);
char *jabber = JoinMUC(data, event, jid, muc, name, sha); char *jabber = JoinMUC(data, event, jid, muc, name, sha);
avatar = ASGetAvatar(data->config, room_id, state_key); avatar = ASGetAvatar(data->config, NULL, state_key);
Log(LOG_DEBUG, "MATRIX: Joining as '%s' (avatar=%s)", jabber, avatar); Log(LOG_DEBUG, "MATRIX: Joining as '%s' (avatar=%s)", jabber, avatar);
Free(jabber); Free(jabber);
@ -333,7 +333,8 @@ GetXMPPInformation(ParseeData *data, HashMap *event, char **from, char **to)
} }
else else
{ {
char *matrix_name; char *matrix_name, *matrix_avatar;
char *mime, *sha;
muc_id = ParseeGetMUCID(data, chat_id); muc_id = ParseeGetMUCID(data, chat_id);
if (!chat_id) if (!chat_id)
@ -347,10 +348,16 @@ GetXMPPInformation(ParseeData *data, HashMap *event, char **from, char **to)
} }
matrix_name = ASGetName(data->config, room_id, matrix_sender); matrix_name = ASGetName(data->config, room_id, matrix_sender);
Free(JoinMUC(data, event, *from, muc_id, matrix_name, NULL)); matrix_avatar = ASGetAvatar(data->config, NULL, matrix_sender);
ASGetMIMESHA(data->config, matrix_avatar, &mime, &sha);
Free(JoinMUC(data, event, *from, muc_id, matrix_name, sha));
*to = muc_id; *to = muc_id;
Free(matrix_avatar);
Free(matrix_name); Free(matrix_name);
Free(mime);
Free(sha);
} }
Free(chat_id); Free(chat_id);
@ -437,8 +444,9 @@ ParseeMessageHandler(ParseeData *data, HashMap *event)
/* TODO: Avoid using the AS endpoints */ /* TODO: Avoid using the AS endpoints */
name = ASGetName(data->config, id, m_sender); name = ASGetName(data->config, id, m_sender);
avatar = ASGetAvatar(data->config, id, sender); avatar = ASGetAvatar(data->config, NULL, m_sender);
ASGetMIMESHA(data->config, avatar, &mime, &sha); ASGetMIMESHA(data->config, avatar, &mime, &sha);
Free(JoinMUC(data, event, encoded_from, muc_id, name, sha)); Free(JoinMUC(data, event, encoded_from, muc_id, name, sha));
to = muc_id; to = muc_id;

View file

@ -116,6 +116,11 @@ XMLEncodeString(Stream *stream, char *data)
{ {
size_t i; size_t i;
if (!stream || !data)
{
return;
}
for (i = 0; i < strlen(data); i++) for (i = 0; i < strlen(data); i++)
{ {
char c = data[i]; char c = data[i];
@ -145,6 +150,9 @@ XMLEncodeString(Stream *stream, char *data)
continue; continue;
} }
StreamPrintf(stream, "%c", c); StreamPrintf(stream, "%c", c);
/* TODO: Maybe consider Unistrings and encode arbitrary Unicode
* codepoints * with special XML. Oughta make it printable, you know?
*/
} }
} }
void void