- A post's flairs are read in both dialects: Lemmy 1.0's CommunityPostTag (id, slug, name, description, colour slot) and PieFed's lemmy:CommunityTag (display name, text and background colours, whether to blur images). Colours are kept only as a colour slot or a hex value. - A community's own list comes from its `tag` and PieFed's older `lemmy:tagsForPosts`, and fills in a post that names only a flair's id and slug, as Lemmy's posts do. Edits and refreshes keep them current. - Clients get them as `privapub.flairs`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB
This commit is contained in:
1 parent
587997dd67
commit
d4b1788a4f
14 files changed
+172
-3
No files matched your search
@@ -38,6 +38,7 @@ namespace PrivaPub.Federation.Inbox
|
||||
post.Audio = note.Audio ?? post.Audio;
|
||||
post.Event = note.Event ?? post.Event;
|
||||
post.Place = note.Place;
|
||||
post.Flairs = await RemotePosts.Flairs(note, post.AudienceURI, token);
|
||||
if (note.CommentsEnabled is { } enabled)
|
||||
post.LockedAt = enabled ? null : post.LockedAt ?? DateTime.UtcNow;
|
||||
if (!IsEdit(note, post))
|
||||
|
||||
@@ -137,10 +137,20 @@ namespace PrivaPub.Federation.Inbox
|
||||
EditedAt = note.Updated,
|
||||
Revisions = note.FormerRepresentations.ToList()
|
||||
};
|
||||
post.Flairs = await Flairs(note, post.AudienceURI, token);
|
||||
await Episode(post, note, author, token);
|
||||
return post;
|
||||
}
|
||||
|
||||
// a post's flairs, filled in from its community's list
|
||||
public static async Task<List<PostFlair>> Flairs(NoteDocument note, string communityUri, CancellationToken token)
|
||||
{
|
||||
if (note.Flairs.Count == 0)
|
||||
return default;
|
||||
var community = communityUri == default ? default : await DB.Default.Find<ForeignAvatar>().Match(f => f.ActorURI == communityUri).ExecuteFirstAsync(token);
|
||||
return ObjectShapes.Described(note.Flairs, community?.Flairs);
|
||||
}
|
||||
|
||||
static readonly System.Text.RegularExpressions.Regex Href = new(@"href=""([^""]+)""", System.Text.RegularExpressions.RegexOptions.Compiled);
|
||||
|
||||
// a post that is only a link to a podcast episode of its own author (Castopod announces each episode so): the
|
||||
|
||||
Reference in new issue
Block a user