diff options
Diffstat (limited to 'app/models/account.rb')
-rw-r--r-- | app/models/account.rb | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/app/models/account.rb b/app/models/account.rb index 8b384f212..301dc6c45 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -360,6 +360,29 @@ class Account < ApplicationRecord shared_inbox_url.presence || inbox_url end + def max_visibility_for_domain(domain) + return 'public' if domain.blank? + + domain_permissions.find_by(domain: domain)&.visibility || 'public' + end + + def visibility_for_domain(domain) + v = visibility.to_s + + case max_visibility_for_domain(domain) + when 'public' + v + when 'unlisted' + v == 'public' ? 'unlisted' : v + when 'private' + %w(public unlisted).include?(v) ? 'private' : v + when 'direct' + 'direct' + else + v != 'direct' ? 'limited' : 'direct' + end + end + class Field < ActiveModelSerializers::Model attributes :name, :value, :verified_at, :account, :errors |