From 06509346549ca1fb049ec4e9107c247a930beb6b Mon Sep 17 00:00:00 2001 From: Brooke Kuhlmann Date: Sun, 8 Mar 2026 16:02:43 -0600 Subject: [PATCH] Fixed screen rotator to check playlist mode Necessary to ensure we immediately answer the current item of the playlist if manual. Only when the playlist is automatic, do we advance to the next item. Milestone: patch --- app/aspects/screens/rotator.rb | 11 ++++++----- spec/features/playlists_spec.rb | 4 +++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/app/aspects/screens/rotator.rb b/app/aspects/screens/rotator.rb index 56e02c7d..796d2ece 100644 --- a/app/aspects/screens/rotator.rb +++ b/app/aspects/screens/rotator.rb @@ -18,7 +18,7 @@ module Terminus if device.asleep? sleeper.call device else - find_playlist(device.playlist_id).fmap { |playlist| auto_update_current_item playlist } + find_playlist(device.playlist_id).fmap { |playlist| advance_current_item playlist } .bind { |item| obtain_screen item } end end @@ -33,11 +33,12 @@ module Terminus Failure "Unable to obtain next screen. Can't find playlist with ID: #{id.inspect}." end - def auto_update_current_item playlist + # :reek:FeatureEnvy + def advance_current_item playlist + return playlist.current_item if playlist.manual? + item_repository.next_item(after: playlist.current_item_position, playlist_id: playlist.id) - .tap do |item| - playlist_repository.auto_update_current_item playlist, item.id if item - end + .tap { |item| playlist_repository.update_current_item playlist, item } end def obtain_screen item diff --git a/spec/features/playlists_spec.rb b/spec/features/playlists_spec.rb index 54920719..4b8abfaa 100644 --- a/spec/features/playlists_spec.rb +++ b/spec/features/playlists_spec.rb @@ -53,7 +53,7 @@ RSpec.describe "Playlists", :db do expect(page).to have_content("No screens found.") - (1..3).each do |position| + items = (1..3).map do |position| Factory[ :playlist_item, playlist_id: playlist.id, @@ -62,6 +62,8 @@ RSpec.describe "Playlists", :db do ] end + Terminus::Repositories::Playlist.new.update playlist.id, current_item_id: items.first.id + visit routes.path(:playlists) click_link "Play"