Deleting statuses, deletion propagation

This commit is contained in:
Eugen Rochko 2016-03-16 10:58:58 +01:00
parent 75b3339a99
commit 5c99e304e5
5 changed files with 18 additions and 12 deletions

View File

@ -16,12 +16,12 @@ Mastodon is a federated microblogging engine. An alternative implementation of t
- REST API, including home and mention timelines - REST API, including home and mention timelines
- OAuth2 provider system for the API - OAuth2 provider system for the API
- Upload header image for profile page - Upload header image for profile page
- Deleting statuses, deletion propagation
Missing: Missing:
- Media attachments (photos, videos) - Media attachments (photos, videos)
- UI to post, reblog, favourite, follow and unfollow - UI to post, reblog, favourite, follow and unfollow
- Deleting statuses, deletion propagation
- Streaming API - Streaming API
## Configuration ## Configuration

View File

@ -147,8 +147,8 @@ module AtomBuilderHelper
def include_entry(xml, stream_entry) def include_entry(xml, stream_entry)
unique_id xml, stream_entry.created_at, stream_entry.activity_id, stream_entry.activity_type unique_id xml, stream_entry.created_at, stream_entry.activity_id, stream_entry.activity_type
published_at xml, stream_entry.activity.created_at published_at xml, stream_entry.created_at
updated_at xml, stream_entry.activity.updated_at updated_at xml, stream_entry.updated_at
title xml, stream_entry.title title xml, stream_entry.title
content xml, stream_entry.content content xml, stream_entry.content
verb xml, stream_entry.verb verb xml, stream_entry.verb

View File

@ -12,7 +12,7 @@ class Feed
return PrecomputeFeedService.new.(@type, @account).take(limit) if unhydrated.empty? && offset == 0 return PrecomputeFeedService.new.(@type, @account).take(limit) if unhydrated.empty? && offset == 0
Status.where(id: unhydrated).with_includes.with_counters.each { |status| status_map[status.id.to_s] = status } Status.where(id: unhydrated).with_includes.with_counters.each { |status| status_map[status.id.to_s] = status }
return unhydrated.map { |id| status_map[id] } return unhydrated.map { |id| status_map[id] }.compact
end end
private private

View File

@ -4,7 +4,7 @@ class Status < ActiveRecord::Base
belongs_to :thread, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :replies belongs_to :thread, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :replies
belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblogs belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblogs
has_one :stream_entry, as: :activity, dependent: :destroy has_one :stream_entry, as: :activity
has_many :favourites, inverse_of: :status, dependent: :destroy has_many :favourites, inverse_of: :status, dependent: :destroy
has_many :reblogs, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblog, dependent: :destroy has_many :reblogs, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblog, dependent: :destroy

View File

@ -5,11 +5,11 @@ class StreamEntry < ActiveRecord::Base
validates :account, :activity, presence: true validates :account, :activity, presence: true
def object_type def object_type
targeted? ? :activity : self.activity.object_type orphaned? ? :activity : (targeted? ? :activity : self.activity.object_type)
end end
def verb def verb
self.activity.verb orphaned? ? :delete : self.activity.verb
end end
def targeted? def targeted?
@ -17,15 +17,15 @@ class StreamEntry < ActiveRecord::Base
end end
def target def target
self.activity.target orphaned? ? nil : self.activity.target
end end
def title def title
self.activity.title orphaned? ? nil : self.activity.title
end end
def content def content
self.activity.content orphaned? ? nil : self.activity.content
end end
def threaded? def threaded?
@ -33,10 +33,16 @@ class StreamEntry < ActiveRecord::Base
end end
def thread def thread
self.activity.thread orphaned? ? nil : self.activity.thread
end end
def mentions def mentions
self.activity.mentions orphaned? ? [] : self.activity.mentions
end
private
def orphaned?
self.activity.nil?
end end
end end