mirror of
https://forge.fsky.io/lda/Parsee.git
synced 2026-03-13 18:25:10 +00:00
[MOD] Carve the way to XMPP rich replies
Bifrost could *never*!
This commit is contained in:
parent
10e140e2a2
commit
fe77906cde
10 changed files with 126 additions and 18 deletions
|
|
@ -69,16 +69,24 @@ ParseeMessageHandler(ParseeData *data, HashMap *event)
|
|||
char *msgtype = GrabString(event, 2, "content", "msgtype");
|
||||
char *body = GrabString(event, 2, "content", "body");
|
||||
char *id = GrabString(event, 1, "room_id");
|
||||
char *ev_id = GrabString(event, 1, "event_id");
|
||||
char *sender = GrabString(event, 1, "sender");
|
||||
char *chat_id, *muc_id, *jid;
|
||||
char *reply_id = MatrixGetReply(event);
|
||||
|
||||
bool direct = false;
|
||||
|
||||
if (ParseeIsPuppet(data->config, sender))
|
||||
{
|
||||
Free(reply_id);
|
||||
return;
|
||||
}
|
||||
|
||||
if (reply_id)
|
||||
{
|
||||
Log(LOG_INFO, "reply=%s", reply_id);
|
||||
}
|
||||
|
||||
ref = DbLock(data->db, 3, "rooms", id, "data");
|
||||
json = DbJson(ref);
|
||||
direct = JsonValueAsBoolean(HashMapGet(json, "is_direct"));
|
||||
|
|
@ -89,9 +97,10 @@ ParseeMessageHandler(ParseeData *data, HashMap *event)
|
|||
char *user = GrabString(json, 1, "xmpp_user");
|
||||
char *local = ParseeEncodeMXID(sender);
|
||||
|
||||
XMPPSendPlain(jabber, local, user, body, NULL);
|
||||
XMPPSendPlain(jabber, local, user, body, NULL, NULL, NULL);
|
||||
|
||||
Free(local);
|
||||
Free(reply_id);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -100,6 +109,7 @@ ParseeMessageHandler(ParseeData *data, HashMap *event)
|
|||
muc_id = ParseeGetMUCID(data, chat_id);
|
||||
if (!chat_id)
|
||||
{
|
||||
Free(reply_id);
|
||||
return;
|
||||
}
|
||||
jid = ParseeEncodeMXID(sender);
|
||||
|
|
@ -107,14 +117,24 @@ ParseeMessageHandler(ParseeData *data, HashMap *event)
|
|||
/* TODO: Check the name's validity */
|
||||
char *name = ASGetName(data->config, NULL, sender);
|
||||
char *rev = StrConcat(3, muc_id, "/", name);
|
||||
char *stanza = NULL, *sender = NULL;
|
||||
if (reply_id)
|
||||
{
|
||||
ParseeGetStanzaInfo(data, chat_id, reply_id, &stanza, &sender);
|
||||
|
||||
Log(LOG_INFO, "Replying to %s by %s", stanza, sender);
|
||||
}
|
||||
XMPPJoinMUC(jabber, jid, rev);
|
||||
XMPPSendPlain(jabber, jid, muc_id, body, "groupchat");
|
||||
XMPPSendPlain(jabber, jid, muc_id, body, "groupchat", stanza, sender);
|
||||
Free(rev);
|
||||
Free(name);
|
||||
Free(stanza);
|
||||
Free(sender);
|
||||
}
|
||||
Free(chat_id);
|
||||
Free(muc_id);
|
||||
Free(jid);
|
||||
Free(reply_id);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue