Initial attempt at updating return type
This commit is contained in:
		
							parent
							
								
									34fc0dca2e
								
							
						
					
					
						commit
						a2e03d4f3c
					
				
					 5 changed files with 37 additions and 28 deletions
				
			
		| 
						 | 
				
			
			@ -411,7 +411,7 @@ def follow_import(%User{} = follower, followed_identifiers)
 | 
			
		|||
    Enum.map(
 | 
			
		||||
      followed_identifiers,
 | 
			
		||||
      fn followed_identifier ->
 | 
			
		||||
        with %User{} = followed <- get_or_fetch(followed_identifier),
 | 
			
		||||
        with {:ok, %User{} = followed} <- get_or_fetch(followed_identifier),
 | 
			
		||||
             {:ok, follower} <- maybe_direct_follow(follower, followed),
 | 
			
		||||
             {:ok, _} <- ActivityPub.follow(follower, followed) do
 | 
			
		||||
          followed
 | 
			
		||||
| 
						 | 
				
			
			@ -492,7 +492,14 @@ def get_cached_by_id(id) do
 | 
			
		|||
 | 
			
		||||
  def get_cached_by_nickname(nickname) do
 | 
			
		||||
    key = "nickname:#{nickname}"
 | 
			
		||||
    Cachex.fetch!(:user_cache, key, fn _ -> get_or_fetch_by_nickname(nickname) end)
 | 
			
		||||
    Cachex.fetch!(:user_cache, key, fn ->
 | 
			
		||||
      user_result = get_or_fetch_by_nickname(nickname)
 | 
			
		||||
 | 
			
		||||
      case user_result do
 | 
			
		||||
        {:ok, user} -> {:commit, user}
 | 
			
		||||
        {:error, error} -> {:ignore, error}
 | 
			
		||||
      end
 | 
			
		||||
    end)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def get_cached_by_nickname_or_id(nickname_or_id) do
 | 
			
		||||
| 
						 | 
				
			
			@ -529,7 +536,7 @@ def fetch_by_nickname(nickname) do
 | 
			
		|||
 | 
			
		||||
  def get_or_fetch_by_nickname(nickname) do
 | 
			
		||||
    with %User{} = user <- get_by_nickname(nickname) do
 | 
			
		||||
      user
 | 
			
		||||
      {:ok, user}
 | 
			
		||||
    else
 | 
			
		||||
      _e ->
 | 
			
		||||
        with [_nick, _domain] <- String.split(nickname, "@"),
 | 
			
		||||
| 
						 | 
				
			
			@ -538,9 +545,9 @@ def get_or_fetch_by_nickname(nickname) do
 | 
			
		|||
            {:ok, _} = Task.start(__MODULE__, :fetch_initial_posts, [user])
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          user
 | 
			
		||||
          {:ok, user}
 | 
			
		||||
        else
 | 
			
		||||
          _e -> nil
 | 
			
		||||
          _e -> {:error, "Error"}
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			@ -939,7 +946,7 @@ def blocks_import(%User{} = blocker, blocked_identifiers) when is_list(blocked_i
 | 
			
		|||
    Enum.map(
 | 
			
		||||
      blocked_identifiers,
 | 
			
		||||
      fn blocked_identifier ->
 | 
			
		||||
        with %User{} = blocked <- get_or_fetch(blocked_identifier),
 | 
			
		||||
        with {:ok, %User{} = blocked} <- get_or_fetch(blocked_identifier),
 | 
			
		||||
             {:ok, blocker} <- block(blocker, blocked),
 | 
			
		||||
             {:ok, _} <- ActivityPub.block(blocker, blocked) do
 | 
			
		||||
          blocked
 | 
			
		||||
| 
						 | 
				
			
			@ -1157,17 +1164,19 @@ def get_or_fetch_by_ap_id(ap_id) do
 | 
			
		|||
    user = get_by_ap_id(ap_id)
 | 
			
		||||
 | 
			
		||||
    if !is_nil(user) and !User.needs_update?(user) do
 | 
			
		||||
      user
 | 
			
		||||
      {:ok, user}
 | 
			
		||||
    else
 | 
			
		||||
      user = fetch_by_ap_id(ap_id)
 | 
			
		||||
 | 
			
		||||
      if Pleroma.Config.get([:fetch_initial_posts, :enabled]) do
 | 
			
		||||
        with %User{} = user do
 | 
			
		||||
      with %User{} = user do
 | 
			
		||||
        if Pleroma.Config.get([:fetch_initial_posts, :enabled]) do
 | 
			
		||||
          {:ok, _} = Task.start(__MODULE__, :fetch_initial_posts, [user])
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      user
 | 
			
		||||
        {:ok, user}
 | 
			
		||||
      else
 | 
			
		||||
        _ -> {:error, "Could not fetch by AP id"}
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1209,7 +1218,7 @@ def public_key_from_info(%{magic_key: magic_key}) do
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def get_public_key_for_ap_id(ap_id) do
 | 
			
		||||
    with %User{} = user <- get_or_fetch_by_ap_id(ap_id),
 | 
			
		||||
    with {:ok, %User{} = user} <- get_or_fetch_by_ap_id(ap_id),
 | 
			
		||||
         {:ok, public_key} <- public_key_from_info(user.info) do
 | 
			
		||||
      {:ok, public_key}
 | 
			
		||||
    else
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,7 +15,7 @@ def get_actor do
 | 
			
		|||
 | 
			
		||||
  def follow(target_instance) do
 | 
			
		||||
    with %User{} = local_user <- get_actor(),
 | 
			
		||||
         %User{} = target_user <- User.get_or_fetch_by_ap_id(target_instance),
 | 
			
		||||
         {:ok, %User{} = target_user} <- User.get_or_fetch_by_ap_id(target_instance),
 | 
			
		||||
         {:ok, activity} <- ActivityPub.follow(local_user, target_user) do
 | 
			
		||||
      Logger.info("relay: followed instance: #{target_instance}; id=#{activity.data["id"]}")
 | 
			
		||||
      {:ok, activity}
 | 
			
		||||
| 
						 | 
				
			
			@ -28,7 +28,7 @@ def follow(target_instance) do
 | 
			
		|||
 | 
			
		||||
  def unfollow(target_instance) do
 | 
			
		||||
    with %User{} = local_user <- get_actor(),
 | 
			
		||||
         %User{} = target_user <- User.get_or_fetch_by_ap_id(target_instance),
 | 
			
		||||
         {:ok, %User{} = target_user} <- User.get_or_fetch_by_ap_id(target_instance),
 | 
			
		||||
         {:ok, activity} <- ActivityPub.unfollow(local_user, target_user) do
 | 
			
		||||
      Logger.info("relay: unfollowed instance: #{target_instance}: id=#{activity.data["id"]}")
 | 
			
		||||
      {:ok, activity}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -373,7 +373,7 @@ def handle_incoming(%{"type" => "Create", "object" => %{"type" => objtype} = obj
 | 
			
		|||
      |> fix_addressing
 | 
			
		||||
 | 
			
		||||
    with nil <- Activity.get_create_by_object_ap_id(object["id"]),
 | 
			
		||||
         %User{} = user <- User.get_or_fetch_by_ap_id(data["actor"]) do
 | 
			
		||||
         {:ok, %User{} = user} <- User.get_or_fetch_by_ap_id(data["actor"]) do
 | 
			
		||||
      object = fix_object(data["object"])
 | 
			
		||||
 | 
			
		||||
      params = %{
 | 
			
		||||
| 
						 | 
				
			
			@ -402,7 +402,7 @@ def handle_incoming(
 | 
			
		|||
        %{"type" => "Follow", "object" => followed, "actor" => follower, "id" => id} = data
 | 
			
		||||
      ) do
 | 
			
		||||
    with %User{local: true} = followed <- User.get_cached_by_ap_id(followed),
 | 
			
		||||
         %User{} = follower <- User.get_or_fetch_by_ap_id(follower),
 | 
			
		||||
         {:ok, %User{} = follower} <- User.get_or_fetch_by_ap_id(follower),
 | 
			
		||||
         {:ok, activity} <- ActivityPub.follow(follower, followed, id, false) do
 | 
			
		||||
      if not User.locked?(followed) do
 | 
			
		||||
        ActivityPub.accept(%{
 | 
			
		||||
| 
						 | 
				
			
			@ -425,7 +425,7 @@ def handle_incoming(
 | 
			
		|||
        %{"type" => "Accept", "object" => follow_object, "actor" => _actor, "id" => _id} = data
 | 
			
		||||
      ) do
 | 
			
		||||
    with actor <- get_actor(data),
 | 
			
		||||
         %User{} = followed <- User.get_or_fetch_by_ap_id(actor),
 | 
			
		||||
         {:ok, %User{} = followed} <- User.get_or_fetch_by_ap_id(actor),
 | 
			
		||||
         {:ok, follow_activity} <- get_follow_activity(follow_object, followed),
 | 
			
		||||
         {:ok, follow_activity} <- Utils.update_follow_state(follow_activity, "accept"),
 | 
			
		||||
         %User{local: true} = follower <- User.get_cached_by_ap_id(follow_activity.data["actor"]),
 | 
			
		||||
| 
						 | 
				
			
			@ -451,7 +451,7 @@ def handle_incoming(
 | 
			
		|||
        %{"type" => "Reject", "object" => follow_object, "actor" => _actor, "id" => _id} = data
 | 
			
		||||
      ) do
 | 
			
		||||
    with actor <- get_actor(data),
 | 
			
		||||
         %User{} = followed <- User.get_or_fetch_by_ap_id(actor),
 | 
			
		||||
         {:ok, %User{} = followed} <- User.get_or_fetch_by_ap_id(actor),
 | 
			
		||||
         {:ok, follow_activity} <- get_follow_activity(follow_object, followed),
 | 
			
		||||
         {:ok, follow_activity} <- Utils.update_follow_state(follow_activity, "reject"),
 | 
			
		||||
         %User{local: true} = follower <- User.get_cached_by_ap_id(follow_activity.data["actor"]),
 | 
			
		||||
| 
						 | 
				
			
			@ -475,7 +475,7 @@ def handle_incoming(
 | 
			
		|||
        %{"type" => "Like", "object" => object_id, "actor" => _actor, "id" => id} = data
 | 
			
		||||
      ) do
 | 
			
		||||
    with actor <- get_actor(data),
 | 
			
		||||
         %User{} = actor <- User.get_or_fetch_by_ap_id(actor),
 | 
			
		||||
         {:ok, %User{} = actor} <- User.get_or_fetch_by_ap_id(actor),
 | 
			
		||||
         {:ok, object} <- get_obj_helper(object_id) || fetch_obj_helper(object_id),
 | 
			
		||||
         {:ok, activity, _object} <- ActivityPub.like(actor, object, id, false) do
 | 
			
		||||
      {:ok, activity}
 | 
			
		||||
| 
						 | 
				
			
			@ -488,7 +488,7 @@ def handle_incoming(
 | 
			
		|||
        %{"type" => "Announce", "object" => object_id, "actor" => _actor, "id" => id} = data
 | 
			
		||||
      ) do
 | 
			
		||||
    with actor <- get_actor(data),
 | 
			
		||||
         %User{} = actor <- User.get_or_fetch_by_ap_id(actor),
 | 
			
		||||
         {:ok, %User{} = actor} <- User.get_or_fetch_by_ap_id(actor),
 | 
			
		||||
         {:ok, object} <- get_obj_helper(object_id) || fetch_obj_helper(object_id),
 | 
			
		||||
         public <- Visibility.is_public?(data),
 | 
			
		||||
         {:ok, activity, _object} <- ActivityPub.announce(actor, object, id, false, public) do
 | 
			
		||||
| 
						 | 
				
			
			@ -543,7 +543,7 @@ def handle_incoming(
 | 
			
		|||
    object_id = Utils.get_ap_id(object_id)
 | 
			
		||||
 | 
			
		||||
    with actor <- get_actor(data),
 | 
			
		||||
         %User{} = actor <- User.get_or_fetch_by_ap_id(actor),
 | 
			
		||||
         {:ok, %User{} = actor} <- User.get_or_fetch_by_ap_id(actor),
 | 
			
		||||
         {:ok, object} <- get_obj_helper(object_id) || fetch_obj_helper(object_id),
 | 
			
		||||
         :ok <- contain_origin(actor.ap_id, object.data),
 | 
			
		||||
         {:ok, activity} <- ActivityPub.delete(object, false) do
 | 
			
		||||
| 
						 | 
				
			
			@ -562,7 +562,7 @@ def handle_incoming(
 | 
			
		|||
        } = data
 | 
			
		||||
      ) do
 | 
			
		||||
    with actor <- get_actor(data),
 | 
			
		||||
         %User{} = actor <- User.get_or_fetch_by_ap_id(actor),
 | 
			
		||||
         {:ok, %User{} = actor} <- User.get_or_fetch_by_ap_id(actor),
 | 
			
		||||
         {:ok, object} <- get_obj_helper(object_id) || fetch_obj_helper(object_id),
 | 
			
		||||
         {:ok, activity, _} <- ActivityPub.unannounce(actor, object, id, false) do
 | 
			
		||||
      {:ok, activity}
 | 
			
		||||
| 
						 | 
				
			
			@ -580,7 +580,7 @@ def handle_incoming(
 | 
			
		|||
        } = _data
 | 
			
		||||
      ) do
 | 
			
		||||
    with %User{local: true} = followed <- User.get_cached_by_ap_id(followed),
 | 
			
		||||
         %User{} = follower <- User.get_or_fetch_by_ap_id(follower),
 | 
			
		||||
         {:ok, %User{} = follower} <- User.get_or_fetch_by_ap_id(follower),
 | 
			
		||||
         {:ok, activity} <- ActivityPub.unfollow(follower, followed, id, false) do
 | 
			
		||||
      User.unfollow(follower, followed)
 | 
			
		||||
      {:ok, activity}
 | 
			
		||||
| 
						 | 
				
			
			@ -599,7 +599,7 @@ def handle_incoming(
 | 
			
		|||
      ) do
 | 
			
		||||
    with true <- Pleroma.Config.get([:activitypub, :accept_blocks]),
 | 
			
		||||
         %User{local: true} = blocked <- User.get_cached_by_ap_id(blocked),
 | 
			
		||||
         %User{} = blocker <- User.get_or_fetch_by_ap_id(blocker),
 | 
			
		||||
         {:ok, %User{} = blocker} <- User.get_or_fetch_by_ap_id(blocker),
 | 
			
		||||
         {:ok, activity} <- ActivityPub.unblock(blocker, blocked, id, false) do
 | 
			
		||||
      User.unblock(blocker, blocked)
 | 
			
		||||
      {:ok, activity}
 | 
			
		||||
| 
						 | 
				
			
			@ -613,7 +613,7 @@ def handle_incoming(
 | 
			
		|||
      ) do
 | 
			
		||||
    with true <- Pleroma.Config.get([:activitypub, :accept_blocks]),
 | 
			
		||||
         %User{local: true} = blocked = User.get_cached_by_ap_id(blocked),
 | 
			
		||||
         %User{} = blocker = User.get_or_fetch_by_ap_id(blocker),
 | 
			
		||||
         {:ok, %User{} = blocker = User.get_or_fetch_by_ap_id(blocker),
 | 
			
		||||
         {:ok, activity} <- ActivityPub.block(blocker, blocked, id, false) do
 | 
			
		||||
      User.unfollow(blocker, blocked)
 | 
			
		||||
      User.block(blocker, blocked)
 | 
			
		||||
| 
						 | 
				
			
			@ -632,7 +632,7 @@ def handle_incoming(
 | 
			
		|||
        } = data
 | 
			
		||||
      ) do
 | 
			
		||||
    with actor <- get_actor(data),
 | 
			
		||||
         %User{} = actor <- User.get_or_fetch_by_ap_id(actor),
 | 
			
		||||
         {:ok, %User{} = actor} <- User.get_or_fetch_by_ap_id(actor),
 | 
			
		||||
         {:ok, object} <- get_obj_helper(object_id) || fetch_obj_helper(object_id),
 | 
			
		||||
         {:ok, activity, _, _} <- ActivityPub.unlike(actor, object, id, false) do
 | 
			
		||||
      {:ok, activity}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1450,7 +1450,7 @@ def suggestions(%{assigns: %{user: user}} = conn, _) do
 | 
			
		|||
              x,
 | 
			
		||||
              "id",
 | 
			
		||||
              case User.get_or_fetch(x["acct"]) do
 | 
			
		||||
                %{id: id} -> id
 | 
			
		||||
                {:ok, %User{} = %{id: id}} -> id
 | 
			
		||||
                _ -> 0
 | 
			
		||||
              end
 | 
			
		||||
            )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -312,7 +312,7 @@ def conversation_id_to_context(id) do
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def get_external_profile(for_user, uri) do
 | 
			
		||||
    with %User{} = user <- User.get_or_fetch(uri) do
 | 
			
		||||
    with {:ok, %User{} = user} <- User.get_or_fetch(uri) do
 | 
			
		||||
      {:ok, UserView.render("show.json", %{user: user, for: for_user})}
 | 
			
		||||
    else
 | 
			
		||||
      _e ->
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue