Allow dashes in domain name search
[akkoma] / lib / pleroma / user / import.ex
index e458021c87b1fdb35a1369238bd96c3c4e002dec..95c4ef34ea200a6966b0600cf0fa592925cff4be 100644 (file)
@@ -1,5 +1,5 @@
 # Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.User.Import do
@@ -12,47 +12,32 @@ defmodule Pleroma.User.Import do
   require Logger
 
   @spec perform(atom(), User.t(), list()) :: :ok | list() | {:error, any()}
-  def perform(:mutes_import, %User{} = user, [_ | _] = identifiers) do
-    Enum.map(
-      identifiers,
-      fn identifier ->
-        with {:ok, %User{} = muted_user} <- User.get_or_fetch(identifier),
-             {:ok, _} <- User.mute(user, muted_user) do
-          muted_user
-        else
-          error -> handle_error(:mutes_import, identifier, error)
-        end
-      end
-    )
+  def perform(:mutes_import, %User{} = user, identifier) do
+    with {:ok, %User{} = muted_user} <- User.get_or_fetch(identifier),
+         {:ok, _} <- User.mute(user, muted_user) do
+      muted_user
+    else
+      error -> handle_error(:mutes_import, identifier, error)
+    end
   end
 
-  def perform(:blocks_import, %User{} = blocker, [_ | _] = identifiers) do
-    Enum.map(
-      identifiers,
-      fn identifier ->
-        with {:ok, %User{} = blocked} <- User.get_or_fetch(identifier),
-             {:ok, _block} <- CommonAPI.block(blocker, blocked) do
-          blocked
-        else
-          error -> handle_error(:blocks_import, identifier, error)
-        end
-      end
-    )
+  def perform(:blocks_import, %User{} = blocker, identifier) do
+    with {:ok, %User{} = blocked} <- User.get_or_fetch(identifier),
+         {:ok, _block} <- CommonAPI.block(blocker, blocked) do
+      blocked
+    else
+      error -> handle_error(:blocks_import, identifier, error)
+    end
   end
 
-  def perform(:follow_import, %User{} = follower, [_ | _] = identifiers) do
-    Enum.map(
-      identifiers,
-      fn identifier ->
-        with {:ok, %User{} = followed} <- User.get_or_fetch(identifier),
-             {:ok, follower} <- User.maybe_direct_follow(follower, followed),
-             {:ok, _, _, _} <- CommonAPI.follow(follower, followed) do
-          followed
-        else
-          error -> handle_error(:follow_import, identifier, error)
-        end
-      end
-    )
+  def perform(:follow_import, %User{} = follower, identifier) do
+    with {:ok, %User{} = followed} <- User.get_or_fetch(identifier),
+         {:ok, follower, followed} <- User.maybe_direct_follow(follower, followed),
+         {:ok, _, _, _} <- CommonAPI.follow(follower, followed) do
+      followed
+    else
+      error -> handle_error(:follow_import, identifier, error)
+    end
   end
 
   def perform(_, _, _), do: :ok
@@ -62,24 +47,24 @@ defmodule Pleroma.User.Import do
     error
   end
 
-  def blocks_import(%User{} = blocker, [_ | _] = identifiers) do
-    BackgroundWorker.enqueue(
-      "blocks_import",
-      %{"user_id" => blocker.id, "identifiers" => identifiers}
+  defp enqueue_many(op, user, identifiers) do
+    Enum.map(
+      identifiers,
+      fn identifier ->
+        BackgroundWorker.enqueue(op, %{"user_id" => user.id, "identifier" => identifier})
+      end
     )
   end
 
+  def blocks_import(%User{} = blocker, [_ | _] = identifiers) do
+    enqueue_many("blocks_import", blocker, identifiers)
+  end
+
   def follow_import(%User{} = follower, [_ | _] = identifiers) do
-    BackgroundWorker.enqueue(
-      "follow_import",
-      %{"user_id" => follower.id, "identifiers" => identifiers}
-    )
+    enqueue_many("follow_import", follower, identifiers)
   end
 
   def mutes_import(%User{} = user, [_ | _] = identifiers) do
-    BackgroundWorker.enqueue(
-      "mutes_import",
-      %{"user_id" => user.id, "identifiers" => identifiers}
-    )
+    enqueue_many("mutes_import", user, identifiers)
   end
 end