discourse/app/serializers/basic_topic_serializer.rb
Sam Saffron 87d83802b9 added option that allows users to decide when they consider topics new (default 2 days old or newer)
added site_setting to control the default new_topic_duration_minutes
added 10 minutes option for auto_track_topics_after_msecs, default bumped up to 5 mins
2013-02-14 17:36:14 +11:00

46 lines
1 KiB
Ruby

require_dependency 'age_words'
class BasicTopicSerializer < ApplicationSerializer
include ActionView::Helpers
attributes :id, :title, :reply_count, :posts_count, :highest_post_number, :image_url, :created_at,
:last_posted_at, :age, :unseen, :last_read_post_number, :unread, :new_posts
def age
AgeWords.age_words(Time.now - (object.created_at || Time.now))
end
def seen
object.user_data.present?
end
def unseen
return false if scope.blank?
return false if scope.user.blank?
return false if object.user_data.present?
return false if object.created_at < scope.user.treat_as_new_topic_start_date
true
end
def last_read_post_number
object.user_data.last_read_post_number
end
alias :include_last_read_post_number? :seen
def unread
unread_helper.unread_posts
end
alias :include_unread? :seen
def new_posts
unread_helper.new_posts
end
alias :include_new_posts? :seen
protected
def unread_helper
@unread_helper ||= Unread.new(object, object.user_data)
end
end