diff options
Diffstat (limited to 'app/models/status.rb')
-rw-r--r-- | app/models/status.rb | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/app/models/status.rb b/app/models/status.rb index 001437795..f21a2087e 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -82,6 +82,7 @@ class Status < ApplicationRecord has_one :status_stat, inverse_of: :status has_one :poll, inverse_of: :status, dependent: :destroy has_one :destructing_status, inverse_of: :status, dependent: :destroy + has_one :defederating_status, inverse_of: :status, dependent: :destroy has_one :imported_status, inverse_of: :status, dependent: :destroy has_one :sharekey, inverse_of: :status, dependent: :destroy @@ -284,6 +285,10 @@ class Status < ApplicationRecord end def delete_after=(value) + if defederate_after && defederate_after < (Time.now.utc + 5.minutes + value) + value = 5.minutes + value + end + if destructing_status.nil? DestructingStatus.create!(status_id: id, delete_after: Time.now.utc + value) else @@ -291,6 +296,20 @@ class Status < ApplicationRecord end end + def defederate_after + defederating_status&.defederate_after + end + + def defederate_after=(value) + return unless delete_after.nil? || delete_after >= (Time.now.utc + 5.minutes + value) + + if defederating_status.nil? + DefederatingStatus.create!(status_id: id, defederate_after: Time.now.utc + value) + else + defederating_status.defederate_after = Time.now.utc + value + end + end + def mark_for_mass_destruction! @marked_for_mass_destruction = true end |