Fix Dialyzer warnings
authorEgor Kislitsyn <egor@kislitsyn.com>
Tue, 25 Feb 2020 14:34:56 +0000 (18:34 +0400)
committerEgor Kislitsyn <egor@kislitsyn.com>
Tue, 25 Feb 2020 14:34:56 +0000 (18:34 +0400)
16 files changed:
lib/mix/tasks/pleroma/emoji.ex
lib/mix/tasks/pleroma/user.ex
lib/pleroma/activity.ex
lib/pleroma/activity/queries.ex
lib/pleroma/captcha/native.ex
lib/pleroma/conversation/participation.ex
lib/pleroma/mime.ex
lib/pleroma/object/containment.ex
lib/pleroma/user.ex
lib/pleroma/user/query.ex
lib/pleroma/user/search.ex
lib/pleroma/web/activity_pub/transmogrifier.ex
lib/pleroma/web/activity_pub/utils.ex
lib/pleroma/web/admin_api/search.ex
lib/pleroma/web/nodeinfo/nodeinfo_controller.ex
lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex

index 24d999707381b4ed500949db38cf4fe5cabdb1f2..74bf968fcf724e0d28ea28dae7a55aa428a84a11 100644 (file)
@@ -186,11 +186,7 @@ defmodule Mix.Tasks.Pleroma.Emoji do
 
     tmp_pack_dir = Path.join(System.tmp_dir!(), "emoji-pack-#{name}")
 
-    {:ok, _} =
-      :zip.unzip(
-        binary_archive,
-        cwd: tmp_pack_dir
-      )
+    {:ok, _} = :zip.unzip(binary_archive, cwd: String.to_charlist(tmp_pack_dir))
 
     emoji_map = Pleroma.Emoji.Loader.make_shortcode_to_file_map(tmp_pack_dir, exts)
 
index 85c9e4954afdc344d695c7f132882cf292cb1b30..ba10a705ac6bf6acf51772fec8a679436ee2e61c 100644 (file)
@@ -100,8 +100,7 @@ defmodule Mix.Tasks.Pleroma.User do
       User.perform(:delete, user)
       shell_info("User #{nickname} deleted.")
     else
-      _ ->
-        shell_error("No local user #{nickname}")
+      _ -> shell_error("No local user #{nickname}")
     end
   end
 
index 72e2256eaf00d73bb5d2d6e3e060d63965979198..7fb1f913b4e0fe0637ea6331873da8a24e0f293f 100644 (file)
@@ -310,7 +310,7 @@ defmodule Pleroma.Activity do
 
   def restrict_deactivated_users(query) do
     deactivated_users =
-      from(u in User.Query.build(deactivated: true), select: u.ap_id)
+      from(u in User.Query.build(%{deactivated: true}), select: u.ap_id)
       |> Repo.all()
 
     Activity.Queries.exclude_authors(query, deactivated_users)
index 363727c80269567041bc3fcc7b657e63fe5c5233..8d08d81ca071aee1a61e6ecd512a8beb21329b86 100644 (file)
@@ -30,7 +30,7 @@ defmodule Pleroma.Activity.Queries do
     )
   end
 
-  @spec by_author(query, String.t()) :: query
+  @spec by_author(query, User.t()) :: query
   def by_author(query \\ Activity, %User{ap_id: ap_id}) do
     from(a in query, where: a.actor == ^ap_id)
   end
index 5306fe1aa13d4e470860b31b704c1a27c41b8972..2c8db2c30d91ca355df9a004eba62e95ce280e2b 100644 (file)
@@ -10,8 +10,8 @@ defmodule Pleroma.Captcha.Native do
   @impl Service
   def new do
     case Captcha.get() do
