From cfe357239b8ca92446a1aa739ef94aa3cc599496 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Thu, 1 May 2025 20:21:18 +0100 Subject: [PATCH] Refactor to move record release helpers to better places --- lib/music_library/records/record.ex | 18 +++--------------- .../components/form_component.ex | 17 +++++++++++++++-- .../components/record_components.ex | 8 +++++++- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/lib/music_library/records/record.ex b/lib/music_library/records/record.ex index ffa6409c..b623d17a 100644 --- a/lib/music_library/records/record.ex +++ b/lib/music_library/records/record.ex @@ -71,29 +71,17 @@ defmodule MusicLibrary.Records.Record do end end - def selected_release_id_options(record) do + def releases(record) do record.musicbrainz_data |> ReleaseGroup.releases() - |> Enum.map(fn release -> - { - selected_release_label(release), - release["id"] - } - end) end def selected_release(record) do - record.musicbrainz_data - |> ReleaseGroup.releases() + record + |> releases() |> Enum.find(fn release -> release["id"] == record.selected_release_id end) end - def selected_release_label(release) do - [release["date"], release["country"], release["packaging"]] - |> Enum.reject(&is_nil/1) - |> Enum.join(" ") - end - def changeset(record, attrs) do record |> cast(attrs, [ diff --git a/lib/music_library_web/components/form_component.ex b/lib/music_library_web/components/form_component.ex index 42c13081..21de8fd8 100644 --- a/lib/music_library_web/components/form_component.ex +++ b/lib/music_library_web/components/form_component.ex @@ -1,7 +1,9 @@ defmodule MusicLibraryWeb.FormComponent do use MusicLibraryWeb, :live_component - import MusicLibraryWeb.RecordComponents, only: [format_label: 1, type_label: 1] + import MusicLibraryWeb.RecordComponents, + only: [format_label: 1, type_label: 1, release_label: 1] + alias MusicLibrary.Records alias MusicLibrary.Records.{Cover, Record} @@ -54,7 +56,7 @@ defmodule MusicLibraryWeb.FormComponent do
<.input field={@form[:release_date]} type="text" label={gettext("Release Date")} /> @@ -192,5 +194,16 @@ defmodule MusicLibraryWeb.FormComponent do Enum.map(Records.Record.types(), fn t -> {type_label(t), t} end) end + defp selected_release_id_options(record) do + record + |> Records.Record.releases() + |> Enum.map(fn release -> + { + release_label(release), + release["id"] + } + end) + end + defp notify_parent(msg), do: send(self(), {__MODULE__, msg}) end diff --git a/lib/music_library_web/components/record_components.ex b/lib/music_library_web/components/record_components.ex index 5527d21f..da8b95ac 100644 --- a/lib/music_library_web/components/record_components.ex +++ b/lib/music_library_web/components/record_components.ex @@ -295,12 +295,18 @@ defmodule MusicLibraryWeb.RecordComponents do def selected_release_label(record) do if release = Records.Record.selected_release(record) do - Records.Record.selected_release_label(release) + release_label(release) else gettext("No release selected") end end + def release_label(release) do + [release["date"], release["country"], release["packaging"]] + |> Enum.reject(&is_nil/1) + |> Enum.join(" ") + end + def toggle_actions_menu(record_id) do JS.toggle(to: "#actions-#{record_id}") |> JS.toggle_class("pointer-events-none", to: "#records > li")