diff options
author | Thibaut Girka <thib@sitedethib.com> | 2020-11-08 14:20:35 +0100 |
---|---|---|
committer | Thibaut Girka <thib@sitedethib.com> | 2020-11-08 14:20:35 +0100 |
commit | 0437d70628bcd852c303432562c74202554fe9cb (patch) | |
tree | 27b6ff5abf280517ae6a8abd585f15e02d35fd58 /app/models | |
parent | cfb16b9b70a50ec5451c9aebb2c35d3a44701311 (diff) | |
parent | 3134691948aeacb16b7386ed77bbea4581beec40 (diff) |
Merge branch 'master' into glitch-soc/merge-upstream
Conflicts: - `app/controllers/follower_accounts_controller.rb`: Conflict due to upstream changing suspension logic while glitch-soc has an extra option to hide followers count. Ported upstream changes.
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/account.rb | 16 | ||||
-rw-r--r-- | app/models/admin/account_action.rb | 2 |
2 files changed, 14 insertions, 4 deletions
diff --git a/app/models/account.rb b/app/models/account.rb index 14df68058..641e984cd 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -51,6 +51,7 @@ # header_storage_schema_version :integer # devices_url :string # sensitized_at :datetime +# suspension_origin :integer # class Account < ApplicationRecord @@ -77,6 +78,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? } @@ -226,17 +228,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 diff --git a/app/models/admin/account_action.rb b/app/models/admin/account_action.rb index 11ce737f3..bf222391f 100644 --- a/app/models/admin/account_action.rb +++ b/app/models/admin/account_action.rb @@ -127,7 +127,7 @@ class Admin::AccountAction def handle_suspend! authorize(target_account, :suspend?) log_action(:suspend, target_account) - target_account.suspend! + target_account.suspend!(origin: :local) end def text_for_warning |