Files
fizzy/app/models/user/day_timeline.rb
T
Jorge Manrubia 8de84ad329 Revert "Fix highlights being skipped"
This reverts commit 102ce0bf3c.
2025-09-22 14:16:35 +02:00

77 lines
1.6 KiB
Ruby

class User::DayTimeline
include Serializable
attr_reader :user, :day, :filter
delegate :today?, to: :day
def initialize(user, day, filter)
@user, @day, @filter = user, day, filter
end
def has_activity?
events.any?
end
def events
filtered_events.where(created_at: window).order(created_at: :desc)
end
def next_day
latest_event_before&.created_at
end
def earliest_time
next_day&.tomorrow&.beginning_of_day
end
def latest_time
day.yesterday.beginning_of_day
end
def has_weekly_highlights?
!filter.used? && first_day_with_activity_this_week? && weekly_highlights.present?
end
def weekly_highlights
@weekly_highlights ||= user.weekly_highlights_for(week_starts_at - 1.week)
end
def week_starts_at
day.beginning_of_week(:sunday)
end
def week_ends_at
week_starts_at + 1.week
end
def cache_key
ActiveSupport::Cache.expand_cache_key [ user, filter, day.to_date, events, Workflow.all ], "day-timeline"
end
private
def first_day_with_activity_this_week?
day.monday? || (earliest_time.present? && earliest_time < day.beginning_of_week(:monday))
end
def filtered_events
@filtered_events ||= begin
events = Event.where(collection: collections)
events = events.where(creator_id: filter.creators.ids) if filter.creators.present?
events
end
end
def collections
filter.collections.presence || user.collections
end
def latest_event_before
filtered_events.where(created_at: ...day.beginning_of_day).chronologically.last
end
def window
day.all_day
end
end