@page "/" @page "/Gallery" @inject IDbContextFactory dbFactory @inject ITagService tagService @inject ISearchService searchService @inject IUserStateService userState @(Query is null ? "Gallery" : "Search Results")
@foreach(var media in Media) { } @code { [Parameter] [SupplyParameterFromQuery(Name = "q")] public string? Query { get; set; } [Parameter] [SupplyParameterFromQuery] public bool? Ingest { get; set; } 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 = 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 = 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(); }); } }