fix: Allow updating media in admin_settings_medias by UUID

Fixes #1769
This commit is contained in:
Massedil
2025-06-10 15:00:07 +02:00
parent 54844133cd
commit 569d27f0b9
3 changed files with 20 additions and 1 deletions

View File

@@ -73,13 +73,20 @@ defmodule Mobilizon.Admin.SettingMedia do
|> unique_constraint(:group, name: :admin_settings_medias_group_name_index)
end
# # In case the provided media is an existing one
# In case the provided media is an existing one (identified by id)
@spec put_media(Changeset.t(), map) :: Changeset.t()
defp put_media(%Changeset{} = changeset, %{media: %{media_id: id}}) do
%Media{} = media = Medias.get_media!(id)
put_assoc(changeset, :media, media)
end
# In case the provided media is an existing one (identified by uuid)
@spec put_media(Changeset.t(), map) :: Changeset.t()
defp put_media(%Changeset{} = changeset, %{media: %{media_uuid: uuid}}) do
%Media{} = media = Medias.get_media_by_uuid!(uuid)
put_assoc(changeset, :media, media)
end
# In case it's a new media
defp put_media(%Changeset{} = changeset, %{media: %{media: media}}) do
{:ok, media} = upload_media(media)

View File

@@ -35,6 +35,13 @@ defmodule Mobilizon.Medias do
@spec get_media_by_uuid(String.t()) :: Media.t() | nil
def get_media_by_uuid(uuid), do: Repo.get_by(Media, uuid: uuid)
@doc """
Get a single media by uuid.
Raises `Ecto.NoResultsError` if the media does not exist.
"""
@spec get_media_by_uuid!(String.t()) :: Media.t() | nil
def get_media_by_uuid!(uuid), do: Repo.get_by!(Media, uuid: uuid)
@doc """
Get a media by its URL.
"""