]> cat aescling's git repositories - mastodon.git/commitdiff
Merge branch 'main' into glitch-soc/merge-upstream
authorClaire <claire.github-309c@sitedethib.com>
Mon, 17 Jan 2022 07:28:17 +0000 (08:28 +0100)
committerClaire <claire.github-309c@sitedethib.com>
Mon, 17 Jan 2022 07:28:52 +0000 (08:28 +0100)
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.

1  2 
app/controllers/accounts_controller.rb
app/controllers/activitypub/collections_controller.rb
app/validators/status_pin_validator.rb

index f9bd616e430cbf612e333b9e24571ee4a8e2b41a,ddd38cbb01f7024203690122a31d8c27ef194130..03c07c50b060a8b4b0d5c1813c7c645919326b0d
@@@ -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
  
 -    @account.pinned_statuses.where(visibility: [:public, :unlisted])
+   def filtered_pinned_statuses
++    @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?
index 00f3d3cba86a0c8192d6bfe7b74571189adf7a79,e4e994a9855c3bfe3ccff4fe19d215ee5143b0bc..ac7ab8a0b25c0b4ce607d034367a0eee5afca3da
@@@ -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'
index 16353066c16337a0543af24656e73cb6ff99b94d,2fdd5b34fd41e008964980bce4111a4153bc635e..35a101f1d7559b4df8168cfb25c9098d565fe120
@@@ -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