diff --git a/lib/federation/activity_pub/actor.ex b/lib/federation/activity_pub/actor.ex index 42bd31d8b..8f4f07b49 100644 --- a/lib/federation/activity_pub/actor.ex +++ b/lib/federation/activity_pub/actor.ex @@ -108,15 +108,15 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do @doc """ Create an actor inside our database from username, using WebFinger to find out its AP ID and then fetch it """ - @spec make_actor_from_nickname(nickname :: String.t(), preload :: boolean) :: + @spec make_actor_from_nickname(nickname :: String.t(), options :: Keyword.t()) :: {:ok, Actor.t()} | {:error, make_actor_errors | WebFinger.finger_errors()} - def make_actor_from_nickname(nickname, preload \\ false) do + def make_actor_from_nickname(nickname, options \\ []) do Logger.debug("Fingering actor from nickname #{nickname}") case WebFinger.finger(nickname) do {:ok, url} when is_binary(url) -> Logger.debug("Matched #{nickname} to URL #{url}, now making actor") - make_actor_from_url(url, preload: preload) + make_actor_from_url(url, options) {:error, e} -> {:error, e} diff --git a/lib/federation/activity_pub/audience.ex b/lib/federation/activity_pub/audience.ex index 540ba76e9..19502dfaa 100644 --- a/lib/federation/activity_pub/audience.ex +++ b/lib/federation/activity_pub/audience.ex @@ -20,7 +20,7 @@ defmodule Mobilizon.Federation.ActivityPub.Audience do @doc """ Get audience for an entity """ - @spec get_audience(Entity.t()) :: audience() + @spec get_audience(Entity.t() | Participant.t()) :: audience() def get_audience(%Event{} = event) do extract_actors_from_event(event) end diff --git a/lib/federation/activity_pub/refresher.ex b/lib/federation/activity_pub/refresher.ex index bfa4f6c16..4a8fc8c66 100644 --- a/lib/federation/activity_pub/refresher.ex +++ b/lib/federation/activity_pub/refresher.ex @@ -190,7 +190,7 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do # If we're handling an activity @spec handling_element(map()) :: {:ok, any, struct} | :error - @spec handling_element(String.t()) :: {:ok, struct} | {:error, any()} + @spec handling_element(String.t()) :: {:ok, struct} | {:ok, atom, struct} | {:error, any()} defp handling_element(%{"type" => activity_type} = data) when activity_type in ["Create", "Update", "Delete"] do object = get_in(data, ["object"]) diff --git a/lib/graphql/api/follows.ex b/lib/graphql/api/follows.ex index 05c87b0b1..d981c89b8 100644 --- a/lib/graphql/api/follows.ex +++ b/lib/graphql/api/follows.ex @@ -69,7 +69,8 @@ defmodule Mobilizon.GraphQL.API.Follows do ) case Actors.check_follow(follower, followed) do - %Follower{approved: false} -> + %Follower{approved: false} = follow -> + Actors.delete_follower(follow) {:error, "Follow already rejected"} %Follower{} = follow -> diff --git a/lib/mix/tasks/mobilizon/instance.ex b/lib/mix/tasks/mobilizon/instance.ex index 3d3dccc66..180bb17bf 100644 --- a/lib/mix/tasks/mobilizon/instance.ex +++ b/lib/mix/tasks/mobilizon/instance.ex @@ -130,7 +130,7 @@ defmodule Mix.Tasks.Mobilizon.Instance do options, :listen_port, "What port will the app listen to (leave it if you are using the default setup with nginx)?", - 4000 + "4000" ) instance_secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64) diff --git a/lib/mix/tasks/mobilizon/users/new.ex b/lib/mix/tasks/mobilizon/users/new.ex index db013f7c1..df39c596b 100644 --- a/lib/mix/tasks/mobilizon/users/new.ex +++ b/lib/mix/tasks/mobilizon/users/new.ex @@ -67,10 +67,6 @@ defmodule Mix.Tasks.Mobilizon.Users.New do {:error, %Ecto.Changeset{errors: errors}} -> shell_error(inspect(errors)) shell_error("User has not been created because of the above reason.") - - err -> - shell_error(inspect(err)) - shell_error("User has not been created because of an unknown reason.") end end diff --git a/lib/mobilizon/actors/actors.ex b/lib/mobilizon/actors/actors.ex index b264c4dc4..1df299fb6 100644 --- a/lib/mobilizon/actors/actors.ex +++ b/lib/mobilizon/actors/actors.ex @@ -1475,7 +1475,7 @@ defmodule Mobilizon.Actors do |> where([_q, ..., a], like(a.name, ^"%#{name}%") or like(a.preferred_username, ^"%#{name}%")) end - @spec join_members_actor(Ecto.Query.t()) :: Ecto.Query.t() + @spec join_members_actor(Ecto.Queryable.t()) :: Ecto.Query.t() defp join_members_actor(query) do join(query, :inner, [q], a in Actor, on: q.actor_id == a.id) end diff --git a/lib/service/workers/clean_unconfirmed_users_worker.ex b/lib/service/workers/clean_unconfirmed_users_worker.ex index 73646beb3..2df01b271 100644 --- a/lib/service/workers/clean_unconfirmed_users_worker.ex +++ b/lib/service/workers/clean_unconfirmed_users_worker.ex @@ -8,7 +8,12 @@ defmodule Mobilizon.Service.Workers.CleanUnconfirmedUsersWorker do @impl Oban.Worker def perform(%Job{}) do - if Mobilizon.Config.get!([:instance, :remove_unconfirmed_users]) and should_perform?() do + remove_unconfirmed_users = + :mobilizon + |> Application.get_env(:instance) + |> Keyword.get(:remove_unconfirmed_users, false) + + if remove_unconfirmed_users and should_perform?() do CleanUnconfirmedUsers.clean() end end diff --git a/lib/service/workers/helper.ex b/lib/service/workers/helper.ex index 28bb0d7b8..8cb14f399 100644 --- a/lib/service/workers/helper.ex +++ b/lib/service/workers/helper.ex @@ -41,7 +41,7 @@ defmodule Mobilizon.Service.Workers.Helper do alias Oban.Job - @spec enqueue(String.t(), map(), Keyword.t()) :: + @spec enqueue(String.t() | :atom, map(), Keyword.t()) :: {:ok, Job.t()} | {:error, Ecto.Changeset.t()} def enqueue(operation, params, worker_args \\ []) do params = Map.merge(%{"op" => operation}, params) diff --git a/test/federation/activity_pub/actor_test.exs b/test/federation/activity_pub/actor_test.exs index 5298f0e84..d402822bd 100644 --- a/test/federation/activity_pub/actor_test.exs +++ b/test/federation/activity_pub/actor_test.exs @@ -30,7 +30,7 @@ defmodule Mobilizon.Federation.ActivityPub.ActorTest do HostMetaClientMock |> expect(:call, fn - %{method: :get, url: "http://framapiaf.org/.well-known/host-meta"}, _opts -> + %{method: :get, url: "https://framapiaf.org/.well-known/host-meta"}, _opts -> {:ok, %Tesla.Env{status: 404, body: ""}} end) @@ -43,7 +43,7 @@ defmodule Mobilizon.Federation.ActivityPub.ActorTest do |> expect(:call, fn %{ method: :get, - url: "http://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org" + url: "https://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org" }, _opts -> {:ok, %Tesla.Env{status: 200, body: webfinger_data}} @@ -69,7 +69,7 @@ defmodule Mobilizon.Federation.ActivityPub.ActorTest do HostMetaClientMock |> expect(:call, fn - %{method: :get, url: "http://framapiaf.org/.well-known/host-meta"}, _opts -> + %{method: :get, url: "https://framapiaf.org/.well-known/host-meta"}, _opts -> {:ok, %Tesla.Env{status: 404, body: ""}} end) @@ -82,7 +82,7 @@ defmodule Mobilizon.Federation.ActivityPub.ActorTest do |> expect(:call, fn %{ method: :get, - url: "http://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org" + url: "https://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org" }, _opts -> {:ok, %Tesla.Env{status: 200, body: webfinger_data}} diff --git a/test/federation/web_finger/web_finger_test.exs b/test/federation/web_finger/web_finger_test.exs index c3cb48afb..5cd5f2f29 100644 --- a/test/federation/web_finger/web_finger_test.exs +++ b/test/federation/web_finger/web_finger_test.exs @@ -72,7 +72,7 @@ defmodule Mobilizon.Federation.WebFingerTest do HostMetaClientMock |> expect(:call, fn - %{method: :get, url: "http://social.tcit.fr/.well-known/host-meta"}, _opts -> + %{method: :get, url: "https://social.tcit.fr/.well-known/host-meta"}, _opts -> {:ok, %Tesla.Env{status: 200, body: host_meta_xml}} end) @@ -100,7 +100,7 @@ defmodule Mobilizon.Federation.WebFingerTest do HostMetaClientMock |> expect(:call, fn - %{method: :get, url: "http://pleroma.soykaf.com/.well-known/host-meta"}, _opts -> + %{method: :get, url: "https://pleroma.soykaf.com/.well-known/host-meta"}, _opts -> {:ok, %Tesla.Env{status: 200, body: host_meta_xml}} end) @@ -127,7 +127,7 @@ defmodule Mobilizon.Federation.WebFingerTest do HostMetaClientMock |> expect(:call, fn - %{method: :get, url: "http://framatube.org/.well-known/host-meta"}, _opts -> + %{method: :get, url: "https://framatube.org/.well-known/host-meta"}, _opts -> {:ok, %Tesla.Env{status: 200, body: host_meta_xml}} end) @@ -154,7 +154,7 @@ defmodule Mobilizon.Federation.WebFingerTest do HostMetaClientMock |> expect(:call, fn - %{method: :get, url: "http://squeet.me/.well-known/host-meta"}, _opts -> + %{method: :get, url: "https://squeet.me/.well-known/host-meta"}, _opts -> {:ok, %Tesla.Env{status: 200, body: host_meta_xml}} end) @@ -182,7 +182,7 @@ defmodule Mobilizon.Federation.WebFingerTest do HostMetaClientMock |> expect(:call, fn - %{method: :get, url: "http://demo.gancio.org/.well-known/host-meta"}, _opts -> + %{method: :get, url: "https://demo.gancio.org/.well-known/host-meta"}, _opts -> {:ok, %Tesla.Env{status: 200, body: host_meta_xml}} end) diff --git a/test/graphql/resolvers/member_test.exs b/test/graphql/resolvers/member_test.exs index 30e4a0cc7..e2ed49903 100644 --- a/test/graphql/resolvers/member_test.exs +++ b/test/graphql/resolvers/member_test.exs @@ -301,7 +301,7 @@ defmodule Mobilizon.GraphQL.Resolvers.MemberTest do HostMetaClientMock |> expect(:call, fn - %{method: :get, url: "http://nowhere.absolute/.well-known/host-meta"}, _opts -> + %{method: :get, url: "https://nowhere.absolute/.well-known/host-meta"}, _opts -> {:ok, %Tesla.Env{status: 404, body: ""}} end) @@ -310,7 +310,7 @@ defmodule Mobilizon.GraphQL.Resolvers.MemberTest do %{ method: :get, url: - "http://nowhere.absolute/.well-known/webfinger?resource=acct:not_existing@nowhere.absolute" + "https://nowhere.absolute/.well-known/webfinger?resource=acct:not_existing@nowhere.absolute" }, _opts -> {:ok, %Tesla.Env{status: 404, body: ""}}