[ADD/WIP] Start adding reactions

This commit is contained in:
LDA 2024-06-27 03:41:24 +02:00
commit 1126497d5b
7 changed files with 93 additions and 6 deletions

View file

@ -38,6 +38,7 @@ MessageStanza(ParseeData *args, XMLElement *stanza)
{
XMPPComponent *jabber = args->jabber;
XMLElement *reactions = NULL;
XMLElement *body = NULL;
XMLElement *data = NULL;
@ -71,7 +72,7 @@ MessageStanza(ParseeData *args, XMLElement *stanza)
char *s_id_str = XMPPGetStanzaID(stanza);
char *o_id_str = XMPPGetOriginID(stanza);
char *id_str = HashMapGet(stanza->attrs, "id");
char *event_id;
char *event_id = NULL;
char *replaced = XMPPGetReplacedID(stanza);
/* TODO: Create smarter puppet names */
@ -85,6 +86,9 @@ MessageStanza(ParseeData *args, XMLElement *stanza)
/* Check if it is a media link */
oob = XMLookForTKV(stanza, "x", "xmlns", "jabber:x:oob");
reactions = XMLookForTKV(stanza,
"reactions", "xmlns", "urn:xmpp:reactions:0"
);
if (oob)
{
char *mxc, *mime = NULL;
@ -102,6 +106,28 @@ MessageStanza(ParseeData *args, XMLElement *stanza)
Free(mime);
Free(mxc);
}
else if (reactions)
{
char *reacted_id = HashMapGet(reactions->attrs, "id");
Array *react_child = reactions->children;
size_t reacts = ArraySize(react_child);
event_id = ParseeEventFromSID(args, chat_id, reacted_id);
for (i = 0; i < reacts; i++)
{
XMLElement *reaction, *react_data;
reaction = ArrayGet(react_child, i);
react_data = ArrayGet(reaction->children, 0);
/* TODO: We should manage removed reactions. */
Free(ASSend(
args->config, mroom_id, encoded,
"m.reaction",
MatrixCreateReact(event_id, react_data->data)
));
}
Free(event_id);
event_id = NULL;
}
else
{
event_id = ASSend(
@ -166,6 +192,7 @@ IQDiscoGet(ParseeData *args, XMPPComponent *jabber, XMLElement *stanza)
while (0)
AdvertiseSimple("urn:xmpp:message-correct:0");
AdvertiseSimple("urn:xmpp:reactions:0");
AdvertiseSimple("urn:xmpp:styling:0");
AdvertiseSimple("urn:xmpp:reply:0");
AdvertiseSimple("urn:xmpp:sid:0");