defmodule PhilomenaWeb.TopicJson do
  alias PhilomenaWeb.UserAttributionView

  def as_json(%{hidden_from_users: true}) do
    %{
      slug: nil,
      title: nil,
      post_count: nil,
      view_count: nil,
      sticky: nil,
      last_replied_to_at: nil,
      locked: nil,
      user_id: nil,
      author: nil
    }
  end

  def as_json(topic) do
    %{
      slug: topic.slug,
      title: topic.title,
      post_count: topic.post_count,
      view_count: topic.view_count,
      sticky: topic.sticky,
      last_replied_to_at: topic.last_replied_to_at,
      locked: not is_nil(topic.locked_at),
      user_id: if(not topic.anonymous, do: topic.user.id),
      author:
        if(topic.anonymous or is_nil(topic.user),
          do: UserAttributionView.anonymous_name(topic),
          else: topic.user.name
        )
    }
  end
end