Add ability to manage which websites can credit you in link previews (#31819)
This commit is contained in:
parent
3929e3c6d2
commit
e0c27a5047
92 changed files with 381 additions and 160 deletions
|
@ -51,6 +51,7 @@
|
|||
# reviewed_at :datetime
|
||||
# requested_review_at :datetime
|
||||
# indexable :boolean default(FALSE), not null
|
||||
# attribution_domains :string default([]), is an Array
|
||||
#
|
||||
|
||||
class Account < ApplicationRecord
|
||||
|
@ -88,6 +89,7 @@ class Account < ApplicationRecord
|
|||
include Account::Merging
|
||||
include Account::Search
|
||||
include Account::StatusesSearch
|
||||
include Account::AttributionDomains
|
||||
include DomainMaterializable
|
||||
include DomainNormalizable
|
||||
include Paginable
|
||||
|
|
25
app/models/concerns/account/attribution_domains.rb
Normal file
25
app/models/concerns/account/attribution_domains.rb
Normal file
|
@ -0,0 +1,25 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Account::AttributionDomains
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
validates :attribution_domains_as_text, domain: { multiline: true }, lines: { maximum: 100 }, if: -> { local? && will_save_change_to_attribution_domains? }
|
||||
end
|
||||
|
||||
def attribution_domains_as_text
|
||||
self[:attribution_domains].join("\n")
|
||||
end
|
||||
|
||||
def attribution_domains_as_text=(str)
|
||||
self[:attribution_domains] = str.split.filter_map do |line|
|
||||
line.strip.delete_prefix('*.')
|
||||
end
|
||||
end
|
||||
|
||||
def can_be_attributed_from?(domain)
|
||||
segments = domain.split('.')
|
||||
variants = segments.map.with_index { |_, i| segments[i..].join('.') }.to_set
|
||||
self[:attribution_domains].to_set.intersect?(variants)
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue