mirror of
https://forge.fsky.io/lda/Parsee.git
synced 2026-03-13 21:25:11 +00:00
[ADD/WIP] Start having MUCwork half-decent
Still lots of things required(like using the users JIDs whenever possible, otherwise dropping to occupant ID), images, replies, rich data with HTML and whatever XMPP has, etc...
This commit is contained in:
parent
d3b7f2fee0
commit
a84ce05b9d
12 changed files with 329 additions and 40 deletions
|
|
@ -46,12 +46,10 @@ ParseeMemberHandler(ParseeData *data, HashMap *event)
|
|||
{
|
||||
char *jid = ParseeEncodeMXID(state_key);
|
||||
chat_id = ParseeGetFromRoomID(data, room_id);
|
||||
Log(LOG_INFO, "JID=%s", jid);
|
||||
if (chat_id)
|
||||
{
|
||||
char *muc = ParseeGetMUCID(data, chat_id);
|
||||
char *rev = StrConcat(2, muc, "/parsee");
|
||||
Log(LOG_INFO, "chat_id=%s muc=%s", chat_id, muc);
|
||||
/* Make the user join the MUC */
|
||||
XMPPJoinMUC(data->jabber, jid, rev);
|
||||
Free(rev);
|
||||
|
|
@ -72,13 +70,12 @@ ParseeMessageHandler(ParseeData *data, HashMap *event)
|
|||
char *body = GrabString(event, 2, "content", "body");
|
||||
char *id = GrabString(event, 1, "room_id");
|
||||
char *sender = GrabString(event, 1, "sender");
|
||||
char *chat_id;
|
||||
char *chat_id, *muc_id, *jid;
|
||||
|
||||
bool direct = false;
|
||||
|
||||
if (ParseeIsPuppet(data->config, sender))
|
||||
{
|
||||
Log(LOG_INFO, "Do not bridge the puppet");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -92,7 +89,6 @@ ParseeMessageHandler(ParseeData *data, HashMap *event)
|
|||
char *user = GrabString(json, 1, "xmpp_user");
|
||||
char *local = ParseeEncodeMXID(sender);
|
||||
|
||||
Log(LOG_INFO, "Sending to %s on XMPP", user);
|
||||
XMPPSendPlain(jabber, local, user, body, NULL);
|
||||
|
||||
Free(local);
|
||||
|
|
@ -101,12 +97,21 @@ ParseeMessageHandler(ParseeData *data, HashMap *event)
|
|||
|
||||
/* Try to find the chat ID */
|
||||
chat_id = ParseeGetFromRoomID(data, id);
|
||||
muc_id = ParseeGetMUCID(data, chat_id);
|
||||
if (!chat_id)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Log(LOG_INFO, "Chat ID=%s", chat_id);
|
||||
jid = ParseeEncodeMXID(sender);
|
||||
{
|
||||
char *rev = StrConcat(3, muc_id, "/", jid);
|
||||
XMPPJoinMUC(jabber, jid, rev);
|
||||
XMPPSendPlain(jabber, jid, muc_id, body, "groupchat");
|
||||
Free(rev);
|
||||
}
|
||||
Free(chat_id);
|
||||
Free(muc_id);
|
||||
Free(jid);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -119,7 +124,6 @@ ParseeEventHandler(ParseeData *data, HashMap *event)
|
|||
}
|
||||
|
||||
event_type = GrabString(event, 1, "type");
|
||||
Log(LOG_INFO, "E->%s", GrabString(event, 1, "sender"));
|
||||
if (StrEquals(event_type, "m.room.member"))
|
||||
{
|
||||
ParseeMemberHandler(data, event);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue