From 12cd097e7ca208280ec4cd3ffd558aac79b67428 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 8 Sep 2021 23:33:23 +0200 Subject: Fix addressing of remote groups' followers (#16700) Fixes #16699 --- app/lib/activitypub/tag_manager.rb | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'app') diff --git a/app/lib/activitypub/tag_manager.rb b/app/lib/activitypub/tag_manager.rb index f6b5e10d3..f6b9741fa 100644 --- a/app/lib/activitypub/tag_manager.rb +++ b/app/lib/activitypub/tag_manager.rb @@ -64,6 +64,10 @@ class ActivityPub::TagManager account_status_replies_url(target.account, target, page_params) end + def followers_uri_for(target) + target.local? ? account_followers_url(target) : target.followers_url.presence + end + # Primary audience of a status # Public statuses go out to primarily the public collection # Unlisted and private statuses go out primarily to the followers collection @@ -80,17 +84,17 @@ class ActivityPub::TagManager account_ids = status.active_mentions.pluck(:account_id) to = status.account.followers.where(id: account_ids).each_with_object([]) do |account, result| result << uri_for(account) - result << account_followers_url(account) if account.group? + result << followers_uri_for(account) if account.group? end to.concat(FollowRequest.where(target_account_id: status.account_id, account_id: account_ids).each_with_object([]) do |request, result| result << uri_for(request.account) - result << account_followers_url(request.account) if request.account.group? - end) + result << followers_uri_for(request.account) if request.account.group? + end).compact else status.active_mentions.each_with_object([]) do |mention, result| result << uri_for(mention.account) - result << account_followers_url(mention.account) if mention.account.group? - end + result << followers_uri_for(mention.account) if mention.account.group? + end.compact end end end @@ -118,17 +122,17 @@ class ActivityPub::TagManager account_ids = status.active_mentions.pluck(:account_id) cc.concat(status.account.followers.where(id: account_ids).each_with_object([]) do |account, result| result << uri_for(account) - result << account_followers_url(account) if account.group? - end) + result << followers_uri_for(account) if account.group? + end.compact) cc.concat(FollowRequest.where(target_account_id: status.account_id, account_id: account_ids).each_with_object([]) do |request, result| result << uri_for(request.account) - result << account_followers_url(request.account) if request.account.group? - end) + result << followers_uri_for(request.account) if request.account.group? + end.compact) else cc.concat(status.active_mentions.each_with_object([]) do |mention, result| result << uri_for(mention.account) - result << account_followers_url(mention.account) if mention.account.group? - end) + result << followers_uri_for(mention.account) if mention.account.group? + end.compact) end end -- cgit From 209f8f3a60e683e00de315c37f028570e90c554d Mon Sep 17 00:00:00 2001 From: Holger Date: Thu, 9 Sep 2021 05:33:36 +0800 Subject: use relative path for `scope` (#16714) Use relative path for `scope` in web manifest to allow users use PWA correctly via alternate domains. --- app/serializers/manifest_serializer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/serializers/manifest_serializer.rb b/app/serializers/manifest_serializer.rb index dafe8f55b..4786aa760 100644 --- a/app/serializers/manifest_serializer.rb +++ b/app/serializers/manifest_serializer.rb @@ -48,7 +48,7 @@ class ManifestSerializer < ActiveModel::Serializer end def scope - root_url + '/' end def share_target -- cgit From db57bff11d6a9e101d8aa0adc635367365c83901 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 13 Sep 2021 18:59:37 +0200 Subject: Stop setting a shortcode to newly-created media attachments (#16730) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Stop setting a shortcode to newly-created media attachments The WebUI has stopped using the “short media URL” in ages. This isn't used anywhere except for mail notifications. Deprecating it would allow us to eventually get rid of at least a database column and corruption-prone index, as well as a controller. * Fix tests --- app/models/media_attachment.rb | 11 ++--------- app/serializers/rest/media_attachment_serializer.rb | 2 +- app/views/notification_mailer/_status.html.haml | 2 +- spec/controllers/media_controller_spec.rb | 6 +++--- 4 files changed, 7 insertions(+), 14 deletions(-) (limited to 'app') diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 3515f6895..66d800b7b 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -255,7 +255,7 @@ class MediaAttachment < ApplicationRecord after_commit :reset_parent_cache, on: :update before_create :prepare_description, unless: :local? - before_create :set_shortcode + before_create :set_unknown_type before_create :set_processing after_post_process :set_meta @@ -298,15 +298,8 @@ class MediaAttachment < ApplicationRecord private - def set_shortcode + def set_unknown_type self.type = :unknown if file.blank? && !type_changed? - - return unless local? - - loop do - self.shortcode = SecureRandom.urlsafe_base64(14) - break if MediaAttachment.find_by(shortcode: shortcode).nil? - end end def prepare_description diff --git a/app/serializers/rest/media_attachment_serializer.rb b/app/serializers/rest/media_attachment_serializer.rb index a24f95315..f27dda832 100644 --- a/app/serializers/rest/media_attachment_serializer.rb +++ b/app/serializers/rest/media_attachment_serializer.rb @@ -40,7 +40,7 @@ class REST::MediaAttachmentSerializer < ActiveModel::Serializer end def text_url - object.local? ? medium_url(object) : nil + object.local? && object.shortcode.present? ? medium_url(object) : nil end def meta diff --git a/app/views/notification_mailer/_status.html.haml b/app/views/notification_mailer/_status.html.haml index 9b7e1b65c..31460a76e 100644 --- a/app/views/notification_mailer/_status.html.haml +++ b/app/views/notification_mailer/_status.html.haml @@ -37,7 +37,7 @@ %p - status.media_attachments.each do |a| - if status.local? - = link_to medium_url(a), medium_url(a) + = link_to full_asset_url(a.file.url(:original)), full_asset_url(a.file.url(:original)) - else = link_to a.remote_url, a.remote_url diff --git a/spec/controllers/media_controller_spec.rb b/spec/controllers/media_controller_spec.rb index 2925aed59..6651e9d84 100644 --- a/spec/controllers/media_controller_spec.rb +++ b/spec/controllers/media_controller_spec.rb @@ -8,14 +8,14 @@ describe MediaController do describe '#show' do it 'redirects to the file url when attached to a status' do status = Fabricate(:status) - media_attachment = Fabricate(:media_attachment, status: status) + media_attachment = Fabricate(:media_attachment, status: status, shortcode: 'foo') get :show, params: { id: media_attachment.to_param } expect(response).to redirect_to(media_attachment.file.url(:original)) end it 'responds with missing when there is not an attached status' do - media_attachment = Fabricate(:media_attachment, status: nil) + media_attachment = Fabricate(:media_attachment, status: nil, shortcode: 'foo') get :show, params: { id: media_attachment.to_param } expect(response).to have_http_status(404) @@ -29,7 +29,7 @@ describe MediaController do it 'raises when not permitted to view' do status = Fabricate(:status, visibility: :direct) - media_attachment = Fabricate(:media_attachment, status: status) + media_attachment = Fabricate(:media_attachment, status: status, shortcode: 'foo') get :show, params: { id: media_attachment.to_param } expect(response).to have_http_status(404) -- cgit