summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJake Mannens <jake@asger.xyz>2023-08-22 23:55:38 +1000
committerJake Mannens <jake@asger.xyz>2023-08-22 23:55:38 +1000
commitf64d0b64918e0c2955d8519dd563563c69452bd4 (patch)
treed9bb03c6ebad35a16e24cbd3858aab5fd892979c
parent6cd1bd52992134e81e1b9bc57b90bd14a92ee56d (diff)
Fixed ingest toggle button
Gallery now filters out ingest media if now showing NSFW
-rw-r--r--Media.cs4
-rw-r--r--Pages/Gallery.razor10
-rw-r--r--Pages/ViewMedia.razor4
-rw-r--r--Services/MediaService.cs4
4 files changed, 13 insertions, 9 deletions
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 b07c5e3..695f2f7 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 Media[] Media;
@@ -47,18 +47,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/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 953fd73..aa733c3 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();
}