Files
mastodon/app/services/create_collection_service.rb

27 lines
736 B
Ruby

# frozen_string_literal: true
class CreateCollectionService
def call(params, account)
@account = account
@accounts_to_add = Account.find(params.delete(:account_ids) || [])
@collection = Collection.new(params.merge({ account:, local: true }))
build_items
@collection.save!
@collection
end
private
def build_items
return if @accounts_to_add.empty?
@account.preload_relations!(@accounts_to_add.map(&:id))
@accounts_to_add.each do |account_to_add|
raise Mastodon::NotPermittedError, I18n.t('accounts.errors.cannot_be_added_to_collections') unless AccountPolicy.new(@account, account_to_add).feature?
@collection.collection_items.build(account: account_to_add)
end
end
end