From 77e587129a2f1b5b891034c03eaf9a2f6c7df406 Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 7 Nov 2023 11:44:59 +0100 Subject: [PATCH] Fix verified links being re-checked on all profile fetches Fixes #27755 --- app/models/account.rb | 12 ++++++++++++ app/services/activitypub/process_account_service.rb | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/models/account.rb b/app/models/account.rb index a25ebc4aaf1..4b7597dad98 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -324,6 +324,18 @@ class Account < ApplicationRecord end end + def fields=(fields) + old_fields = self[:fields] || [] + old_fields = [] if old_fields.is_a?(Hash) + + self[:fields] = fields.map do |field| + verified_at = old_fields.find { |item| item['value'] == field['value'] }&.fetch('verified_at', nil) + next field if verified_at.blank? + + field.merge('verified_at' => verified_at) + end + end + def fields_attributes=(attributes) fields = [] old_fields = self[:fields] || [] diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index 1304ca8242b..32df8448d84 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -232,7 +232,7 @@ class ActivityPub::ProcessAccountService < BaseService def property_values return unless @json['attachment'].is_a?(Array) - as_array(@json['attachment']).select { |attachment| attachment['type'] == 'PropertyValue' }.map { |attachment| attachment.slice('name', 'value') } + as_array(@json['attachment']).filter_map { |attachment| attachment.slice('name', 'value') if attachment['type'] == 'PropertyValue' } end def mismatching_origin?(url)