Use same context for quote posts as the post that's being quoted (#379)
See https://akkoma.dev/AkkomaGang/akkoma/pulls/350#issuecomment-6109 When making quotes through Mast-API, they will now have the same context as the quoted post. This also results in them being showed when fetching the thread. I checked Misskey to see how it's there, and they show the quotes there as well, see e.g. <https://mk.toast.cafe/notes/98u1g0tulg>. An example from Akkoma: Co-authored-by: ilja <git@ilja.space> Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/379 Reviewed-by: floatingghost <hannah@coffee-and-dreams.uk> Co-authored-by: ilja <akkoma.dev@ilja.space> Co-committed-by: ilja <akkoma.dev@ilja.space>
This commit is contained in:
		
							parent
							
								
									b8f280b4b5
								
							
						
					
					
						commit
						745e15468e
					
				
					 4 changed files with 7 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -177,7 +177,7 @@ defp to_and_cc(draft) 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -230,12 +230,13 @@ def get_content_type(content_type) 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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2023,6 +2023,7 @@ test "posting a quote", %{conn: conn} 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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue