Load dominant colors from record

This commit is contained in:
Claudio Ortolina
2025-06-07 20:41:39 +01:00
parent 378992e632
commit be8b7ead5f
5 changed files with 5 additions and 9 deletions
@@ -396,13 +396,13 @@ defmodule MusicLibraryWeb.RecordComponents do
end end
end end
attr :colors, :list, required: true attr :record, Records.Record, required: true
def record_colors(assigns) do def record_colors(assigns) do
~H""" ~H"""
<span class="flex items-center"> <span class="flex items-center">
<span <span
:for={color <- @colors} :for={color <- @record.dominant_colors}
class="inline-block w-4 h-4 mr-1" class="inline-block w-4 h-4 mr-1"
style={"background-color: #{color}"} style={"background-color: #{color}"}
> >
@@ -32,7 +32,6 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
def handle_params(%{"id" => id}, _, socket) do def handle_params(%{"id" => id}, _, socket) do
record = Records.get_record!(id) record = Records.get_record!(id)
last_listened_track = Records.get_last_listened_track(record) last_listened_track = Records.get_last_listened_track(record)
{:ok, dominant_colors} = Records.DominantColors.extract_dominant_colors(record.cover_data)
socket = socket =
if record.selected_release_id do if record.selected_release_id do
@@ -46,7 +45,6 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|> assign(:current_section, :collection) |> assign(:current_section, :collection)
|> assign(:page_title, page_title(socket.assigns.live_action, record)) |> assign(:page_title, page_title(socket.assigns.live_action, record))
|> assign(:record, record) |> assign(:record, record)
|> assign(:dominant_colors, dominant_colors)
|> assign(:last_listened_track, last_listened_track)} |> assign(:last_listened_track, last_listened_track)}
end end
@@ -17,7 +17,7 @@
{@record.title} {@record.title}
</h2> </h2>
<p class="mt-2 flex items-center text-sm leading-5 text-zinc-500 dark:text-zinc-400"> <p class="mt-2 flex items-center text-sm leading-5 text-zinc-500 dark:text-zinc-400">
<.record_colors colors={@record.dominant_colors} /> <.record_colors record={@record} />
<span class="ml-1"> <span class="ml-1">
{Records.Record.format_release_date(@record.release_date)} · {format_label( {Records.Record.format_release_date(@record.release_date)} · {format_label(
@record.format @record.format
@@ -25,14 +25,12 @@ defmodule MusicLibraryWeb.WishlistLive.Show do
@impl true @impl true
def handle_params(%{"id" => id}, _, socket) do def handle_params(%{"id" => id}, _, socket) do
record = Records.get_record!(id) record = Records.get_record!(id)
{:ok, dominant_colors} = Records.DominantColors.extract_dominant_colors(record.cover_data)
{:noreply, {:noreply,
socket socket
|> assign(:current_section, :wishlist) |> assign(:current_section, :wishlist)
|> assign(:page_title, page_title(socket.assigns.live_action, record)) |> assign(:page_title, page_title(socket.assigns.live_action, record))
|> assign(:record, record) |> assign(:record, record)}
|> assign(:dominant_colors, dominant_colors)}
end end
@impl true @impl true
@@ -17,7 +17,7 @@
{@record.title} {@record.title}
</h2> </h2>
<p class="flex items-center mt-2 text-sm leading-5 text-zinc-500 dark:text-zinc-400"> <p class="flex items-center mt-2 text-sm leading-5 text-zinc-500 dark:text-zinc-400">
<.record_colors colors={@record.dominant_colors} /> <.record_colors record={@record} />
{Records.Record.format_release_date(@record.release_date)} {Records.Record.format_release_date(@record.release_date)}
<span :if={@current_date && !Records.Record.released?(@record, @current_date)}> <span :if={@current_date && !Records.Record.released?(@record, @current_date)}>
({gettext("Unreleased")}) ({gettext("Unreleased")})