From d954a3f196ade3e7ef7544bac7da4818889930e2 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Tue, 27 May 2025 15:08:38 +0100 Subject: [PATCH] Move format_duration/1 inside the only component where it's used --- .../components/record_components.ex | 38 ---------------- .../components/release_component.ex | 43 ++++++++++++++++--- 2 files changed, 38 insertions(+), 43 deletions(-) diff --git a/lib/music_library_web/components/record_components.ex b/lib/music_library_web/components/record_components.ex index 1f9c62fd..ac42cf2c 100644 --- a/lib/music_library_web/components/record_components.ex +++ b/lib/music_library_web/components/record_components.ex @@ -356,44 +356,6 @@ defmodule MusicLibraryWeb.RecordComponents do end end - def format_duration(milliseconds) do - milliseconds - |> System.convert_time_unit(:millisecond, :second) - |> format_seconds() - end - - defp format_seconds(seconds) when seconds <= 59 do - "0:#{zero_pad(seconds)}" - end - - defp format_seconds(seconds) do - minutes = div(seconds, 60) - remaining_seconds = rem(seconds, 60) - - format_minutes(minutes, remaining_seconds) - end - - defp format_minutes(minutes, seconds) when minutes <= 59 do - "#{minutes}:#{zero_pad(seconds)}" - end - - defp format_minutes(minutes, seconds) do - hours = div(minutes, 60) - remaining_minutes = rem(minutes, 60) - - format_hours(hours, remaining_minutes, seconds) - end - - defp format_hours(hours, minutes, seconds) do - "#{hours}:#{zero_pad(minutes)}:#{zero_pad(seconds)}" - end - - defp zero_pad(integer) do - integer - |> to_string() - |> String.pad_leading(2, "0") - end - def toggle_actions_menu(record_id) do JS.toggle(to: "#actions-#{record_id}") |> JS.toggle_class("pointer-events-none", to: "#records > li") diff --git a/lib/music_library_web/components/release_component.ex b/lib/music_library_web/components/release_component.ex index abd85a05..c732ed80 100644 --- a/lib/music_library_web/components/release_component.ex +++ b/lib/music_library_web/components/release_component.ex @@ -2,11 +2,6 @@ defmodule MusicLibraryWeb.ReleaseComponent do use MusicLibraryWeb, :live_component use Gettext, backend: MusicLibraryWeb.Gettext - import MusicLibraryWeb.RecordComponents, - only: [ - format_duration: 1 - ] - alias MusicLibrary.ScrobbleActivity def open(id), do: Fluxon.open_dialog(id) @@ -195,4 +190,42 @@ defmodule MusicLibraryWeb.ReleaseComponent do gettext("Disc %{no}", %{no: medium.number}) end end + + defp format_duration(milliseconds) do + milliseconds + |> System.convert_time_unit(:millisecond, :second) + |> format_seconds() + end + + defp format_seconds(seconds) when seconds <= 59 do + "0:#{zero_pad(seconds)}" + end + + defp format_seconds(seconds) do + minutes = div(seconds, 60) + remaining_seconds = rem(seconds, 60) + + format_minutes(minutes, remaining_seconds) + end + + defp format_minutes(minutes, seconds) when minutes <= 59 do + "#{minutes}:#{zero_pad(seconds)}" + end + + defp format_minutes(minutes, seconds) do + hours = div(minutes, 60) + remaining_minutes = rem(minutes, 60) + + format_hours(hours, remaining_minutes, seconds) + end + + defp format_hours(hours, minutes, seconds) do + "#{hours}:#{zero_pad(minutes)}:#{zero_pad(seconds)}" + end + + defp zero_pad(integer) do + integer + |> to_string() + |> String.pad_leading(2, "0") + end end