[ADD] Respect MIME, start bridging leaves/kicks

Wow, this one _wasn't_ pushed at 3AM, Outstanding.
This commit is contained in:
LDA 2024-07-07 17:30:48 +02:00
commit 43b3f8aaf5
8 changed files with 146 additions and 24 deletions

View file

@ -63,6 +63,35 @@ ParseeMemberHandler(ParseeData *data, HashMap *event)
Free(jid);
Free(chat_id);
}
else if (StrEquals(membership, "leave") && !ParseeIsPuppet(conf, state_key))
{
/* TODO: Manage bans */
XMPPComponent *jabber = data->jabber;
char *jid = ParseeEncodeMXID(state_key);
char *name = NULL, *rev = NULL, *muc_id = NULL;
char *reason = GrabString(event, 2, "content", "reason");
/* Try to find the chat ID */
chat_id = ParseeGetFromRoomID(data, room_id);
muc_id = ParseeGetMUCID(data, chat_id);
if (!chat_id)
{
goto end;
}
/* TODO: Check the name's validity */
name = ASGetName(data->config, room_id, state_key);
rev = StrConcat(4, muc_id, "/", name, "[p]");
XMPPLeaveMUC(jabber, jid, rev, reason);
end:
Free(chat_id);
Free(muc_id);
Free(name);
Free(rev);
Free(jid);
}
}
static void
ParseeBotHandler(ParseeData *data, HashMap *event)
@ -95,7 +124,6 @@ ParseeBotHandler(ParseeData *data, HashMap *event)
return;
}
/* TODO: Make an improvment. This is the bare minimum */
if (!ParseeIsAdmin(data, sender))
{
Free(ASSend(
@ -172,8 +200,6 @@ ParseeMessageHandler(ParseeData *data, HashMap *event)
return;
}
/* TODO: Reunite DM/MUC code to bring feature parity. */
type = direct ? "chat" : "groupchat";
user = GrabString(json, 1, "xmpp_user");
unauth = ParseeToUnauth(data, url);
@ -237,7 +263,7 @@ ParseeMessageHandler(ParseeData *data, HashMap *event)
stanza, sender, ev_id, unauth, origin_id,
xmpp_ident
);
/* Culprit */
if (direct)
{
ParseePushDMStanza(