diff --git a/src/main/java/io/discdrop/resource/ArtistResource.java b/src/main/java/io/discdrop/resource/ArtistResource.java index 297b3c6..abd569b 100644 --- a/src/main/java/io/discdrop/resource/ArtistResource.java +++ b/src/main/java/io/discdrop/resource/ArtistResource.java @@ -98,11 +98,8 @@ public class ArtistResource { public TemplateInstance toggleType(@PathParam("mbid") String mbid, @FormParam("primaryType") String primaryType, @FormParam("enabled") boolean enabled) { - FollowedArtist artist = artistService.findArtist(mbid); - if (artist != null) { - artistService.setTypeEnabled(artist, primaryType, enabled); - CompletableFuture.runAsync(() -> syncService.resyncArtist(mbid)); - } + artistService.setTypeEnabled(mbid, primaryType, enabled); + CompletableFuture.runAsync(() -> syncService.resyncArtist(mbid)); return feedFragment(0, true); } diff --git a/src/main/java/io/discdrop/service/ArtistService.java b/src/main/java/io/discdrop/service/ArtistService.java index 0a055a4..573a0e6 100644 --- a/src/main/java/io/discdrop/service/ArtistService.java +++ b/src/main/java/io/discdrop/service/ArtistService.java @@ -63,7 +63,11 @@ public class ArtistService { } @Transactional - public void setTypeEnabled(FollowedArtist artist, String primaryType, boolean enabled) { + public void setTypeEnabled(String mbid, String primaryType, boolean enabled) { + FollowedArtist artist = FollowedArtist.findByMbid(mbid); + if (artist == null) { + return; + } for (ArtistTypeSetting s : ArtistTypeSetting.findByArtist(artist)) { if (s.primaryType.equalsIgnoreCase(primaryType)) { s.enabled = enabled; diff --git a/src/main/resources/META-INF/resources/css/app.css b/src/main/resources/META-INF/resources/css/app.css index 2606cb4..73a597d 100644 --- a/src/main/resources/META-INF/resources/css/app.css +++ b/src/main/resources/META-INF/resources/css/app.css @@ -10,3 +10,38 @@ input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; appearance: none; } + +/* Vinyl-style cover art in feed */ +.vinyl-wrap { + border-radius: 50%; + overflow: hidden; + position: relative; + box-shadow: + 0 0 0 3px rgba(0,0,0,0.3), + 0 0 0 4px rgba(255,255,255,0.05), + 0 4px 12px rgba(0,0,0,0.4); + background: #1a1a1a; +} + +.vinyl-cover { + border-radius: 50%; + transition: transform 0.4s ease; +} + +.vinyl-wrap:hover .vinyl-cover { + transform: rotate(8deg); +} + +/* Center spindle hole */ +.vinyl-hole { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 14px; + height: 14px; + border-radius: 50%; + background: #0b0f19; + border: 2px solid rgba(255,255,255,0.15); + pointer-events: none; +} diff --git a/src/main/resources/templates/artists.html b/src/main/resources/templates/artists.html index 267ae33..da7aff5 100644 --- a/src/main/resources/templates/artists.html +++ b/src/main/resources/templates/artists.html @@ -20,6 +20,9 @@
Feed + + + diff --git a/src/main/resources/templates/fragments/artist-row.html b/src/main/resources/templates/fragments/artist-row.html index aea5372..7b568f9 100644 --- a/src/main/resources/templates/fragments/artist-row.html +++ b/src/main/resources/templates/fragments/artist-row.html @@ -20,6 +20,7 @@ {#for s in settings}