Add /api/v1/accounts/familiar_followers to REST API (#17700)

* Add `/api/v1/accounts/familiar_followers` to REST API

* Change hide network preference to be stored consistently for local and remote accounts

* Add dummy classes to migration

* Apply suggestions from code review

Co-authored-by: Claire <claire.github-309c@sitedethib.com>

Co-authored-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
Eugen Rochko 2022-03-07 09:36:47 +01:00 committed by GitHub
parent c439e13e12
commit edf09ec747
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 169 additions and 32 deletions

View file

@ -0,0 +1,25 @@
# frozen_string_literal: true
class Api::V1::Accounts::FamiliarFollowersController < Api::BaseController
before_action -> { doorkeeper_authorize! :read, :'read:follows' }
before_action :require_user!
before_action :set_accounts
def index
render json: familiar_followers.accounts, each_serializer: REST::FamiliarFollowersSerializer
end
private
def set_accounts
@accounts = Account.without_suspended.where(id: account_ids).select('id, hide_collections').index_by(&:id).values_at(*account_ids).compact
end
def familiar_followers
FamiliarFollowersPresenter.new(@accounts, current_user.account_id)
end
def account_ids
Array(params[:id]).map(&:to_i)
end
end

View file

@ -15,13 +15,13 @@ class FollowerAccountsController < ApplicationController
format.html do
expires_in 0, public: true unless user_signed_in?
next if @account.user_hides_network?
next if @account.hide_collections?
follows
end
format.json do
raise Mastodon::NotPermittedError if page_requested? && @account.user_hides_network?
raise Mastodon::NotPermittedError if page_requested? && @account.hide_collections?
expires_in(page_requested? ? 0 : 3.minutes, public: public_fetch_mode?)
@ -82,7 +82,7 @@ class FollowerAccountsController < ApplicationController
end
def restrict_fields_to
if page_requested? || !@account.user_hides_network?
if page_requested? || !@account.hide_collections?
# Return all fields
else
%i(id type total_items)

View file

@ -15,13 +15,13 @@ class FollowingAccountsController < ApplicationController
format.html do
expires_in 0, public: true unless user_signed_in?
next if @account.user_hides_network?
next if @account.hide_collections?
follows
end
format.json do
raise Mastodon::NotPermittedError if page_requested? && @account.user_hides_network?
raise Mastodon::NotPermittedError if page_requested? && @account.hide_collections?
expires_in(page_requested? ? 0 : 3.minutes, public: public_fetch_mode?)
@ -82,7 +82,7 @@ class FollowingAccountsController < ApplicationController
end
def restrict_fields_to
if page_requested? || !@account.user_hides_network?
if page_requested? || !@account.hide_collections?
# Return all fields
else
%i(id type total_items)

View file

@ -47,7 +47,6 @@ class Settings::PreferencesController < Settings::BaseController
:setting_system_font_ui,
:setting_noindex,
:setting_theme,
:setting_hide_network,
:setting_aggregate_reblogs,
:setting_show_application,
:setting_advanced_layout,

View file

@ -20,7 +20,7 @@ class Settings::ProfilesController < Settings::BaseController
private
def account_params
params.require(:account).permit(:display_name, :note, :avatar, :header, :locked, :bot, :discoverable, fields_attributes: [:name, :value])
params.require(:account).permit(:display_name, :note, :avatar, :header, :locked, :bot, :discoverable, :hide_collections, fields_attributes: [:name, :value])
end
def set_account