Fix `Settings::FeaturedTagsController` (#19418)

Regression from #19409
main^2
Yamagishi Kazutoshi 2 years ago committed by GitHub
parent 74ead7d106
commit 45d3b32488
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      app/controllers/settings/featured_tags_controller.rb
  2. 10
      app/services/create_featured_tag_service.rb

@ -10,8 +10,9 @@ class Settings::FeaturedTagsController < Settings::BaseController
end
def create
if !featured_tag_exists?
CreateFeaturedTagService.new.call(current_account, featured_tag_params[:name])
@featured_tag = CreateFeaturedTagService.new.call(current_account, featured_tag_params[:name], force: false)
if @featured_tag.valid?
redirect_to settings_featured_tags_path
else
set_featured_tags
@ -28,10 +29,6 @@ class Settings::FeaturedTagsController < Settings::BaseController
private
def featured_tag_exists?
current_account.featured_tags.by_name(featured_tag_params[:name]).exists?
end
def set_featured_tag
@featured_tag = current_account.featured_tags.find(params[:id])
end

@ -3,14 +3,18 @@
class CreateFeaturedTagService < BaseService
include Payloadable
def call(account, name)
def call(account, name, force: true)
@account = account
FeaturedTag.create!(account: account, name: name).tap do |featured_tag|
ActivityPub::AccountRawDistributionWorker.perform_async(build_json(featured_tag), account.id) if @account.local?
end
rescue ActiveRecord::RecordNotUnique
FeaturedTag.by_name(name).find_by!(account: account)
rescue ActiveRecord::RecordNotUnique, ActiveRecord::RecordInvalid => e
if force && e.is_a(ActiveRecord::RecordNotUnique)
FeaturedTag.by_name(name).find_by!(account: account)
else
account.featured_tags.new(name: name)
end
end
private

Loading…
Cancel
Save