summaryrefslogtreecommitdiff
path: root/Pages/Gallery.razor
diff options
context:
space:
mode:
authorJake Mannens <jake@asger.xyz>2023-08-22 10:00:21 +1000
committerJake Mannens <jake@asger.xyz>2023-08-22 10:00:21 +1000
commitbe4496b110e68e2c5a8f76f8ed770e9818befd68 (patch)
tree25f597f34eaf357bd90a5b6b9b5440b7bf699ce1 /Pages/Gallery.razor
parentc29bdd4a9ec782411f57e3c798e1bb01ca7d417d (diff)
Finalised initial implementation of NSFW tag filtering
Diffstat (limited to 'Pages/Gallery.razor')
-rw-r--r--Pages/Gallery.razor44
1 files changed, 32 insertions, 12 deletions
diff --git a/Pages/Gallery.razor b/Pages/Gallery.razor
index fb58ca0..b07c5e3 100644
--- a/Pages/Gallery.razor
+++ b/Pages/Gallery.razor
@@ -1,7 +1,9 @@
@page "/"
@page "/Gallery"
@inject IDbContextFactory<HBContext> dbFactory
+@inject ITagService tagService
@inject ISearchService searchService
+@inject IUserStateService userState
<PageTitle>@(Query is null ? "Gallery" : "Search Results")</PageTitle>
@@ -29,24 +31,42 @@
private Media[] Media;
+ protected override void OnInitialized() =>
+ userState.ShowNsfwChanged += ShowNsfwChanged;
+
protected override void OnParametersSet() => LoadMedia();
private void LoadMedia() {
using var db = dbFactory.CreateDbContext();
+ IEnumerable<Media> media = db.Media
+ .OrderByDescending(m => m.ObjectId)
+ .ToArray();
+
+ if(Query is not null)
+ media = searchService.Search(Query)
+ .OrderByDescending(m => m.ObjectId);
+
if(Ingest is not null && Ingest == true) {
- Media = db.Media
- .OrderByDescending(m => m.ObjectId)
- .ToArray()
- .Where(m => m.IsIngest)
- .ToArray();
- } else {
- if(Query is null)
- Media = db.Media
- .OrderByDescending(m => m.ObjectId)
- .ToArray();
- else
- Media = searchService.Search(Query);
+ media = media
+ .AsEnumerable()
+ .Where(m => m.IsIngest);
}
+
+ if(!userState.ShowNsfw)
+ media = media
+ .AsEnumerable()
+ .Where(m => !tagService.GetAllTags(m)
+ .Select(e => e.tagDefinition.Guid)
+ .Contains(HBContext.NsfwTag));
+
+ Media = media.ToArray();
+ }
+
+ private async void ShowNsfwChanged(object? sender, bool showNsfw) {
+ await InvokeAsync(() => {
+ LoadMedia();
+ StateHasChanged();
+ });
}
}