Class: Decidim::Admin::DestroyPrivateUsersFollowsJob

Inherits:
ApplicationJob
  • Object
show all
Defined in:
app/jobs/decidim/admin/destroy_private_users_follows_job.rb

Instance Method Summary collapse

Instance Method Details

#destroy_children_follows(follows, space) ⇒ Object



27
28
29
30
31
32
33
34
# File 'app/jobs/decidim/admin/destroy_private_users_follows_job.rb', line 27

def destroy_children_follows(follows, space)
  follows.map do |follow|
    object = follow.followable.presence
    next unless object.respond_to?(:decidim_component_id)

    follow.destroy if space.component_ids.include?(object.decidim_component_id)
  end
end

#perform(decidim_user_id, space) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/jobs/decidim/admin/destroy_private_users_follows_job.rb', line 8

def perform(decidim_user_id, space)
  return unless space.respond_to?(:private_space?)

  return unless space.private_space?

  return if space.respond_to?(:is_transparent) && space.is_transparent?

  user = Decidim::User.find_by(id: decidim_user_id)

  return if user.blank?

  return if space.respond_to?(:can_participate?) && space.can_participate?(user)

  follows = Decidim::Follow.where(user: user)
  follows.where(followable: space).destroy_all

  destroy_children_follows(follows, space)
end