diff --git a/src/Parsee/Utils/Formatting.c b/src/Parsee/Utils/Formatting.c index 4e89aec..77a3d9b 100644 --- a/src/Parsee/Utils/Formatting.c +++ b/src/Parsee/Utils/Formatting.c @@ -151,6 +151,8 @@ XMPPifyElement(HashMap *event, XMLElement *elem, XMPPFlags flags) else if (StrEquals(elem->name, "a")) { char *href = HashMapGet(elem->attrs, "href"); + /* TODO: Check if the element here is a Matrix.TO + * pointing to a Parsee user. */ Concat("("); for (i = 0; i < ArraySize(elem->children); i++) { diff --git a/src/XMPPThread/Stanzas/Message.c b/src/XMPPThread/Stanzas/Message.c index d477d8e..cbec486 100644 --- a/src/XMPPThread/Stanzas/Message.c +++ b/src/XMPPThread/Stanzas/Message.c @@ -34,7 +34,9 @@ LazyRegister(ParseeData *data, char *mxid, char *name) ASSetName(data->config, mxid, name); if (ref) { - HashMapSet(DbJson(ref), "name", JsonValueString(name)); + JsonValueFree(HashMapSet( + DbJson(ref), "name", JsonValueString(name) + )); } } DbUnlock(data->db, ref); @@ -109,7 +111,8 @@ ProcessChatstates(ParseeData *args, XMLElement *stanza) mroom_id = NULL; from_matrix = NULL; } - if (XMLookForTKV(stanza, "paused", "xmlns", CHAT_STATES)) + if (XMLookForTKV(stanza, "paused", "xmlns", CHAT_STATES) || + XMLookForTKV(stanza, "inactive", "xmlns", CHAT_STATES)) { char *latest = NULL; from_matrix = ParseeGetBridgedUser(args, stanza); @@ -147,6 +150,7 @@ ProcessChatstates(ParseeData *args, XMLElement *stanza) } #undef CHAT_STATES } + static float TimeElapsed(uint64_t *rectime, uint64_t v) { @@ -294,9 +298,6 @@ end_error: PEPManagerHandle(thr->info->pep_manager, stanza); Log(LOG_DEBUG, "PEP management: %fs", Elapsed(rectime)); - ProcessChatstates(args, stanza); - Log(LOG_DEBUG, "Chatstate management: %fs", Elapsed(rectime)); - to = ParseeDecodeMXID(HashMapGet(stanza->attrs, "to")); decode_from = ParseeLookupJID(from); from_matrix = ParseeEncodeJID(args->config, decode_from, true); @@ -318,7 +319,6 @@ end_error: LazyRegister(args, from_matrix, NULL); room = ASCreateDM(args->config, from_matrix, to); mroom_id = StrDuplicate(room); - Log(LOG_DEBUG, "Creating a DM to '%s'(%s)...", to, mroom_id); if (room) { room_ref = DbCreate(args->db, 3, "rooms", room, "data"); @@ -403,7 +403,6 @@ end_error: { content = MatrixCreateMedia(mxc, data->data, mime); - /* Yeah, no, I'm not modifying the media creation code. */ HashMapSet(content, "at.kappach.at.parsee.external", JsonValueString(oob_data->data) @@ -539,6 +538,9 @@ end_error: } } + ProcessChatstates(args, stanza); + Log(LOG_DEBUG, "Chatstate management: %fs", Elapsed(rectime)); + end: Free(mroom_id); mroom_id = NULL;