0
0
Fork 0

Add support for reversible suspensions through ActivityPub (#14989)

This commit is contained in:
Eugen Rochko 2020-11-08 00:28:39 +01:00 committed by GitHub
parent ee8cf246cf
commit 3134691948
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
47 changed files with 1049 additions and 204 deletions

View file

@ -51,6 +51,7 @@
# header_storage_schema_version :integer
# devices_url :string
# sensitized_at :datetime
# suspension_origin :integer
#
class Account < ApplicationRecord
@ -73,6 +74,7 @@ class Account < ApplicationRecord
}.freeze
enum protocol: [:ostatus, :activitypub]
enum suspension_origin: [:local, :remote], _prefix: true
validates :username, presence: true
validates_with UniqueUsernameValidator, if: -> { will_save_change_to_username? }
@ -222,17 +224,25 @@ class Account < ApplicationRecord
suspended_at.present?
end
def suspend!(date = Time.now.utc)
def suspended_permanently?
suspended? && deletion_request.nil?
end
def suspended_temporarily?
suspended? && deletion_request.present?
end
def suspend!(date: Time.now.utc, origin: :local)
transaction do
create_deletion_request!
update!(suspended_at: date)
update!(suspended_at: date, suspension_origin: origin)
end
end
def unsuspend!
transaction do
deletion_request&.destroy!
update!(suspended_at: nil)
update!(suspended_at: nil, suspension_origin: nil)
end
end