diff options
author | Mark Felder <feld@feld.me> | 2024-01-21 15:54:20 -0500 |
---|---|---|
committer | Mark Felder <feld@feld.me> | 2024-01-22 18:37:13 -0500 |
commit | 38ebefce9c25cf59e6c9e95969712bd13fa79df3 (patch) | |
tree | 7d0a5e9513f0fa80b776153604bec01f34b0ad99 | |
parent | eb4dd50f533380218bcde1a4107e2c0d38b4ec0d (diff) | |
download | pleroma-38ebefce9c25cf59e6c9e95969712bd13fa79df3.tar.gz pleroma-38ebefce9c25cf59e6c9e95969712bd13fa79df3.zip |
Announcement: fix dialyzer errors and add typespec for the changeset
It was possible for this to raise (no_local_return) because the data key could be missing from the params
-rw-r--r-- | lib/pleroma/announcement.ex | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/pleroma/announcement.ex b/lib/pleroma/announcement.ex index d97c5e728..5a3c710e8 100644 --- a/lib/pleroma/announcement.ex +++ b/lib/pleroma/announcement.ex @@ -23,19 +23,21 @@ defmodule Pleroma.Announcement do timestamps(type: :utc_datetime) end - def change(struct, params \\ %{}) do - struct - |> cast(validate_params(struct, params), [:data, :starts_at, :ends_at, :rendered]) + @doc "Generates changeset for %Pleroma.Announcement{}" + @spec changeset(%__MODULE__{}, map()) :: %Ecto.Changeset{} + def changeset(announcement \\ %__MODULE__{}, params \\ %{data: %{}}) do + announcement + |> cast(validate_params(announcement, params), [:data, :starts_at, :ends_at, :rendered]) |> validate_required([:data]) end - defp validate_params(struct, params) do + defp validate_params(announcement, params) do base_data = %{ "content" => "", "all_day" => false } - |> Map.merge((struct && struct.data) || %{}) + |> Map.merge((announcement && announcement.data) || %{}) merged_data = Map.merge(base_data, params.data) @@ -61,13 +63,13 @@ defmodule Pleroma.Announcement do end def add(params) do - changeset = change(%__MODULE__{}, params) + changeset = changeset(%__MODULE__{}, params) Repo.insert(changeset) end def update(announcement, params) do - changeset = change(announcement, params) + changeset = changeset(announcement, params) Repo.update(changeset) end |