You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
944 B

  1. # frozen_string_literal: true
  2. class DirectoriesController < ApplicationController
  3. layout 'public'
  4. before_action :set_instance_presenter
  5. before_action :set_tag, only: :show
  6. before_action :set_tags
  7. before_action :set_accounts
  8. def index
  9. render :index
  10. end
  11. def show
  12. render :index
  13. end
  14. private
  15. def set_tag
  16. @tag = Tag.discoverable.find_by!(name: params[:id].downcase)
  17. end
  18. def set_tags
  19. @tags = Tag.discoverable.limit(30)
  20. end
  21. def set_accounts
  22. @accounts = Account.searchable.discoverable.page(params[:page]).per(50).tap do |query|
  23. query.merge!(Account.tagged_with(@tag.id)) if @tag
  24. if popular_requested?
  25. query.merge!(Account.popular)
  26. else
  27. query.merge!(Account.by_recent_status)
  28. end
  29. end
  30. end
  31. def set_instance_presenter
  32. @instance_presenter = InstancePresenter.new
  33. end
  34. def popular_requested?
  35. request.path.ends_with?('/popular')
  36. end
  37. end