From 0d5f3ae33135f2cae28c13df6bba63d396dd08cc Mon Sep 17 00:00:00 2001 From: ThibG Date: Sun, 10 Nov 2019 23:04:48 +0100 Subject: [PATCH] Fix already-known remote private toots not being searchable by URL (#12336) * Fix already-known remote private toots not being searchable by URL Whenever an URL search fails, and an account is provided, try getting a private status matching that URL from database. * Fix searching by `id` field instead of `uri` --- app/services/resolve_url_service.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/services/resolve_url_service.rb b/app/services/resolve_url_service.rb index aa883597a46..4e971a4b8e1 100644 --- a/app/services/resolve_url_service.rb +++ b/app/services/resolve_url_service.rb @@ -24,6 +24,12 @@ class ResolveURLService < BaseService status = FetchRemoteStatusService.new.call(resource_url, body, protocol) authorize_with @on_behalf_of, status, :show? unless status.nil? status + elsif fetched_resource.nil? && @on_behalf_of.present? + # It may happen that the resource is a private toot, and thus not fetchable, + # but we can return the toot if we already know about it. + status = Status.find_by(uri: @url) || Status.find_by(url: @url) + authorize_with @on_behalf_of, status, :show? unless status.nil? + status end end