R8 the Mastodon API made real: featured tags, endorsements, notes, notify and languages, suggestions, the direct stream
Featured tags per persona (/api/v1/featured_tags, suggestions, tags/:name/feature, accounts' featured tags, max 10),
listed at /tattoos as Hashtags and sent as Add/Remove{Hashtag} to followers on the featured collection, as Mastodon
sends them; remote accounts' tags received and read from featuredTags. Endorsements (pin/endorse) and private notes
(PersonaNote) kept per persona and never federated; the relationship's notifying, languages, endorsed and note, with
follow's notify (status notifications) and languages (home filter). Reading preferences set on /clientapi. Suggestions
v1/v2 with dismissals and staff picks, never the persona or a sibling. conversation events on the direct stream.
translate, annual reports and the admin API answer. New collections backed up and removed with their persona.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WpVCoDeM1qUTRp4fXQdfof
This commit is contained in:
1 parent
d08fbabaa5
commit
87529bca49
42 files changed
+1505
-77
No files matched your search
@@ -61,7 +61,8 @@ namespace PrivaPub.Services
|
||||
// personas always were: its Mastodon tokens end first, each group it owns goes (GroupRemoval), a Delete of the actor goes
|
||||
// to its followers and to the accounts it follows, its posts are emptied, and its name stays reserved while its documents
|
||||
// answer 410. What it kept for itself (lists, filters, followed hashtags, scheduled posts, what it did with the
|
||||
// announcements, the feeds it read, its media) goes with it. Its link to its login stays, so the login keeps no other
|
||||
// announcements, the feeds it read, its featured hashtags, endorsements, notes and dismissed suggestions, its media)
|
||||
// goes with it. Its link to its login stays, so the login keeps no other
|
||||
// trace than that.
|
||||
public class PersonaRemoval : IPersonaRemoval
|
||||
{
|
||||
@@ -113,6 +114,13 @@ namespace PrivaPub.Services
|
||||
await DB.Default.DeleteAsync<AnnouncementReaction>(r => r.AvatarId == avatar.ID);
|
||||
// (the reader of feeds stops following what nobody reads any more at its next round)
|
||||
await DB.Default.DeleteAsync<FeedSubscription>(s => s.AvatarId == avatar.ID);
|
||||
// what the Mastodon API kept for it (R8): its featured hashtags (the Delete of the actor takes them from other
|
||||
// servers), its endorsements, its private notes and its dismissed suggestions, and what other personas here kept
|
||||
// about it: their endorsements of it and their notes on it
|
||||
await DB.Default.DeleteAsync<FeaturedTag>(t => t.AvatarId == avatar.ID);
|
||||
await DB.Default.DeleteAsync<Endorsement>(e => e.AvatarId == avatar.ID || e.TargetAccountId == avatar.ID);
|
||||
await DB.Default.DeleteAsync<PersonaNote>(n => n.AvatarId == avatar.ID || n.TargetAccountId == avatar.ID);
|
||||
await DB.Default.DeleteAsync<SuggestionDismissal>(d => d.AvatarId == avatar.ID || d.AccountId == avatar.ID);
|
||||
// nothing of it publishes later, and none of its files stays served: its posts' media, its pictures and what its
|
||||
// scheduled posts held
|
||||
await DB.Default.DeleteAsync<ScheduledStatus>(s => s.AvatarId == avatar.ID);
|
||||
|
||||
Reference in new issue
Block a user