diff options
Diffstat (limited to 'Pages')
| -rw-r--r-- | Pages/Gallery.razor | 11 | ||||
| -rw-r--r-- | Pages/TagDefinitions.razor | 1 | ||||
| -rw-r--r-- | Pages/ViewMedia.razor | 15 |
3 files changed, 20 insertions, 7 deletions
diff --git a/Pages/Gallery.razor b/Pages/Gallery.razor index 53a512d..88400b3 100644 --- a/Pages/Gallery.razor +++ b/Pages/Gallery.razor @@ -49,6 +49,8 @@ using var db = dbFactory.CreateDbContext(); IEnumerable<Media> media = db.Media + .Include(m => m.Tags) + .ThenInclude(t => t.TagDefinition) .OrderByDescending(m => m.ObjectId) .ToArray(); @@ -62,10 +64,15 @@ .Where(m => m.IsIngest); // Filter both NSFW AND ingest images if we're not showing NSFW - if(!userState.ShowNsfw) + if(!userState.ShowNsfw) { + var nsfwTags = tagService.TagsThatImply(HBContext.NsfwTag) + .Select(td => td.Guid) + .ToArray(); media = media .AsEnumerable() - .Where(m => !m.IsNsfw && !m.IsIngest); + .Where(m => !m.Tags.Select(t => t.TagDefinition.Guid).Intersect(nsfwTags).Any()) + .Where(m => !m.IsIngest); + } Media = media.ToArray(); } diff --git a/Pages/TagDefinitions.razor b/Pages/TagDefinitions.razor index 7d9c3a1..455c4ac 100644 --- a/Pages/TagDefinitions.razor +++ b/Pages/TagDefinitions.razor @@ -101,6 +101,7 @@ private TagDefinition[] tagDefinitions => dbFactory.CreateDbContext().TagDefinitions + .Include(td => td.ImplicitTags) .Where(td => td.Source == TagSource.UserTag) .OrderBy(td => td.Namespace) .ThenBy(td => td.Name) diff --git a/Pages/ViewMedia.razor b/Pages/ViewMedia.razor index fe73c7d..52300e3 100644 --- a/Pages/ViewMedia.razor +++ b/Pages/ViewMedia.razor @@ -106,9 +106,15 @@ protected override void OnInitialized() { db = dbFactory.CreateDbContext(); - media = db.Media.First(m => m.Guid == MediaId); - if(media is null) - throw new ArgumentException("Media not found!"); + LoadMedia(); + } + + private void LoadMedia() { + media = db.Media + .Include(m => m.Tags) + .ThenInclude(t => t.TagDefinition) + .Include(m => m.UploadedFiles) + .First(m => m.Guid == MediaId); title = media.DisplayName ?? "Media View"; } @@ -121,9 +127,8 @@ private void SetIngest(bool ingest) { mediaService.SetIngest(media, ingest); - // TODO: fix this hacky method of reloading the media entity db.Entry(media).State = EntityState.Detached; - media = db.Media.First(m => m.Guid == media.Guid); + LoadMedia(); StateHasChanged(); } |
