about summary refs log tree commit diff
path: root/app/models/account_domain_permission.rb
diff options
context:
space:
mode:
authorFire Demon <firedemon@creature.cafe>2020-09-01 13:28:42 -0500
committerFire Demon <firedemon@creature.cafe>2020-09-01 13:28:55 -0500
commit97a98796b4b01d9ce4c2147cacf54960a71010f2 (patch)
tree062f6df58600a4289e39c3e197163772181ea3a0 /app/models/account_domain_permission.rb
parent0dc67e07f1c53d5feae19417743fb225dfa64178 (diff)
[Future, Privacy] Add sticky domain permissions flag
Diffstat (limited to 'app/models/account_domain_permission.rb')
-rw-r--r--app/models/account_domain_permission.rb5
1 files changed, 3 insertions, 2 deletions
diff --git a/app/models/account_domain_permission.rb b/app/models/account_domain_permission.rb
index 2606c4133..9e77950f2 100644
--- a/app/models/account_domain_permission.rb
+++ b/app/models/account_domain_permission.rb
@@ -7,6 +7,7 @@
 #  account_id :bigint(8)        not null
 #  domain     :string           default(""), not null
 #  visibility :integer          default("public"), not null
+#  sticky     :boolean          default(FALSE), not null
 #
 
 class AccountDomainPermission < ApplicationRecord
@@ -40,7 +41,7 @@ class AccountDomainPermission < ApplicationRecord
       domain_permissions = normalize(domain_permissions)
       permissions = find_by(domain: domain_permissions[:domain])
       if permissions.present?
-        permissions.update(**domain_permissions)
+        permissions.update(**domain_permissions) unless permissions.sticky? && %w(direct limited private).include?(domain_permissions[:visibility].to_s)
       else
         create(**domain_permissions)
       end
@@ -51,7 +52,7 @@ class AccountDomainPermission < ApplicationRecord
       domain_permissions = normalize(domain_permissions)
       permissions = find_by(domain: domain_permissions[:domain])
       if permissions.present?
-        permissions.update!(**domain_permissions)
+        permissions.update!(**domain_permissions) unless permissions.sticky? && %w(direct limited private).include?(domain_permissions[:visibility].to_s)
       else
         create!(**domain_permissions)
       end