Retrospring/app/models/user/inbox_methods.rb

30 lines
746 B
Ruby
Raw Normal View History

# frozen_string_literal: true
module User::InboxMethods
include CursorPaginatable
define_cursor_paginator :cursored_inbox, :ordered_inbox
2023-01-28 12:17:08 -08:00
# @return [ActiveRecord::Relation<Inbox>] the user's inbox entries
def ordered_inbox
inboxes
2023-01-28 12:17:08 -08:00
.includes(:question, user: :profile)
.order(:created_at)
.reverse_order
end
2023-02-25 06:46:11 -08:00
def unread_inbox_count
Rails.cache.fetch(inbox_cache_key) do
count = Inbox.where(new: true, user_id: id).count(:id)
2023-02-25 06:46:11 -08:00
# Returning +nil+ here in order to not display a counter
# at all when there isn't anything in the user's inbox
return nil unless count.positive?
count
2023-02-25 06:46:11 -08:00
end
end
def inbox_cache_key = "#{cache_key}/unread_inbox_count-#{inbox_updated_at}"
end