mirror of
https://github.com/glitch-soc/mastodon.git
synced 2025-12-27 04:46:41 +00:00
27 lines
736 B
Ruby
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
|