~cytrogen/masto-fe

b0bf6216e63ba22475de8242b8c790084eeda798 — Claire 2 years ago 62ab750
Fix /api/v1/instance/domain_blocks being unconditionally cached (#24662)

M app/controllers/api/v1/instances/domain_blocks_controller.rb => app/controllers/api/v1/instances/domain_blocks_controller.rb +7 -2
@@ 6,10 6,15 @@ class Api::V1::Instances::DomainBlocksController < Api::BaseController
  before_action :require_enabled_api!
  before_action :set_domain_blocks

  vary_by ''
  vary_by '', if: -> { Setting.show_domain_blocks == 'all' }

  def index
    cache_even_if_authenticated!
    if Setting.show_domain_blocks == 'all'
      cache_even_if_authenticated!
    else
      cache_if_unauthenticated!
    end

    render json: @domain_blocks, each_serializer: REST::DomainBlockSerializer, with_comment: (Setting.show_domain_blocks_rationale == 'all' || (Setting.show_domain_blocks_rationale == 'users' && user_signed_in?))
  end


M app/controllers/concerns/cache_concern.rb => app/controllers/concerns/cache_concern.rb +2 -2
@@ 156,8 156,8 @@ module CacheConcern
  end

  class_methods do
    def vary_by(value)
      before_action do |controller|
    def vary_by(value, **kwargs)
      before_action(**kwargs) do |controller|
        response.headers['Vary'] = value.respond_to?(:call) ? controller.instance_exec(&value) : value
      end
    end