mirror of
https://forge.fsky.io/lda/Parsee.git
synced 2026-03-13 10:45:11 +00:00
[FIX] Use the puppet's name when pinged if possible
This commit is contained in:
parent
f94db460ac
commit
176f390c4b
4 changed files with 26 additions and 16 deletions
|
|
@ -370,7 +370,7 @@ ParseeMessageHandler(ParseeData *data, HashMap *event)
|
|||
char *ev_id = GrabString(event, 1, "event_id");
|
||||
char *chat_id = NULL, *muc_id = NULL;
|
||||
char *reply_id = MatrixGetReply(event);
|
||||
char *xepd = ParseeXMPPify(event);
|
||||
char *xepd = ParseeXMPPify(data, event);
|
||||
char *type, *user, *xmppified_user = NULL, *to = NULL;
|
||||
char *unauth = NULL;
|
||||
char *origin_id = NULL, *stanza = NULL;
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ typedef struct XMPPFlags {
|
|||
bool quote;
|
||||
} XMPPFlags;
|
||||
static char *
|
||||
XMPPifyElement(HashMap *event, XMLElement *elem, XMPPFlags flags)
|
||||
XMPPifyElement(const ParseeConfig *conf, HashMap *event, XMLElement *elem, XMPPFlags flags)
|
||||
{
|
||||
char *xepd = NULL, *tmp = NULL;
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ XMPPifyElement(HashMap *event, XMLElement *elem, XMPPFlags flags)
|
|||
for (i = 0; i < ArraySize(elem->children); i++)
|
||||
{
|
||||
child = ArrayGet(elem->children, i);
|
||||
subxep = XMPPifyElement(event, child, flags);
|
||||
subxep = XMPPifyElement(conf, event, child, flags);
|
||||
|
||||
Concat(subxep);
|
||||
Free(subxep);
|
||||
|
|
@ -83,7 +83,7 @@ XMPPifyElement(HashMap *event, XMLElement *elem, XMPPFlags flags)
|
|||
for (i = 0; i < ArraySize(elem->children); i++)
|
||||
{
|
||||
child = ArrayGet(elem->children, i);
|
||||
subxep = XMPPifyElement(event, child, flags);
|
||||
subxep = XMPPifyElement(conf, event, child, flags);
|
||||
|
||||
Concat(subxep);
|
||||
Free(subxep);
|
||||
|
|
@ -96,7 +96,7 @@ XMPPifyElement(HashMap *event, XMLElement *elem, XMPPFlags flags)
|
|||
for (i = 0; i < ArraySize(elem->children); i++)
|
||||
{
|
||||
child = ArrayGet(elem->children, i);
|
||||
subxep = XMPPifyElement(event, child, flags);
|
||||
subxep = XMPPifyElement(conf, event, child, flags);
|
||||
|
||||
Concat(subxep);
|
||||
Free(subxep);
|
||||
|
|
@ -129,7 +129,7 @@ XMPPifyElement(HashMap *event, XMLElement *elem, XMPPFlags flags)
|
|||
for (i = 0; i < ArraySize(elem->children); i++)
|
||||
{
|
||||
child = ArrayGet(elem->children, i);
|
||||
subxep = XMPPifyElement(event, child, flags);
|
||||
subxep = XMPPifyElement(conf, event, child, flags);
|
||||
|
||||
Concat(subxep);
|
||||
Free(subxep);
|
||||
|
|
@ -144,7 +144,7 @@ XMPPifyElement(HashMap *event, XMLElement *elem, XMPPFlags flags)
|
|||
for (i = 0; i < ArraySize(elem->children); i++)
|
||||
{
|
||||
child = ArrayGet(elem->children, i);
|
||||
subxep = XMPPifyElement(event, child, flags);
|
||||
subxep = XMPPifyElement(conf, event, child, flags);
|
||||
|
||||
Concat(subxep);
|
||||
Free(subxep);
|
||||
|
|
@ -162,11 +162,19 @@ XMPPifyElement(HashMap *event, XMLElement *elem, XMPPFlags flags)
|
|||
UserID *id = MatrixParseIDFromMTO(pref);
|
||||
if (id)
|
||||
{
|
||||
char *real_id = StrConcat(4, "@", id->localpart, ":", id->server);
|
||||
/* TODO: Detect if it already is a Parsee user */
|
||||
Concat("@");
|
||||
Concat(id->localpart);
|
||||
Concat(":");
|
||||
Concat(id->server);
|
||||
if (ParseeIsPuppet(conf, real_id))
|
||||
{
|
||||
char *name = ASGetName(conf, NULL, real_id);
|
||||
Concat((name ? name : real_id));
|
||||
Free(name);
|
||||
}
|
||||
else
|
||||
{
|
||||
Concat(real_id);
|
||||
}
|
||||
Free(real_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -180,7 +188,7 @@ XMPPifyElement(HashMap *event, XMLElement *elem, XMPPFlags flags)
|
|||
for (i = 0; i < ArraySize(elem->children); i++)
|
||||
{
|
||||
child = ArrayGet(elem->children, i);
|
||||
subxep = XMPPifyElement(event, child, flags);
|
||||
subxep = XMPPifyElement(conf, event, child, flags);
|
||||
|
||||
Concat(subxep);
|
||||
Free(subxep);
|
||||
|
|
@ -196,7 +204,7 @@ XMPPifyElement(HashMap *event, XMLElement *elem, XMPPFlags flags)
|
|||
for (i = 0; i < ArraySize(elem->children); i++)
|
||||
{
|
||||
child = ArrayGet(elem->children, i);
|
||||
subxep = XMPPifyElement(event, child, flags);
|
||||
subxep = XMPPifyElement(conf, event, child, flags);
|
||||
|
||||
Concat(subxep);
|
||||
Free(subxep);
|
||||
|
|
@ -237,7 +245,7 @@ GetHTMLBody(HashMap *event)
|
|||
return GrabString(event, 2, "content", "formatted_body");
|
||||
}
|
||||
char *
|
||||
ParseeXMPPify(HashMap *event)
|
||||
ParseeXMPPify(ParseeData *data, HashMap *event)
|
||||
{
|
||||
char *type, *format, *html;
|
||||
char *xepd = NULL;
|
||||
|
|
@ -278,7 +286,7 @@ ParseeXMPPify(HashMap *event)
|
|||
}
|
||||
|
||||
flags.quote = false;
|
||||
xepd = XMPPifyElement(event, elem, flags);
|
||||
xepd = XMPPifyElement(data ? data->config : NULL, event, elem, flags);
|
||||
|
||||
XMLFreeElement(elem);
|
||||
Free(html);
|
||||
|
|
|
|||
|
|
@ -56,6 +56,8 @@ XMPPDispatcher(void *argp)
|
|||
|
||||
if (!stanza)
|
||||
{
|
||||
/* TODO: We shouldn't be busywaiting. Even with a sleep call.
|
||||
*/
|
||||
UtilSleepMillis(10);
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -356,7 +356,7 @@ extern int ParseeFindDatastartU(char *data);
|
|||
|
||||
|
||||
/* XMPP-ifies a message event to XEP-0393 if possible. */
|
||||
extern char * ParseeXMPPify(HashMap *event);
|
||||
extern char * ParseeXMPPify(ParseeData *data, HashMap *event);
|
||||
|
||||
/* Finds an event ID from an ID in the stanza's attributes */
|
||||
extern char * ParseeEventFromID(ParseeData *d, char *c_id, char *ori_id);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue