Use same context for quote posts as the post that's being quoted
ci/woodpecker/pr/woodpecker Pipeline was successful Details

This commit is contained in:
ilja 2022-12-17 17:04:48 +01:00
parent b8f280b4b5
commit 1def175d40
4 changed files with 7 additions and 4 deletions

View File

@ -25,6 +25,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Non-admin users now cannot register `admin` scope tokens (not security-critical, they didn't work before, but you _could_ create them)
- Admin scopes will be dropped on create
- Rich media will now backoff for 20 minutes after a failure
- Quote posts are now considered as part of the same thread as the post they are quoting
- Simplified HTTP signature processing
- Rich media will now hard-exit after 5 seconds, to prevent timeline hangs

View File

@ -177,7 +177,7 @@ defmodule Pleroma.Web.CommonAPI.ActivityDraft do
end
defp context(draft) do
context = Utils.make_context(draft.in_reply_to, draft.in_reply_to_conversation)
context = Utils.make_context(draft)
%__MODULE__{draft | context: context}
end

View File

@ -230,12 +230,13 @@ defmodule Pleroma.Web.CommonAPI.Utils do
end
end
def make_context(_, %Participation{} = participation) do
def make_context(%{in_reply_to_conversation: %Participation{} = participation}) do
Repo.preload(participation, :conversation).conversation.ap_id
end
def make_context(%Activity{data: %{"context" => context}}, _), do: context
def make_context(_, _), do: Utils.generate_context_id()
def make_context(%{in_reply_to: %Activity{data: %{"context" => context}}}), do: context
def make_context(%{quote: %Activity{data: %{"context" => context}}}), do: context
def make_context(_), do: Utils.generate_context_id()
def maybe_add_attachments(parsed, _attachments, false = _no_links), do: parsed

View File

@ -2023,6 +2023,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do
assert response["quote_id"] == quoted_status.id
assert response["quote"]["id"] == quoted_status.id
assert response["quote"]["content"] == quoted_status.object.data["content"]
assert response["pleroma"]["context"] == quoted_status.data["context"]
end
test "posting a quote, quoting a status that isn't public", %{conn: conn} do