Filters: made on /filters, applied by each card where it is
The persona's filters (PrivaPub's /api/v2/filters): made, given words and whole-word rules, contexts, an action and an expiry on /filters (linked from Settings), and deleted; posts filtered one by one can be taken out. Every status says which filters it matches; each page tells its cards where they are (home and lists, notifications, public feeds, the thread around the opened post, profiles), and a card leaves its post out (hide), folds it behind the filter's title with a way to show it anyway (warn), or blurs its media (blur). The e2e test folds and then hides a post of the persona's own. 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
e2491de16e
commit
9a752d9288
18 files changed
+1182
-240
No files matched your search
+11
-1
@@ -74,7 +74,7 @@
|
||||
|
||||
@foreach (var post in posts)
|
||||
{
|
||||
<Content @key="post.Key" Post="post" OnDeleted="Remove" OnReplied="Replied" OnTag="OpenTag" />
|
||||
<Content @key="post.Key" Post="post" FilterIn="FilterIn" OnDeleted="Remove" OnReplied="Replied" OnTag="OpenTag" />
|
||||
}
|
||||
|
||||
<div id="@SentinelId" class="flex justify-center min-h-8 text-xs opacity-60">
|
||||
@@ -175,6 +175,16 @@
|
||||
_ = PollNewer(pageCancellation.Token);
|
||||
}
|
||||
|
||||
/// <summary>Which of the persona's filters apply to this feed: home's for home and lists, public's for the shared
|
||||
/// feeds, none for the persona's own collections (favourites, bookmarks) and conversations.</summary>
|
||||
FilterContext? FilterIn => Filter.TimelineType switch
|
||||
{
|
||||
TimelineType.Home or TimelineType.Lists => FilterContext.Home,
|
||||
TimelineType.Local or TimelineType.Federation or TimelineType.Tag or TimelineType.Nearby or TimelineType.Groups => FilterContext.Public,
|
||||
TimelineType.Notifications => FilterContext.Notifications,
|
||||
_ => null
|
||||
};
|
||||
|
||||
FeedQuery Query => new(Filter.TimelineType, CascadingState.PersonaId, Filter.GroupId, groups.FirstOrDefault(g => g.Id == Filter.GroupId)?.IsCommunity == true,
|
||||
Filter.Tag, position?.Latitude, position?.Longitude, Filter.ListId);
|
||||
|
||||
|
||||
Reference in new issue
Block a user