From: Claire Date: Mon, 17 Jan 2022 07:28:17 +0000 (+0100) Subject: Merge branch 'main' into glitch-soc/merge-upstream X-Git-Url: https://git.xn--scling-oua.cat.family/?a=commitdiff_plain;h=2d4b4b0b4545a4dc914c71fa72638f13d21f3d4f;p=mastodon.git Merge branch 'main' into glitch-soc/merge-upstream Conflicts: - `app/controllers/accounts_controller.rb`: Upstream introduced support for private pinned toots, but glitch-soc's query was a bit different as it filtered out local-only toots. Used upstream's query, while adding local-only filtering back. - `app/controllers/activitypub/collections_controller.rb`: Same thing with regards to local-only posts. - `app/validators/status_pin_validator.rb`: Not a real conflict, but the line below was different in glitch-soc due to the configurable pinned toots limit. --- 2d4b4b0b4545a4dc914c71fa72638f13d21f3d4f diff --cc app/controllers/accounts_controller.rb index f9bd616e4,ddd38cbb0..03c07c50b --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@@ -65,6 -64,10 +65,10 @@@ class AccountsController < ApplicationC [replies_requested?, media_requested?, tag_requested?, params[:max_id].present?, params[:min_id].present?].none? end + def filtered_pinned_statuses - @account.pinned_statuses.where(visibility: [:public, :unlisted]) ++ @account.pinned_statuses.not_local_only.where(visibility: [:public, :unlisted]) + end + def filtered_statuses default_statuses.tap do |statuses| statuses.merge!(hashtag_scope) if tag_requested? diff --cc app/controllers/activitypub/collections_controller.rb index 00f3d3cba,e4e994a98..ac7ab8a0b --- a/app/controllers/activitypub/collections_controller.rb +++ b/app/controllers/activitypub/collections_controller.rb @@@ -20,7 -20,8 +20,8 @@@ class ActivityPub::CollectionsControlle def set_items case params[:id] when 'featured' - @items = for_signed_account { cache_collection(@account.pinned_statuses, Status) } + @items = for_signed_account { cache_collection(@account.pinned_statuses.not_local_only, Status) } + @items = @items.map { |item| item.distributable? ? item : ActivityPub::TagManager.instance.uri_for(item) } when 'tags' @items = for_signed_account { @account.featured_tags } when 'devices' diff --cc app/validators/status_pin_validator.rb index 16353066c,2fdd5b34f..35a101f1d --- a/app/validators/status_pin_validator.rb +++ b/app/validators/status_pin_validator.rb @@@ -6,7 -4,7 +6,7 @@@ class StatusPinValidator < ActiveModel: def validate(pin) pin.errors.add(:base, I18n.t('statuses.pin_errors.reblog')) if pin.status.reblog? pin.errors.add(:base, I18n.t('statuses.pin_errors.ownership')) if pin.account_id != pin.status.account_id - pin.errors.add(:base, I18n.t('statuses.pin_errors.private')) unless %w(public unlisted).include?(pin.status.visibility) + pin.errors.add(:base, I18n.t('statuses.pin_errors.direct')) if pin.status.direct_visibility? - pin.errors.add(:base, I18n.t('statuses.pin_errors.limit')) if pin.account.status_pins.count > 4 && pin.account.local? + pin.errors.add(:base, I18n.t('statuses.pin_errors.limit')) if pin.account.status_pins.count >= MAX_PINNED && pin.account.local? end end