diff options
author | Thibaut Girka <thib@sitedethib.com> | 2018-12-09 13:28:09 +0100 |
---|---|---|
committer | Thibaut Girka <thib@sitedethib.com> | 2018-12-09 16:08:04 +0100 |
commit | e7f1bfdc2d528f137299ba0c3ab2a30f2f91f53c (patch) | |
tree | 2693ffce4d340a9b77a7ca52c856aaae7af8c913 /app/controllers/directories_controller.rb | |
parent | e3682c9c1750e5e7e5d2f817e29f6760a18400ca (diff) | |
parent | 81bda7d67c984c9bfcb5bca94e50cec6405b492e (diff) |
Merge branch 'master' into glitch-soc/merge-upstream
Conflicts: - app/javascript/packs/public.js - app/models/user.rb - config/settings.yml - db/schema.rb Moved public.js changes to settings.js.
Diffstat (limited to 'app/controllers/directories_controller.rb')
-rw-r--r-- | app/controllers/directories_controller.rb | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/app/controllers/directories_controller.rb b/app/controllers/directories_controller.rb new file mode 100644 index 000000000..265fd5fab --- /dev/null +++ b/app/controllers/directories_controller.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +class DirectoriesController < ApplicationController + layout 'public' + + before_action :set_instance_presenter + before_action :set_tag, only: :show + before_action :set_tags + before_action :set_accounts + + def index + render :index + end + + def show + render :index + end + + private + + def set_tag + @tag = Tag.discoverable.find_by!(name: params[:id].downcase) + end + + def set_tags + @tags = Tag.discoverable.limit(30) + end + + def set_accounts + @accounts = Account.searchable.discoverable.page(params[:page]).per(50).tap do |query| + query.merge!(Account.tagged_with(@tag.id)) if @tag + + if popular_requested? + query.merge!(Account.popular) + else + query.merge!(Account.by_recent_status) + end + end + end + + def set_instance_presenter + @instance_presenter = InstancePresenter.new + end + + def popular_requested? + request.path.ends_with?('/popular') + end +end |