Handle delete Salmons, todo: clean up timelines

This commit is contained in:
Eugen Rochko 2016-09-04 14:43:00 +02:00
parent 1022d682dc
commit a289c1d52f
4 changed files with 115 additions and 1 deletions

View File

@ -91,7 +91,7 @@ class ProcessFeedService < BaseService
end end
def delete_post!(status) def delete_post!(status)
status.destroy! RemoveStatusService.new.(status)
end end
def find_original_status(_xml, id) def find_original_status(_xml, id)

View File

@ -32,6 +32,8 @@ class ProcessInteractionService < BaseService
add_post!(body, account) if mentions_account?(xml, target_account) add_post!(body, account) if mentions_account?(xml, target_account)
when :share when :share
add_post!(body, account) unless status(xml).nil? add_post!(body, account) unless status(xml).nil?
when :delete
delete_post!(xml, account)
end end
end end
end end
@ -62,6 +64,16 @@ class ProcessInteractionService < BaseService
account.unfollow!(target_account) account.unfollow!(target_account)
end end
def delete_post!(xml, account)
status = Status.find(activity_id(xml))
return if status.nil?
if account.id == status.account_id
RemoveStatusService.new.(status)
end
end
def favourite!(xml, from_account) def favourite!(xml, from_account)
current_status = status(xml) current_status = status(xml)
current_status.favourites.where(account: from_account).first_or_create!(account: from_account) current_status.favourites.where(account: from_account).first_or_create!(account: from_account)

View File

@ -0,0 +1,10 @@
class RemoveStatusService < BaseService
def call(status)
status.destroy!
# TODO
# Remove from timelines of self, followers, and mentioned accounts
# For remote mentioned accounts, send delete Salmon
# Push delete event through ActionCable
end
end

92
spec/fixtures/push/reblog.atom vendored Normal file
View File

