diff --git a/app/controllers/all_resources_controller.rb b/app/controllers/all_resources_controller.rb index 2fd7489..698fb03 100644 --- a/app/controllers/all_resources_controller.rb +++ b/app/controllers/all_resources_controller.rb @@ -2,18 +2,16 @@ class AllResourcesController < ApplicationController before_action :require_user def index - video_results = VideoResults.new.create_videos - params[:category] = 'yoga' if params[:category].nil? - videos = find_all_by_category(video_results, params[:category]) - @facade = PlaylistFacade.new(videos, params[:video_id]) - @playlist_items = @facade.videos.paginate(page: params[:page], per_page: 5) + @facade = PlaylistFacade.new(video_results, facade_params) end private - def find_all_by_category(videos, category) - videos.find_all do |video| - video.category == category - end + def video_results + @video_results ||= VideoResults.new.create_videos + end + + def facade_params + params.permit(:category, :video_id, :page) end end diff --git a/app/controllers/videos_controller.rb b/app/controllers/videos_controller.rb index 5427142..11ba456 100644 --- a/app/controllers/videos_controller.rb +++ b/app/controllers/videos_controller.rb @@ -5,9 +5,12 @@ def index videos = current_user.suggested_videos return if videos.nil? - params[:category] = 'yoga' if params[:category].nil? - videos = videos.select { |video| video.category == params[:category] } - @facade = PlaylistFacade.new(videos, params[:video_id]) - @playlist_items = @facade.videos.paginate(page: params[:page], per_page: 5) + @facade = PlaylistFacade.new(videos, facade_params) + end + + private + + def facade_params + params.permit(:category, :video_id, :page) end end diff --git a/app/facades/playlist_facade.rb b/app/facades/playlist_facade.rb index 7528b44..4a8b6a4 100644 --- a/app/facades/playlist_facade.rb +++ b/app/facades/playlist_facade.rb @@ -1,18 +1,34 @@ class PlaylistFacade - attr_reader :videos, :video_id + attr_reader :video_results, :params - def initialize(videos, video_id = nil) - @videos = videos - @video_id = video_id + def initialize(video_results, params) + @video_results = video_results + @params = params end def current_video - if @video_id - @videos.find { |video| video.video_id == @video_id } - elsif @videos.nil? - nil - else - @videos.first - end + return nil if videos.nil? + + filtered_videos.find { |video| video.video_id == video_id } + end + + def current_video_id + params&.dig(:video_id) || filtered_videos.first.video_id + end + + def category + params&.dig(:category) || 'yoga' + end + + def paginated_videos + filtered_videos.paginate(page: page, per_page: 5) + end + + def page + params&.dig(:page).blank? ? 1 : params&.dig(:page) + end + + def filtered_videos + video_results.find_all { |video| video.category == category } end end diff --git a/app/views/all_resources/index.html.erb b/app/views/all_resources/index.html.erb index 596fcfd..95784b2 100644 --- a/app/views/all_resources/index.html.erb +++ b/app/views/all_resources/index.html.erb @@ -3,7 +3,7 @@