From b7e5ca780c764f2e23d5e92afd41bfa82cce2039 Mon Sep 17 00:00:00 2001 From: Mike Dalessio Date: Tue, 25 Mar 2025 15:42:23 -0400 Subject: [PATCH] Extract the EventsTimeline controller concern --- app/controllers/concerns/events_timeline.rb | 44 +++++++++++++++++++++ app/controllers/events_controller.rb | 44 +++------------------ 2 files changed, 49 insertions(+), 39 deletions(-) create mode 100644 app/controllers/concerns/events_timeline.rb diff --git a/app/controllers/concerns/events_timeline.rb b/app/controllers/concerns/events_timeline.rb new file mode 100644 index 000000000..7b4e98e2e --- /dev/null +++ b/app/controllers/concerns/events_timeline.rb @@ -0,0 +1,44 @@ +module EventsTimeline + extend ActiveSupport::Concern + + include BucketFilterable + + included do + before_action :set_activity_day + end + + private + def set_activity_day + @activity_day = if params[:day].present? + Time.zone.parse(params[:day]) + else + Time.zone.now + end + rescue ArgumentError + raise ActionController::RoutingError + end + + def events_for_activity_day + user_events.where(created_at: @activity_day.all_day). + group_by { |event| [ event.created_at.hour, helpers.event_column(event) ] }. + map { |hour_col, events| + [ hour_col, + events.uniq { |e| e.action == "boosted" ? [ e.creator_id, e.bubble_id ] : e.id } + ] + } + end + + def latest_event_before_activity_day + user_events.where(created_at: ...@activity_day.beginning_of_day).chronologically.last + end + + def user_events + Event.where(bubble: user_bubbles, creator: Current.account.users) + end + + def user_bubbles + Current.user.accessible_bubbles + .published_or_drafted_by(Current.user) + .where(bucket_id: bucket_filter) + end +end diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index 7c2b35064..ba6df4e27 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -1,47 +1,13 @@ class EventsController < ApplicationController - include BucketFilterable - before_action :set_activity_day + include EventsTimeline def index update_bucket_filter + @buckets = Current.user.buckets.alphabetically - @events = events_by_hour_and_column @filters = Current.user.filters.all - @next_day = latest_event_before_today&.created_at + + @events = events_for_activity_day + @next_day = latest_event_before_activity_day&.created_at end - - private - def events_by_hour_and_column - user_events.where(created_at: @activity_day.all_day). - group_by { |event| [ event.created_at.hour, helpers.event_column(event) ] }. - map { |hour_col, events| - [ hour_col, - events.uniq { |e| e.action == "boosted" ? [ e.creator_id, e.bubble_id ] : e.id } - ] - } - end - - def latest_event_before_today - user_events.where(created_at: ...@activity_day.beginning_of_day).chronologically.last - end - - def user_events - Event.where(bubble: user_bubbles, creator: Current.account.users) - end - - def user_bubbles - Current.user.accessible_bubbles - .published_or_drafted_by(Current.user) - .where(bucket_id: bucket_filter) - end - - def set_activity_day - @activity_day = if params[:day].present? - Time.zone.parse(params[:day]) - else - Time.zone.now - end - rescue ArgumentError - raise ActionController::RoutingError - end end