-      {:timeout} ->
-        %{error: dgettext("errors", "Captcha timeout")}
+      :error ->
+        %{error: dgettext("errors", "Captcha error")}
 
       {:ok, answer_data, img_binary} ->
         %{
index e5d28ebffdfc786480fc417ff409d116044f76bd..d4b2555370ad92db65938a85655fb71783c4f89a 100644 (file)
@@ -133,10 +133,8 @@ defmodule Pleroma.Conversation.Participation do
       [user.id | user_ids]
       |> Enum.uniq()
       |> Enum.reduce([], fn user_id, acc ->
-        case FlakeId.Ecto.CompatType.dump(user_id) do
-          {:ok, user_id} -> [user_id | acc]
-          _ -> acc
-        end
+        {:ok, user_id} = FlakeId.Ecto.CompatType.dump(user_id)
+        [user_id | acc]
       end)
 
     conversation_subquery =
index 36771533f01336c8331ebd7d989273437212228d..08f96f7bfe1cf0cab48e7396be967ffaf0d6b758 100644 (file)
@@ -9,7 +9,7 @@ defmodule Pleroma.MIME do
   @default "application/octet-stream"
   @read_bytes 35
 
-  @spec file_mime_type(String.t()) ::
+  @spec file_mime_type(String.t(), String.t()) ::
           {:ok, content_type :: String.t(), filename :: String.t()} | {:error, any()} | :error
   def file_mime_type(path, filename) do
     with {:ok, content_type} <- file_mime_type(path),
index 25aa32f60743dc21fef01e1184539b3b70a77638..9efa50edb12d4caa7a93af9a54312363c5968da1 100644 (file)
@@ -39,15 +39,8 @@ defmodule Pleroma.Object.Containment do
     defp compare_uris(_, %URI{scheme: "tag"}), do: :ok
   end
 
-  defp compare_uris(%URI{} = id_uri, %URI{} = other_uri) do
-    if id_uri.host == other_uri.host do
-      :ok
-    else
-      :error
-    end
-  end
-
-  defp compare_uris(_, _), do: :error
+  defp compare_uris(%URI{host: host} = _id_uri, %URI{host: host} = _other_uri), do: :ok
+  defp compare_uris(_id_uri, _other_uri), do: :error
 
   @doc """
   Checks that an imported AP object's actor matches the domain it came from.
index 5ea36fea32ed1a770307db6814a8681c38df8d23..56e599ecc9494050a8db2cabd1531f4fc4049e1d 100644 (file)
@@ -853,14 +853,14 @@ defmodule Pleroma.User do
   @spec get_followers_query(User.t()) :: Ecto.Query.t()
   def get_followers_query(user), do: get_followers_query(user, nil)
 
-  @spec get_followers(User.t(), pos_integer()) :: {:ok, list(User.t())}
+  @spec get_followers(User.t(), pos_integer() | nil) :: {:ok, list(User.t())}
   def get_followers(user, page \\ nil) do
     user
     |> get_followers_query(page)
     |> Repo.all()
   end
 
-  @spec get_external_followers(User.t(), pos_integer()) :: {:ok, list(User.t())}
+  @spec get_external_followers(User.t(), pos_integer() | nil) :: {:ok, list(User.t())}
   def get_external_followers(user, page \\ nil) do
     user
     |> get_followers_query(page)
@@ -1304,7 +1304,6 @@ defmodule Pleroma.User do
     Repo.delete(user)
   end
 
-  @spec perform(atom(), User.t()) :: {:ok, User.t()}
   def perform(:fetch_initial_posts, %User{} = user) do
     pages = Pleroma.Config.get!([:fetch_initial_posts, :pages])
 
@@ -1336,7 +1335,6 @@ defmodule Pleroma.User do
     )
   end
 
-  @spec perform(atom(), User.t(), list()) :: list() | {:error, any()}
   def perform(:follow_import, %User{} = follower, followed_identifiers)
       when is_list(followed_identifiers) do
     Enum.map(
index 364bc1c898205f78d2886aaaf5db82dda5880c3e..4358907cbd19434a8386b07af422ef3a81ea39fb 100644 (file)
@@ -48,7 +48,7 @@ defmodule Pleroma.User.Query do
             followers: User.t(),
             friends: User.t(),
             recipients_from_activity: [String.t()],
-            nickname: [String.t()],
+            nickname: [String.t()] | String.t(),
             ap_id: [String.t()],
             order_by: term(),
             select: term(),
index 6b55df483b76944ba6276f25033ea30f76841628..1cfecef83f7916dbdd76f3e1a73c40fe3396895a 100644 (file)
@@ -33,9 +33,15 @@ defmodule Pleroma.User.Search do
     # Strip the beginning @ off if there is a query
     query_string = String.trim_leading(query_string, "@")
 
-    with [name, domain] <- String.split(query_string, "@"),
-         formatted_domain <- String.replace(domain, ~r/[!-\-|@|[-`|{-~|\/|:|\s]+/, "") do
-      name <> "@" <> to_string(:idna.encode(formatted_domain))
+    with [name, domain] <- String.split(query_string, "@") do
+      encoded_domain =
+        domain
+        |> String.replace(~r/[!-\-|@|[-`|{-~|\/|:|\s]+/, "")
+        |> String.to_charlist()
+        |> :idna.encode()
+        |> to_string()
+
+      name <> "@" <> encoded_domain
     else
       _ -> query_string
     end
index 5bd2baca48fb669a8a1d2e42cfc1f8c2fc562a2c..3afc82345753e1be6b5cf2bfccad2cd725f07ddc 100644 (file)
@@ -160,7 +160,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
 
     if Federator.allowed_thread_distance?(depth) do
       with {:ok, replied_object} <- get_obj_helper(in_reply_to_id, options),
-           %Activity{} = _ <- Activity.get_create_by_object_ap_id(replied_object.data["id"]) do
+           %Activity{} <- Activity.get_create_by_object_ap_id(replied_object.data["id"]) do
         object
         |> Map.put("inReplyTo", replied_object.data["id"])
         |> Map.put("inReplyToAtomUri", object["inReplyToAtomUri"] || in_reply_to_id)
index 10ce5eee8f0755d4bccc5891cd113b9cbbfddec1..50e076ca4810d9f692b6a64687943379d9362995 100644 (file)
@@ -45,8 +45,8 @@ defmodule Pleroma.Web.ActivityPub.Utils do
     Map.put(params, "actor", get_ap_id(params["actor"]))
   end
 
-  @spec determine_explicit_mentions(map()) :: map()
-  def determine_explicit_mentions(%{"tag" => tag} = _) when is_list(tag) do
+  @spec determine_explicit_mentions(map()) :: [any]
+  def determine_explicit_mentions(%{"tag" => tag}) when is_list(tag) do
     Enum.flat_map(tag, fn
       %{"type" => "Mention", "href" => href} -> [href]
       _ -> []
@@ -427,7 +427,7 @@ defmodule Pleroma.Web.ActivityPub.Utils do
   @doc """
   Updates a follow activity's state (for locked accounts).
   """
-  @spec update_follow_state_for_all(Activity.t(), String.t()) :: {:ok, Activity} | {:error, any()}
+  @spec update_follow_state_for_all(Activity.t(), String.t()) :: {:ok, Activity | nil}
   def update_follow_state_for_all(
         %Activity{data: %{"actor" => actor, "object" => object}} = activity,
         state
index ed919833e895c2c4d8b3867a71c07145b1ab99d4..778cf4c36c94a6b4e183a46ca7a69347b14e532e 100644 (file)
@@ -18,7 +18,11 @@ defmodule Pleroma.Web.AdminAPI.Search do
 
   @spec user(map()) :: {:ok, [User.t()], pos_integer()}
   def user(params \\ %{}) do
-    query = User.Query.build(params) |> order_by([u], u.nickname)
+    query =
+      params
+      |> Map.drop([:page, :page_size])
+      |> User.Query.build()
+      |> order_by([u], u.nickname)
 
     paginated_query =
       User.Query.paginate(query, params[:page] || 1, params[:page_size] || @page_size)
index 33301292005ce74b3e9c2b0b30981725d0270ec7..947edd8b7d49e8483da21d327502f40758f6cb98 100644 (file)
@@ -92,9 +92,9 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do
       openRegistrations: Config.get([:instance, :registrations_open]),
       usage: %{
         users: %{
-          total: stats.user_count || 0
+          total: Map.get(stats, :user_count, 0)
         },
-        localPosts: stats.status_count || 0
+        localPosts: Map.get(stats, :status_count, 0)
       },
       metadata: %{
         nodeName: Config.get([:instance, :name]),
index a2f6d2287f5a4f2966f2977532f979e0c22ba9d0..03e95e0202fa7454705c24f2a3ec6c4ae7ec91cd 100644 (file)
@@ -323,7 +323,7 @@ keeping it in cache for #{div(cache_ms, 1000)}s")
       {:ok, _} ->
         conn |> json("ok")
 
-      {:error, _} ->
+      {:error, _, _} ->
         conn
         |> put_status(:internal_server_error)
         |> json(%{error: "Couldn't delete the pack #{name}"})