diff options
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/account.rb | 54 | ||||
-rw-r--r-- | app/models/concerns/remotable.rb | 2 | ||||
-rw-r--r-- | app/models/report.rb | 4 | ||||
-rw-r--r-- | app/models/status.rb | 2 | ||||
-rw-r--r-- | app/models/user.rb | 4 |
5 files changed, 51 insertions, 15 deletions
diff --git a/app/models/account.rb b/app/models/account.rb index c84a7406d..d0c4c1a6d 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -226,11 +226,19 @@ class Account < ApplicationRecord end def fields_attributes=(attributes) - fields = [] + fields = [] + old_fields = self[:fields] || [] if attributes.is_a?(Hash) attributes.each_value do |attr| next if attr[:name].blank? + + previous = old_fields.find { |item| item['value'] == attr[:value] } + + if previous && previous['verified_at'].present? + attr[:verified_at] = previous['verified_at'] + end + fields << attr end end @@ -238,13 +246,18 @@ class Account < ApplicationRecord self[:fields] = fields end + DEFAULT_FIELDS_SIZE = 4 + def build_fields - return if fields.size >= 4 + return if fields.size >= DEFAULT_FIELDS_SIZE + + tmp = self[:fields] || [] + + (DEFAULT_FIELDS_SIZE - tmp.size).times do + tmp << { name: '', value: '' } + end - raw_fields = self[:fields] || [] - add_fields = 4 - raw_fields.size - add_fields.times { raw_fields << { name: '', value: '' } } - self.fields = raw_fields + self.fields = tmp end def magic_key @@ -297,17 +310,32 @@ class Account < ApplicationRecord end class Field < ActiveModelSerializers::Model - attributes :name, :value, :account, :errors + attributes :name, :value, :verified_at, :account, :errors + + def initialize(account, attributes) + @account = account + @attributes = attributes + @name = attributes['name'].strip[0, 255] + @value = attributes['value'].strip[0, 255] + @verified_at = attributes['verified_at']&.to_datetime + @errors = {} + end + + def verified? + verified_at.present? + end + + def verifiable? + value.present? && value.start_with?('http://', 'https://') + end - def initialize(account, attr) - @account = account - @name = attr['name'].strip[0, 255] - @value = attr['value'].strip[0, 255] - @errors = {} + def mark_verified! + @verified_at = Time.now.utc + @attributes['verified_at'] = @verified_at end def to_h - { name: @name, value: @value } + { name: @name, value: @value, verified_at: @verified_at } end end diff --git a/app/models/concerns/remotable.rb b/app/models/concerns/remotable.rb index c17f19a60..9372a963b 100644 --- a/app/models/concerns/remotable.rb +++ b/app/models/concerns/remotable.rb @@ -18,7 +18,7 @@ module Remotable return end - return if !%w(http https).include?(parsed_url.scheme) || parsed_url.host.empty? || self[attribute_name] == url + return if !%w(http https).include?(parsed_url.scheme) || parsed_url.host.blank? || self[attribute_name] == url begin Request.new(:get, url).perform do |response| diff --git a/app/models/report.rb b/app/models/report.rb index efe385b2d..2804020f5 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -60,6 +60,10 @@ class Report < ApplicationRecord !action_taken? end + def unresolved_siblings? + Report.where.not(id: id).where(target_account_id: target_account_id).unresolved.exists? + end + def history time_range = created_at..updated_at diff --git a/app/models/status.rb b/app/models/status.rb index f9c0c68d9..028927cc3 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -248,7 +248,7 @@ class Status < ApplicationRecord def as_direct_timeline(account, limit = 20, max_id = nil, since_id = nil, cache_ids = false) # direct timeline is mix of direct message from_me and to_me. - # 2 querys are executed with pagination. + # 2 queries are executed with pagination. # constant expression using arel_table is required for partial index # _from_me part does not require any timeline filters diff --git a/app/models/user.rb b/app/models/user.rb index 9e529019c..6022a5eb0 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -224,6 +224,10 @@ class User < ApplicationRecord settings.notification_emails['digest'] end + def allows_report_emails? + settings.notification_emails['report'] + end + def hides_network? @hides_network ||= settings.hide_network end |