@ -0,0 +1,92 @@
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:media="http://purl.org/syndication/atommedia" xmlns:statusnet="http://status.net/schema/api/1/">
<id>tag:gs.smuglo.li,2016-09-03:noticeId=661684:objectType=note</id>
<title>dtluna repeated a notice by gargron</title>
<content type="html">RT @&lt;a href=&quot;https://mastodon.social/users/Gargron&quot; class=&quot;h-card mention&quot; title=&quot;Eugen&quot;&gt;gargron&lt;/a&gt; Stormbending from Devin Townsend's upcoming album Transcendence is now on YouTube &lt;a href=&quot;https://www.youtube.com/watch?v=8s9qh77gj6Y&quot; title=&quot;https://www.youtube.com/watch?v=8s9qh77gj6Y&quot; class=&quot;attachment thumbnail&quot; id=&quot;attachment-122081&quot; rel=&quot;nofollow external&quot;&gt;https://www.youtube.com/watch?v=8s9qh77gj6Y&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://gs.smuglo.li/notice/661684"/>
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
<published>2016-09-03T13:48:19+00:00</published>
<updated>2016-09-03T13:48:19+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://gs.smuglo.li/user/537</uri>
<name>dtluna</name>
<summary>Sex Goddess of Fediverse. Parabola GNU/Linux-libre user. PGP: 0xA490DBE4 XMPP and email: dtluna@memeware.net</summary>
<link rel="alternate" type="text/html" href="https://gs.smuglo.li/dtluna"/>
<link rel="avatar" type="image/jpeg" media:width="385" media:height="385" href="https://gs.smuglo.li/avatar/537-original-20160807184048.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="https://gs.smuglo.li/avatar/537-96-20160807184048.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="https://gs.smuglo.li/avatar/537-48-20160807184048.jpeg"/>
<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="https://gs.smuglo.li/avatar/537-24-20160807184049.jpeg"/>
<poco:preferredUsername>dtluna</poco:preferredUsername>
<poco:displayName>dtluna</poco:displayName>
<poco:note>Sex Goddess of Fediverse. Parabola GNU/Linux-libre user. PGP: 0xA490DBE4 XMPP and email: dtluna@memeware.net</poco:note>
<poco:address>
<poco:formatted>Minsk, Belarus</poco:formatted>
</poco:address>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>https://liberapay.com/dtluna/</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
<followers url="https://gs.smuglo.li/dtluna/subscribers"></followers>
<statusnet:profile_info local_id="537"></statusnet:profile_info>
</author>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
<id>tag:mastodon.social,2016-09-03:objectId=5984:objectType=Status</id>
<title></title>
<content type="html">Stormbending from Devin Townsend's upcoming album Transcendence is now on YouTube &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/watch?v=8s9qh77gj6Y&quot;&gt;https://www.youtube.com/watch?v=8s9qh77gj6Y&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/Gargron/updates/6066"/>
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
<published>2016-09-03T13:47:59+00:00</published>
<updated>2016-09-03T13:47:59+00:00</updated>
<author>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<uri>https://mastodon.social/users/Gargron</uri>
<name>gargron</name>
<summary>Software engineer, free time musician and enthusiast. Likes cats. Warning: May contain memes</summary>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/Gargron"/>
<link rel="avatar" type="image/gif" media:width="96" media:height="96" href="https://gs.smuglo.li/avatar/1292-original-20160903122640.gif"/>
<link rel="avatar" type="image/gif" media:width="96" media:height="96" href="https://gs.smuglo.li/avatar/1292-original-20160903122640.gif"/>
<link rel="avatar" type="image/gif" media:width="48" media:height="48" href="https://gs.smuglo.li/avatar/1292-48-20160903122642.gif"/>
<link rel="avatar" type="image/gif" media:width="24" media:height="24" href="https://gs.smuglo.li/avatar/1292-24-20160903122736.gif"/>
<poco:preferredUsername>gargron</poco:preferredUsername>
<poco:displayName>Eugen</poco:displayName>
<poco:note>Software engineer, free time musician and enthusiast. Likes cats. Warning: May contain memes</poco:note>
<statusnet:profile_info local_id="1292"></statusnet:profile_info>
</author>
<activity:object>
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
<id>tag:mastodon.social,2016-09-03:objectId=5984:objectType=Status</id>
<title>New note by gargron</title>
<content type="html">Stormbending from Devin Townsend's upcoming album Transcendence is now on YouTube &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/watch?v=8s9qh77gj6Y&quot;&gt;https://www.youtube.com/watch?v=8s9qh77gj6Y&lt;/a&gt;</content>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/Gargron/updates/6066"/>
<status_net notice_id="661682"></status_net>
</activity:object>
<link rel="ostatus:conversation" href="tag:gs.smuglo.li,2016-09-03:objectType=thread:nonce=aec0feafff16e2cf"/>
<ostatus:conversation>tag:gs.smuglo.li,2016-09-03:objectType=thread:nonce=aec0feafff16e2cf</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<source>
<id>https://mastodon.social/users/Gargron.atom</id>
<title>Eugen</title>
<link rel="alternate" type="text/html" href="https://mastodon.social/users/Gargron"/>
<link rel="self" type="application/atom+xml" href="https://mastodon.social/users/Gargron.atom"/>
<icon>https://gs.smuglo.li/avatar/1292-original-20160903122640.gif</icon>
<updated>2016-09-04T12:10:44+00:00</updated>
</source>
</activity:object>
<link rel="ostatus:conversation" href="tag:gs.smuglo.li,2016-09-03:objectType=thread:nonce=aec0feafff16e2cf"/>
<ostatus:conversation>tag:gs.smuglo.li,2016-09-03:objectType=thread:nonce=aec0feafff16e2cf</ostatus:conversation>
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
<source>
<id>https://gs.smuglo.li/api/statuses/user_timeline/537.atom</id>
<title>dtluna</title>
<link rel="alternate" type="text/html" href="https://gs.smuglo.li/dtluna"/>
<link rel="self" type="application/atom+xml" href="https://gs.smuglo.li/api/statuses/user_timeline/537.atom"/>
<link rel="license" href="https://creativecommons.org/licenses/by/3.0/"/>
<icon>https://gs.smuglo.li/avatar/537-96-20160807184048.jpeg</icon>
<updated>2016-09-04T01:48:58+00:00</updated>
</source>
<link rel="self" type="application/atom+xml" href="https://gs.smuglo.li/api/statuses/show/661684.atom"/>
<link rel="edit" type="application/atom+xml" href="https://gs.smuglo.li/api/statuses/show/661684.atom"/>
<statusnet:notice_info local_id="661684" source="Qvitter" repeat_of="661682"></statusnet:notice_info>
</entry>