deliver retractions to services

This commit is contained in:
Benjamin Neff 2016-06-05 05:06:12 +02:00
parent 3df70bb205
commit 42995cacc0
2 changed files with 15 additions and 14 deletions

View file

@ -43,6 +43,10 @@ class Retraction
data[:target][:public]
end
def target_type
data[:target_type]
end
private
attr_reader :target

View file

@ -52,25 +52,22 @@ module Diaspora
end
def deliver_to_user_services
services.each do |service|
case object
when StatusMessage
Workers::PostToService.perform_async(service.id, object.id, opts[:url])
when Retraction
Workers::DeletePostFromService.perform_async(service.id, object.target.id)
end
if object.is_a?(StatusMessage) && opts[:service_types]
post_to_services
elsif object.is_a?(Retraction) && object.target_type == "Post"
delete_from_services
end
end
def services
if opts[:services]
opts[:services]
elsif opts[:service_types]
sender.services.where(type: opts[:service_types])
else
[]
def post_to_services
sender.services.where(type: opts[:service_types]).each do |service|
Workers::PostToService.perform_async(service.id, object.id, opts[:url])
end
end
def delete_from_services
sender.services.each {|service| Workers::DeletePostFromService.perform_async(service.id, object.target.id) }
end
end
end
end