From: ThibG Date: Sun, 10 Nov 2019 22:04:48 +0000 (+0100) Subject: Fix already-known remote private toots not being searchable by URL (#12336) X-Git-Url: https://git.xn--scling-oua.cat.family/?a=commitdiff_plain;h=0d5f3ae33135f2cae28c13df6bba63d396dd08cc;p=mastodon.git 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` --- diff --git a/app/services/resolve_url_service.rb b/app/services/resolve_url_service.rb index aa883597a..4e971a4b8 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