MastoAPI: accept notify param in follow request
authormarcin mikołajczak <git@mkljczk.pl>
Mon, 6 Dec 2021 17:00:58 +0000 (18:00 +0100)
committermarcin mikołajczak <git@mkljczk.pl>
Mon, 6 Dec 2021 18:36:58 +0000 (19:36 +0100)
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
lib/pleroma/web/api_spec/operations/account_operation.ex
lib/pleroma/web/mastodon_api/mastodon_api.ex

index 54e5ebc76e2ae943e02b3026d85799f7cf511641..cb978c775bfeb9c008168277ffc24bc65aa7b64b 100644 (file)
@@ -226,6 +226,12 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do
                 type: :boolean,
                 description: "Receive this account's reblogs in home timeline? Defaults to true.",
                 default: true
+              },
+              notify: %Schema{
+                type: :boolean,
+                description:
+                  "Receive notifications for all statuses posted by the account? Defaults to false.",
+                default: false
               }
             }
           },
index 71479550eb61402617bc97d3dd560502135dd4a7..fb713d47c90fa65c067968d761fe9f5a8907f654 100644 (file)
@@ -24,6 +24,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPI do
     with {:ok, follower, _followed, _} <- result do
       options = cast_params(params)
       set_reblogs_visibility(options[:reblogs], result)
+      set_subscription(options[:notify], result)
       {:ok, follower}
     end
   end
@@ -36,6 +37,14 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPI do
     CommonAPI.show_reblogs(follower, followed)
   end
 
+  defp set_subscription(true, {:ok, follower, followed, _}) do
+    User.subscribe(follower, followed)
+  end
+
+  defp set_subscription(_, {:ok, follower, followed, _}) do
+    User.unsubscribe(follower, followed)
+  end
+
   @spec get_followers(User.t(), map()) :: list(User.t())
   def get_followers(user, params \\ %{}) do
     user
@@ -73,7 +82,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPI do
       exclude_visibilities: {:array, :string},
       reblogs: :boolean,
       with_muted: :boolean,
-      account_ap_id: :string
+      account_ap_id: :string,
+      notify: :boolean
     }
 
     changeset = cast({%{}, param_types}, params, Map.keys(param_types))