class Public::Api::V1::Portals::ArticlesController < PublicController
  before_action :ensure_custom_domain_request, only: [:show, :index]
  before_action :portal
  before_action :set_category, except: [:index]
  before_action :set_article, only: [:show]
  layout 'portal'

  def index
    @articles = @portal.articles
    @articles = @articles.search(list_params) if list_params.present?
  end

  def show; end

  private

  def set_article
    @article = @category.articles.find(params[:id])
    @parsed_content = render_article_content(@article.content)
  end

  def set_category
    @category = @portal.categories.find_by!(slug: params[:category_slug]) if params[:category_slug].present?
  end

  def portal
    @portal ||= Portal.find_by!(slug: params[:slug], archived: false)
  end

  def list_params
    params.permit(:query)
  end

  def render_article_content(content)
    # rubocop:disable Rails/OutputSafety
    CommonMarker.render_html(content).html_safe
    # rubocop:enable Rails/OutputSafety
  end
end
