Skip to content
Snippets Groups Projects
Commit 5c99e304 authored by Eugen Rochko's avatar Eugen Rochko
Browse files

Deleting statuses, deletion propagation

parent 75b3339a
No related branches found
Tags v0.1.0
No related merge requests found
...@@ -16,12 +16,12 @@ Mastodon is a federated microblogging engine. An alternative implementation of t ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment