summaryrefslogtreecommitdiff
path: root/Pages
diff options
context:
space:
mode:
authorJake Mannens <jake@asger.xyz>2023-08-24 14:23:34 +1000
committerJake Mannens <jake@asger.xyz>2025-08-19 23:33:18 +1000
commit9a99c6859c2e740e1b6afe3c8c1020343a848197 (patch)
treef1525538a4b0f89eca4d463deeea53743eedc98d /Pages
parente861c6731ac3c7ebb8fcf565e28669e0341f5265 (diff)
Removed EFCore lazy-loading proxies
Diffstat (limited to 'Pages')
-rw-r--r--Pages/Gallery.razor11
-rw-r--r--Pages/TagDefinitions.razor1
-rw-r--r--Pages/ViewMedia.razor15
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();
}