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 74ead7d106
commit 45d3b32488
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 9 deletions

View File

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

View File

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