diff options
| author | Jake Mannens <jake@asger.xyz> | 2023-08-24 14:23:34 +1000 |
|---|---|---|
| committer | Jake Mannens <jake@asger.xyz> | 2023-08-24 14:23:34 +1000 |
| commit | 5c48b5c90e8037e9b9ea4b4c59d4e376a20590d9 (patch) | |
| tree | 706382ff2bf1d8710723b8196a8c5124f7dd9e80 /Pages | |
| parent | 56e3e6072146e0d0d5fb7c098baced157c592998 (diff) | |
Removed EFCore lazy-loading proxies
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 695f2f7..62d1a27 100644 --- a/Pages/Gallery.razor +++ b/Pages/Gallery.razor @@ -40,6 +40,8 @@ using var db = dbFactory.CreateDbContext(); IEnumerable<Media> media = db.Media + .Include(m => m.Tags) + .ThenInclude(t => t.TagDefinition) .OrderByDescending(m => m.ObjectId) .ToArray(); @@ -53,10 +55,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(); } |
