diff --git a/app/models/account.rb b/app/models/account.rb index 5fa1f0cebf6..01644fdc92b 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -31,6 +31,7 @@ # outbox_url :string default(""), not null # shared_inbox_url :string default(""), not null # followers_url :string default(""), not null +# following_url :string default(""), not null # protocol :integer default("ostatus"), not null # memorial :boolean default(FALSE), not null # moved_to_account_id :bigint(8) @@ -123,6 +124,7 @@ class Account < ApplicationRecord validates_with EmptyProfileFieldNamesValidator, if: -> { local? && will_save_change_to_fields? } with_options on: :create, if: :local? do validates :followers_url, absence: true + validates :following_url, absence: true validates :inbox_url, absence: true validates :shared_inbox_url, absence: true validates :uri, absence: true diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb index 201f7513b9b..eb67daf7e8f 100644 --- a/app/services/activitypub/process_account_service.rb +++ b/app/services/activitypub/process_account_service.rb @@ -102,6 +102,7 @@ class ActivityPub::ProcessAccountService < BaseService @account.outbox_url = valid_collection_uri(@json['outbox']) @account.shared_inbox_url = valid_collection_uri(@json['endpoints'].is_a?(Hash) ? @json['endpoints']['sharedInbox'] : @json['sharedInbox']) @account.followers_url = valid_collection_uri(@json['followers']) + @account.following_url = valid_collection_uri(@json['following']) @account.url = url || @uri @account.uri = @uri @account.actor_type = actor_type diff --git a/db/migrate/20250912082651_add_following_url_to_accounts.rb b/db/migrate/20250912082651_add_following_url_to_accounts.rb new file mode 100644 index 00000000000..8f9f3c63d63 --- /dev/null +++ b/db/migrate/20250912082651_add_following_url_to_accounts.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddFollowingURLToAccounts < ActiveRecord::Migration[8.0] + def change + add_column :accounts, :following_url, :string, default: '', null: false + end +end diff --git a/db/schema.rb b/db/schema.rb index 583ea900084..3b3c1bdfe5f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[8.0].define(version: 2025_09_11_163952) do +ActiveRecord::Schema[8.0].define(version: 2025_09_12_082651) do # These are extensions that must be enabled in order to support this database enable_extension "pg_catalog.plpgsql" @@ -198,6 +198,7 @@ ActiveRecord::Schema[8.0].define(version: 2025_09_11_163952) do t.datetime "requested_review_at", precision: nil t.boolean "indexable", default: false, null: false t.string "attribution_domains", default: [], array: true + t.string "following_url", default: "", null: false t.index "(((setweight(to_tsvector('simple'::regconfig, (display_name)::text), 'A'::\"char\") || setweight(to_tsvector('simple'::regconfig, (username)::text), 'B'::\"char\")) || setweight(to_tsvector('simple'::regconfig, (COALESCE(domain, ''::character varying))::text), 'C'::\"char\")))", name: "search_index", using: :gin t.index "lower((username)::text), COALESCE(lower((domain)::text), ''::text)", name: "index_accounts_on_username_and_domain_lower", unique: true t.index ["domain", "id"], name: "index_accounts_on_domain_and_id"