From e861c6731ac3c7ebb8fcf565e28669e0341f5265 Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Tue, 22 Aug 2023 23:55:38 +1000 Subject: Fixed ingest toggle button Gallery now filters out ingest media if now showing NSFW --- Controllers/MediaController.cs | 6 +----- Media.cs | 4 ++++ Pages/Gallery.razor | 10 ++++------ Pages/Upload.razor | 9 ++++----- Pages/ViewMedia.razor | 4 +++- Services/MediaService.cs | 4 ++-- 6 files changed, 18 insertions(+), 19 deletions(-) diff --git a/Controllers/MediaController.cs b/Controllers/MediaController.cs index 3ccfc1d..b7c8314 100644 --- a/Controllers/MediaController.cs +++ b/Controllers/MediaController.cs @@ -28,10 +28,6 @@ public class MediaController : Controller { inspector = inspectorBuilder.Build(); } - [HttpGet("list")] - public IActionResult EnumerateMedia() => - Ok(db.Media.Select(m => m.ObjectId).ToArray()); - [HttpGet("{mediaId}")] public IActionResult Fetch([FromRoute] Guid mediaId) { var media = db.Media.First(m => m.Guid == mediaId); @@ -165,6 +161,6 @@ public class MediaController : Controller { db.SaveChanges(); transaction.Commit(); - return Ok(media.Guid); + return Redirect($"/ViewMedia?m={media.Guid}"); } } \ No newline at end of file diff --git a/Media.cs b/Media.cs index 3f2021d..2e06dbf 100644 --- a/Media.cs +++ b/Media.cs @@ -17,6 +17,10 @@ public class Media : HBObject { .Select(t => t.TagDefinition) .Any(td => td.Guid == HBContext.IngestTag); + public bool IsNsfw => Tags + .Select(t => t.TagDefinition) + .Any(td => td.Guid == HBContext.NsfwTag); + public string? DisplayName { get { if(ShortDescription is not null) diff --git a/Pages/Gallery.razor b/Pages/Gallery.razor index 36b2788..53a512d 100644 --- a/Pages/Gallery.razor +++ b/Pages/Gallery.razor @@ -27,7 +27,7 @@ [Parameter] [SupplyParameterFromQuery] - public bool? Ingest { get; set; } + public bool Ingest { get; set; } = false; private string Title { get { @@ -56,18 +56,16 @@ media = searchService.Search(Query) .OrderByDescending(m => m.ObjectId); - if(Ingest is not null && Ingest == true) { + if(Ingest) media = media .AsEnumerable() .Where(m => m.IsIngest); - } + // Filter both NSFW AND ingest images if we're not showing NSFW if(!userState.ShowNsfw) media = media .AsEnumerable() - .Where(m => !tagService.GetAllTags(m) - .Select(e => e.tagDefinition.Guid) - .Contains(HBContext.NsfwTag)); + .Where(m => !m.IsNsfw && !m.IsIngest); Media = media.ToArray(); } diff --git a/Pages/Upload.razor b/Pages/Upload.razor index c139aef..a9a1667 100644 --- a/Pages/Upload.razor +++ b/Pages/Upload.razor @@ -4,8 +4,7 @@

Drag a file to upload it

- -
- -@code { -} \ No newline at end of file +
+ +
+ \ No newline at end of file diff --git a/Pages/ViewMedia.razor b/Pages/ViewMedia.razor index 68e6d70..fe73c7d 100644 --- a/Pages/ViewMedia.razor +++ b/Pages/ViewMedia.razor @@ -114,7 +114,6 @@ } private void AddTags(TagDefinition[] tagDefs) { - Console.WriteLine($"Adding tags: {string.Join(", ", tagDefs.Select(td => td.Name))}"); foreach(var tagDef in tagDefs) tagService.AddTag(media, tagDef); mediaTagTable.Refresh(); @@ -122,6 +121,9 @@ 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); StateHasChanged(); } diff --git a/Services/MediaService.cs b/Services/MediaService.cs index a8b0406..a7049e1 100644 --- a/Services/MediaService.cs +++ b/Services/MediaService.cs @@ -19,14 +19,14 @@ public class MediaService : IMediaService { public void SetIngest(Media media, bool ingest) { using var db = dbFactory.CreateDbContext(); + media = db.Media.First(m => m.Guid == media.Guid); var ingestTag = db.TagDefinitions .First(td => td.Guid == HBContext.IngestTag); if(ingest) media.Tags.Add(new(ingestTag)); else - media.Tags.Remove( - media.Tags.First(t => t.TagDefinition.Guid == ingestTag.Guid)); + media.Tags.RemoveAll(t => t.TagDefinition.Guid == ingestTag.Guid); db.SaveChanges(); } -- cgit v1.3