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.created_at

    # Only mark things as new since your last visit
    if scope.user.previous_visit_at.present?
      return false if object.created_at < scope.user.previous_visit_at
    end


    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