about summary refs log tree commit diff
path: root/app/services/process_feed_service.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2016-03-16 10:46:15 +0100
committerEugen Rochko <eugen@zeonfederated.com>2016-03-16 10:46:15 +0100
commit75b3339a99bd32c59004effd05dcd0edfc0b7c2a (patch)
tree047a33e5e866527c43c098ed50896e1e53dd6a29 /app/services/process_feed_service.rb
parent1eb65e2accab3dbc84e1a3ed3fd7c4940769be99 (diff)
Respect "delete" verb on remote feeds
Diffstat (limited to 'app/services/process_feed_service.rb')
-rw-r--r--app/services/process_feed_service.rb14
1 files changed, 12 insertions, 2 deletions
diff --git a/app/services/process_feed_service.rb b/app/services/process_feed_service.rb
index 7d8563a58..605f615fd 100644
--- a/app/services/process_feed_service.rb
+++ b/app/services/process_feed_service.rb
@@ -16,15 +16,21 @@ class ProcessFeedService < BaseService
 
       status = Status.find_by(uri: activity_id(entry))
 
+      # If we already have a post and the verb is now "delete", we gotta delete it and move on!
+      if verb(entry) == :delete
+        delete_post!(status)
+        next
+      end
+
       next unless status.nil?
 
       status = Status.new(uri: activity_id(entry), url: activity_link(entry), account: account, text: content(entry), created_at: published(entry), updated_at: updated(entry))
 
-      if object_type(entry) == :comment
+      if object_type(entry) == :comment && verb(entry) == :post
         add_reply!(entry, status)
       elsif verb(entry) == :share
         add_reblog!(entry, status)
-      else
+      elsif verb(entry) == :post
         add_post!(entry, status)
       end
 
@@ -71,6 +77,10 @@ class ProcessFeedService < BaseService
     status.save!
   end
 
+  def delete_post!(status)
+    status.destroy!
+  end
+
   def find_original_status(_xml, id)
     return nil if id.nil?