diff --git a/app/assets/stylesheets/artist.css b/app/assets/stylesheets/artist.css
index 93ac255..9492f5e 100644
--- a/app/assets/stylesheets/artist.css
+++ b/app/assets/stylesheets/artist.css
@@ -17,3 +17,7 @@
.artist-meta {
@apply mt-2;
}
+
+.artist--section-link {
+ @apply icon-btn text-small float-right;
+}
diff --git a/app/controllers/artists_controller.rb b/app/controllers/artists_controller.rb
index 990d6b4..55d3260 100644
--- a/app/controllers/artists_controller.rb
+++ b/app/controllers/artists_controller.rb
@@ -11,6 +11,17 @@ def show
end
end
+ def tracks
+ artist = Artist.find(params[:id])
+ page = params[:page].to_i
+ tracks = artist.tracks.popularity_ordered.offset(page * 10).limit(10)
+ if turbo_frame_request?
+ render partial: "tracks", locals: {artist:, tracks:, page:}
+ else
+ render locals: {artist:, tracks:}
+ end
+ end
+
private
def selected_albums(albums, album_type)
diff --git a/app/views/artists/_header.html.erb b/app/views/artists/_header.html.erb
new file mode 100644
index 0000000..681dd18
--- /dev/null
+++ b/app/views/artists/_header.html.erb
@@ -0,0 +1,20 @@
+<%# locals: (artist:) -%>
+
+
+
diff --git a/app/views/artists/_tracks.html.erb b/app/views/artists/_tracks.html.erb
new file mode 100644
index 0000000..5cfe9e5
--- /dev/null
+++ b/app/views/artists/_tracks.html.erb
@@ -0,0 +1,12 @@
+<%# locals: (artist:, tracks:, page: params[:page].to_i) -%>
+<%= turbo_frame_tag dom_id(artist, :tracks) do %>
+ <% if tracks.any? %>
+
+ <%= render tracks, enqueueble: true, offset: page * 10 %>
+
+ <%= turbo_frame_tag dom_id(artist, :tracks), target: "_self",
+ loading: :lazy, src: tracks_artist_path(artist, page: page + 1) do %>
+ loading tracks...
+ <% end %>
+ <% end %>
+<% end %>
diff --git a/app/views/artists/show.html.erb b/app/views/artists/show.html.erb
index f2443fc..a98d14b 100644
--- a/app/views/artists/show.html.erb
+++ b/app/views/artists/show.html.erb
@@ -1,24 +1,9 @@
-
+<%= render partial: "header", locals: {artist:} %>
-
+
-
<%= render tracks, enqueueble: true %>
-
diff --git a/app/views/artists/tracks.html.erb b/app/views/artists/tracks.html.erb
new file mode 100644
index 0000000..4134c0f
--- /dev/null
+++ b/app/views/artists/tracks.html.erb
@@ -0,0 +1,5 @@
+<%= render partial: "header", locals: {artist:} %>
+
+
+
+<%= render "tracks", artist:, tracks:, page: 0 %>
diff --git a/app/views/tracks/_track.html.erb b/app/views/tracks/_track.html.erb
index 0f9f646..6ec839d 100644
--- a/app/views/tracks/_track.html.erb
+++ b/app/views/tracks/_track.html.erb
@@ -1,10 +1,10 @@
-<%# locals: (track:, track_counter: nil, track_iteration: nil, deletable: false, enqueueble: false) -%>
+<%# locals: (track:, track_counter: nil, track_iteration: nil, deletable: false, enqueueble: false, offset: 0) -%>
-
<% if track.id == current_track&.id %>
<% else %>
- <%= track_counter + 1 %>
+ <%= offset + track_counter + 1 %>
<% end %>
<% if current_user&.live_station&.live? %>
diff --git a/config/routes.rb b/config/routes.rb
index 652514e..08427ff 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -5,7 +5,10 @@
post "sign_up", to: "registrations#create"
delete "sign_out", to: "sessions#destroy", as: :sign_out
- resources :artists, only: [:show]
+ resources :artists, only: [:show] do
+ get :tracks, on: :member
+ end
+
resources :albums, only: [:show] do
patch :play, on: :member
end