summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Controllers/MediaController.cs6
-rw-r--r--Media.cs4
-rw-r--r--Pages/Gallery.razor10
-rw-r--r--Pages/Upload.razor9
-rw-r--r--Pages/ViewMedia.razor4
-rw-r--r--Services/MediaService.cs4
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 @@
<div id="dropzone">
<p>Drag a file to upload it</p>
- <input type="file" accept="image/*"/>
-</div>
-
-@code {
-} \ No newline at end of file
+ <form id="upload" action="/media" method="post" enctype="multipart/form-data">
+ <input type="file" id="myFile" name="filename" accept="image/*,video/*"/>
+ </form>
+</div> \ 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();
}