diff options
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/account_conversation.rb | 3 | ||||
-rw-r--r-- | app/models/media_attachment.rb | 6 | ||||
-rw-r--r-- | app/models/status.rb | 10 | ||||
-rw-r--r-- | app/models/status_stat.rb | 8 |
4 files changed, 23 insertions, 4 deletions
diff --git a/app/models/account_conversation.rb b/app/models/account_conversation.rb index b7447d805..cc6b39279 100644 --- a/app/models/account_conversation.rb +++ b/app/models/account_conversation.rb @@ -58,6 +58,9 @@ class AccountConversation < ApplicationRecord def add_status(recipient, status) conversation = find_or_initialize_by(account: recipient, conversation_id: status.conversation_id, participant_account_ids: participants_from_status(recipient, status)) + + return conversation if conversation.status_ids.include?(status.id) + conversation.status_ids << status.id conversation.unread = status.account_id != recipient.id conversation.save diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 3e3cbdaed..0f787ebc4 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -148,6 +148,7 @@ class MediaAttachment < ApplicationRecord "#{x},#{y}" end + after_commit :reset_parent_cache, on: :update before_create :prepare_description, unless: :local? before_create :set_shortcode before_post_process :set_type_and_extension @@ -252,4 +253,9 @@ class MediaAttachment < ApplicationRecord bitrate: movie.bitrate, } end + + def reset_parent_cache + return if status_id.nil? + Rails.cache.delete("statuses/#{status_id}") + end end diff --git a/app/models/status.rb b/app/models/status.rb index 438863589..f67a05b3c 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -94,6 +94,7 @@ class Status < ApplicationRecord :conversation, :status_stat, :tags, + :preview_cards, :stream_entry, active_mentions: :account, reblog: [ @@ -101,6 +102,7 @@ class Status < ApplicationRecord :application, :stream_entry, :tags, + :preview_cards, :media_attachments, :conversation, :status_stat, @@ -168,6 +170,10 @@ class Status < ApplicationRecord reblog end + def preview_card + preview_cards.first + end + def title if destroyed? "#{account.acct} deleted status" @@ -241,10 +247,6 @@ class Status < ApplicationRecord before_validation :set_local class << self - def cache_ids - left_outer_joins(:status_stat).select('statuses.id, greatest(statuses.updated_at, status_stats.updated_at) AS updated_at') - end - def selectable_visibilities visibilities.keys - %w(direct limited) end diff --git a/app/models/status_stat.rb b/app/models/status_stat.rb index 9d358776b..024c467e7 100644 --- a/app/models/status_stat.rb +++ b/app/models/status_stat.rb @@ -14,4 +14,12 @@ class StatusStat < ApplicationRecord belongs_to :status, inverse_of: :status_stat + + after_commit :reset_parent_cache + + private + + def reset_parent_cache + Rails.cache.delete("statuses/#{status_id}") + end end |