Deleting statuses, deletion propagation
This commit is contained in:
parent
75b3339a99
commit
5c99e304e5
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Reference in a new issue