Fix addressing
This commit is contained in:
		
							parent
							
								
									641184fc7a
								
							
						
					
					
						commit
						96212b2e32
					
				
					 3 changed files with 23 additions and 18 deletions
				
			
		| 
						 | 
				
			
			@ -4,6 +4,7 @@
 | 
			
		|||
 | 
			
		||||
defmodule Pleroma.Object.Fetcher do
 | 
			
		||||
  alias Pleroma.HTTP
 | 
			
		||||
  alias Pleroma.Maps
 | 
			
		||||
  alias Pleroma.Object
 | 
			
		||||
  alias Pleroma.Object.Containment
 | 
			
		||||
  alias Pleroma.Repo
 | 
			
		||||
| 
						 | 
				
			
			@ -124,12 +125,14 @@ def fetch_object_from_id(id, options \\ []) do
 | 
			
		|||
  defp prepare_activity_params(data) do
 | 
			
		||||
    %{
 | 
			
		||||
      "type" => "Create",
 | 
			
		||||
      "to" => data["to"] || [],
 | 
			
		||||
      "cc" => data["cc"] || [],
 | 
			
		||||
      # Should we seriously keep this attributedTo thing?
 | 
			
		||||
      "actor" => data["actor"] || data["attributedTo"],
 | 
			
		||||
      "object" => data
 | 
			
		||||
    }
 | 
			
		||||
    |> Maps.put_if_present("to", data["to"])
 | 
			
		||||
    |> Maps.put_if_present("cc", data["cc"])
 | 
			
		||||
    |> Maps.put_if_present("bto", data["bto"])
 | 
			
		||||
    |> Maps.put_if_present("bcc", data["bcc"])
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def fetch_object_from_id!(id, options \\ []) do
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,9 +9,14 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do
 | 
			
		|||
  alias Pleroma.Web.ActivityPub.Transmogrifier
 | 
			
		||||
  alias Pleroma.Web.ActivityPub.Utils
 | 
			
		||||
 | 
			
		||||
  def cast_recipients(message, field, field_fallback \\ []) do
 | 
			
		||||
  def cast_and_filter_recipients(message, field, follower_collection, field_fallback \\ []) do
 | 
			
		||||
    {:ok, data} = ObjectValidators.Recipients.cast(message[field] || field_fallback)
 | 
			
		||||
 | 
			
		||||
    data =
 | 
			
		||||
      Enum.reject(data, fn x ->
 | 
			
		||||
        String.ends_with?(x, "/followers") and x != follower_collection
 | 
			
		||||
      end)
 | 
			
		||||
 | 
			
		||||
    Map.put(message, field, data)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -24,11 +29,10 @@ def fix_object_defaults(data) do
 | 
			
		|||
    data
 | 
			
		||||
    |> Map.put("context", context)
 | 
			
		||||
    |> Map.put("context_id", context_id)
 | 
			
		||||
    |> cast_recipients("to")
 | 
			
		||||
    |> cast_recipients("cc")
 | 
			
		||||
    |> cast_recipients("bto")
 | 
			
		||||
    |> cast_recipients("bcc")
 | 
			
		||||
    |> Transmogrifier.fix_explicit_addressing(follower_collection)
 | 
			
		||||
    |> cast_and_filter_recipients("to", follower_collection)
 | 
			
		||||
    |> cast_and_filter_recipients("cc", follower_collection)
 | 
			
		||||
    |> cast_and_filter_recipients("bto", follower_collection)
 | 
			
		||||
    |> cast_and_filter_recipients("bcc", follower_collection)
 | 
			
		||||
    |> Transmogrifier.fix_implicit_addressing(follower_collection)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -36,11 +40,10 @@ def fix_activity_addressing(activity, _meta) do
 | 
			
		|||
    %User{follower_address: follower_collection} = User.get_cached_by_ap_id(activity["actor"])
 | 
			
		||||
 | 
			
		||||
    activity
 | 
			
		||||
    |> cast_recipients("to")
 | 
			
		||||
    |> cast_recipients("cc")
 | 
			
		||||
    |> cast_recipients("bto")
 | 
			
		||||
    |> cast_recipients("bcc")
 | 
			
		||||
    |> Transmogrifier.fix_explicit_addressing(follower_collection)
 | 
			
		||||
    |> cast_and_filter_recipients("to", follower_collection)
 | 
			
		||||
    |> cast_and_filter_recipients("cc", follower_collection)
 | 
			
		||||
    |> cast_and_filter_recipients("bto", follower_collection)
 | 
			
		||||
    |> cast_and_filter_recipients("bcc", follower_collection)
 | 
			
		||||
    |> Transmogrifier.fix_implicit_addressing(follower_collection)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -63,11 +63,10 @@ defp fix_addressing(data, object) do
 | 
			
		|||
    %User{follower_address: follower_collection} = User.get_cached_by_ap_id(data["actor"])
 | 
			
		||||
 | 
			
		||||
    data
 | 
			
		||||
    |> CommonFixes.cast_recipients("to", object["to"])
 | 
			
		||||
    |> CommonFixes.cast_recipients("cc", object["cc"])
 | 
			
		||||
    |> CommonFixes.cast_recipients("bto", object["bto"])
 | 
			
		||||
    |> CommonFixes.cast_recipients("bcc", object["bcc"])
 | 
			
		||||
    |> Transmogrifier.fix_explicit_addressing(follower_collection)
 | 
			
		||||
    |> CommonFixes.cast_and_filter_recipients("to", follower_collection, object["to"])
 | 
			
		||||
    |> CommonFixes.cast_and_filter_recipients("cc", follower_collection, object["cc"])
 | 
			
		||||
    |> CommonFixes.cast_and_filter_recipients("bto", follower_collection, object["bto"])
 | 
			
		||||
    |> CommonFixes.cast_and_filter_recipients("bcc", follower_collection, object["bcc"])
 | 
			
		||||
    |> Transmogrifier.fix_implicit_addressing(follower_collection)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue