Fix Settings::FeaturedTagsController (#19418)

Regression from #19409
This commit is contained in:
Yamagishi Kazutoshi 2022-10-23 06:14:58 +09:00 committed by GitHub
parent 64b46b9ae5
commit 9e8b91092a
2 changed files with 10 additions and 9 deletions

View file

@ -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

View file

@ -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
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