Auto-refresh feed when adding/removing artists via search

This commit is contained in:
2026-07-06 15:36:21 +02:00
parent aa1234d363
commit 14c1f3cb72
@@ -64,7 +64,7 @@ public class ArtistController {
var allArtists = artistService.findAll(); var allArtists = artistService.findAll();
var listHtml = artistListTemplate.data("artists", allArtists).render(); var listHtml = artistListTemplate.data("artists", allArtists).render();
var emptySearch = searchResultsTemplate.data("artists", List.of()).render(); var emptySearch = searchResultsTemplate.data("artists", List.of()).render();
return Response.ok(emptySearch + listHtml).build(); return Response.ok(emptySearch + listHtml + feedReloadScript()).build();
} }
@DELETE @DELETE
@@ -80,9 +80,9 @@ public class ArtistController {
@Path("/{mbid}/from-search") @Path("/{mbid}/from-search")
@Produces(MediaType.TEXT_HTML) @Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public TemplateInstance removeArtistFromSearch(@PathParam("mbid") String mbid, public Response removeArtistFromSearch(@PathParam("mbid") String mbid,
@QueryParam("q") @DefaultValue("") String q, @QueryParam("q") @DefaultValue("") String q,
@FormParam("q") @DefaultValue("") String qForm) { @FormParam("q") @DefaultValue("") String qForm) {
artistService.removeArtist(mbid); artistService.removeArtist(mbid);
var query = q != null && !q.isBlank() ? q : qForm; var query = q != null && !q.isBlank() ? q : qForm;
List<SearchResult> results; List<SearchResult> results;
@@ -91,7 +91,13 @@ public class ArtistController {
} else { } else {
results = artistService.search(query); results = artistService.search(query);
} }
return searchResultsTemplate.data("artists", results); var searchHtml = searchResultsTemplate.data("artists", results).render();
var feedResult = feedService.getFeedEntries(1);
var feedHtml = feedEntriesTemplate
.data("entries", feedResult.entries())
.data("hasMore", feedResult.hasMore())
.data("nextPage", 2).render();
return Response.ok(searchHtml + feedReloadScript()).build();
} }
@PATCH @PATCH
@@ -142,4 +148,8 @@ public class ArtistController {
if (a.otherMonitored()) types.add("Other"); if (a.otherMonitored()) types.add("Other");
return types; return types;
} }
private String feedReloadScript() {
return "<div hx-get=\"/api/artists/feed-table\" hx-trigger=\"load\" hx-target=\"#feed-entries\" hx-swap=\"innerHTML\"></div>";
}
} }