A direct message answers in the form its recipient writes in
Lemmy 0.19 (most of the threadiverse) and Mbin take a private message only as a ChatMessage and refuse a direct Note. A direct message to one account elsewhere that writes to us as ChatMessages now goes out as one: to it alone, without a mention in its text, kept on the post (Post.AsChatMessage) so the served copy and an edit match. No software name decides it. Live against Lemmy 0.19: alice's answer to lemmyuser's private message and another persona's message to lemmyuser arrive (29 checks). A first message to an account that never wrote to anyone here is still a Note, which they refuse; G-0008 keeps that open for the owner. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
1 parent
a85ebd30c0
commit
f38ac73615
10 files changed
+90
-17
No files matched your search
@@ -183,7 +183,14 @@ namespace PrivaPub.Federation.Rendering
|
||||
foreach (var recipient in recipients.Where(r => !named.Contains(r.Uri)))
|
||||
tags.Add(new JsonObject { ["type"] = "Mention", ["href"] = recipient.Uri, ["name"] = "@" + recipient.Handle });
|
||||
var unmentioned = recipients.Where(r => !named.Contains(r.Uri)).ToList();
|
||||
if (unmentioned.Count > 0)
|
||||
// a ChatMessage (Pleroma's, which Lemmy 0.19 and Mbin take as their private messages) has one recipient and no
|
||||
// mention of them in its text
|
||||
if (post.AsChatMessage)
|
||||
{
|
||||
note["type"] = "ChatMessage";
|
||||
note.Remove("cc");
|
||||
}
|
||||
else if (unmentioned.Count > 0)
|
||||
note["content"] = "<p>" + string.Join(" ", unmentioned.Select(r =>
|
||||
$"<span class=\"h-card\" translate=\"no\"><a href=\"{WebUtility.HtmlEncode(r.Uri)}\" class=\"u-url mention\">@<span>{WebUtility.HtmlEncode(r.Handle.Split('@')[0])}</span></a></span>"))
|
||||
+ "</p>" + note["content"]!.GetValue<string>();
|
||||
|
||||
Reference in new issue
Block a user