webhook fixes

Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
nicole mikołajczyk 2026-02-27 23:11:37 +01:00
commit 8eca6ca87c
3 changed files with 18 additions and 20 deletions

View file

@ -40,17 +40,18 @@ defmodule Pleroma.Web.AdminAPI.WebhookController do
end
def create(%{body_params: params} = conn, _) do
with webhook <- Webhook.create(params) do
with {:ok, webhook} <- Webhook.create(params) do
render(conn, "show.json", webhook: webhook)
end
end
def update(%{body_params: params} = conn, %{id: id}) do
with %Webhook{internal: false} = webhook <- Webhook.get(id),
webhook <- Webhook.update(webhook, params) do
{:ok, webhook} <- Webhook.update(webhook, params) do
render(conn, "show.json", webhook: webhook)
else
%Webhook{internal: true} -> {:error, :forbidden}
nil -> {:error, :not_found}
end
end
@ -60,6 +61,7 @@ defmodule Pleroma.Web.AdminAPI.WebhookController do
render(conn, "show.json", webhook: webhook)
else
%Webhook{internal: true} -> {:error, :forbidden}
nil -> {:error, :not_found}
end
end

View file

@ -27,7 +27,7 @@ defmodule Pleroma.Web.MastodonAPI.Admin.AccountView do
role: role(user),
confirmed: user.is_confirmed,
sensitized: nil,
suspened: nil,
suspended: nil,
silenced: nil,
disabled: !user.is_active,
approved: user.is_approved,

View file

@ -28,6 +28,7 @@ defmodule Pleroma.Webhook do
def get_by_type(type) do
__MODULE__
|> where([w], ^type in w.events)
|> where([w], w.enabled == true)
|> Repo.all()
end
@ -48,21 +49,15 @@ defmodule Pleroma.Webhook do
end
def create(params) do
{:ok, webhook} =
%__MODULE__{}
|> changeset(params)
|> Repo.insert()
webhook
%__MODULE__{}
|> changeset(params)
|> Repo.insert()
end
def update(%__MODULE__{} = webhook, params) do
{:ok, webhook} =
webhook
|> update_changeset(params)
|> Repo.update()
webhook
|> update_changeset(params)
|> Repo.update()
end
def delete(webhook), do: webhook |> Repo.delete()
@ -80,12 +75,13 @@ defmodule Pleroma.Webhook do
|> Repo.update()
end
defp strip_events(params) do
if Map.has_key?(params, :events) do
params
|> Map.put(:events, Enum.filter(params[:events], &Enum.member?(@event_types, &1)))
else
params
defp strip_events(changeset) do
case get_change(changeset, :events) do
nil ->
changeset
events ->
put_change(changeset, :events, Enum.filter(events, &(&1 in @event_types)))
end
end