diff options
Diffstat (limited to 'Pages/Gallery.razor')
| -rw-r--r-- | Pages/Gallery.razor | 44 |
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(); + }); } } |
