diff --git a/src/main/java/com/discdrop/web/ArtistController.java b/src/main/java/com/discdrop/web/ArtistController.java index 6f5a995..3f53403 100644 --- a/src/main/java/com/discdrop/web/ArtistController.java +++ b/src/main/java/com/discdrop/web/ArtistController.java @@ -9,9 +9,11 @@ import com.discdrop.service.ReleaseGroupService; import io.quarkus.qute.Location; import io.quarkus.qute.Template; import io.quarkus.qute.TemplateInstance; +import io.vertx.core.Vertx; import jakarta.inject.Inject; import jakarta.ws.rs.*; import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; import java.util.ArrayList; import java.util.List; @@ -27,6 +29,9 @@ public class ArtistController { @Inject FeedService feedService; + @Inject + Vertx vertx; + @Inject @Location("fragments/search-results") Template searchResultsTemplate; @@ -55,12 +60,18 @@ public class ArtistController { @POST @Path("/{mbid}/track") @Produces(MediaType.TEXT_HTML) - public TemplateInstance trackArtist(@PathParam("mbid") String mbid) { + public Response trackArtist(@PathParam("mbid") String mbid) { var artist = artistService.addArtist(mbid); var types = getMonitoredTypes(artist); - releaseGroupService.fetchAndCache(artist.mbid(), artist.name(), types); + vertx.executeBlocking(promise -> { + releaseGroupService.fetchAndCache(artist.mbid(), artist.name(), types); + promise.complete(); + }); var allArtists = artistService.findAll(); - return artistListTemplate.data("artists", allArtists); + var listHtml = artistListTemplate.data("artists", allArtists).render(); + var emptySearch = searchResultsTemplate.data("artists", List.of()).render(); + var combined = emptySearch + listHtml; + return Response.ok(combined).build(); } @DELETE diff --git a/src/main/resources/templates/fragments/artist-list.html b/src/main/resources/templates/fragments/artist-list.html index 652f2db..3989515 100644 --- a/src/main/resources/templates/fragments/artist-list.html +++ b/src/main/resources/templates/fragments/artist-list.html @@ -1,3 +1,4 @@ +
No artists tracked yet
@@ -30,35 +31,40 @@ + hx-target="#artist-list" + hx-swap="innerHTML"> Album