Refactor to move record release helpers to better places
This commit is contained in:
@@ -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, [
|
||||
|
||||
@@ -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
|
||||
<Fluxon.Components.Select.select
|
||||
field={@form[:selected_release_id]}
|
||||
label={gettext("Selected Release")}
|
||||
options={Record.selected_release_id_options(@record)}
|
||||
options={selected_release_id_options(@record)}
|
||||
/>
|
||||
<div class="sm:columns-2">
|
||||
<.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
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user