mirror of
https://github.com/mastodon/mastodon.git
synced 2024-12-22 00:58:18 +00:00
parent
74ead7d106
commit
45d3b32488
|
@ -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…
Reference in a new issue