Move by_domain/local interaction check to filter (#39216)

This commit is contained in:
Matt Jankowski 2026-06-01 10:52:19 -04:00 committed by GitHub
parent 50b6bbe379
commit 8d4f9a97fe
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 9 additions and 6 deletions

View File

@ -5,9 +5,6 @@ module Admin
def index
authorize :custom_emoji, :index?
# If filtering by local emojis, remove by_domain filter.
params.delete(:by_domain) if params[:local].present?
# If filtering by domain, ensure remote filter is set.
if params[:by_domain].present?
params.delete(:local)

View File

@ -19,7 +19,7 @@ class CustomEmojiFilter
def results
scope = CustomEmoji.alphabetic
params.each do |key, value|
relevant_params.each do |key, value|
next if IGNORED_PARAMS.include?(key.to_s)
scope.merge!(scope_for(key, value)) if value.present?
@ -30,6 +30,12 @@ class CustomEmojiFilter
private
def relevant_params
params.tap do |args|
args.delete(:by_domain) if args[:local].present?
end
end
def scope_for(key, value)
case key.to_s
when 'local'

View File

@ -12,9 +12,9 @@ RSpec.describe CustomEmojiFilter do
context 'when params have values' do
context 'when local' do
let(:params) { { local: true } }
let(:params) { { local: true, by_domain: 'a' } }
it 'returns ActiveRecord::Relation' do
it 'ignores domain and returns ActiveRecord::Relation' do
expect(subject).to be_a(ActiveRecord::Relation)
expect(subject).to contain_exactly(custom_emoji_domain_nil)
end