Use localized scrobbled_at label

This commit is contained in:
Claudio Ortolina
2025-04-10 12:49:23 +01:00
parent 4fc86c959b
commit 099c895c8f
4 changed files with 31 additions and 4 deletions
+23 -4
View File
@@ -10,6 +10,8 @@ defmodule MusicLibraryWeb.StatsLive.Index do
attr :title, :string, required: true
attr :class, :string
@timezone "Europe/London"
defp album_preview(assigns) do
~H"""
<div
@@ -167,17 +169,25 @@ defmodule MusicLibraryWeb.StatsLive.Index do
end
defp assign_scrobble_activity(socket, recent_tracks) do
recent_release_ids = recent_release_ids(recent_tracks)
localized_recent_tracks =
Enum.map(recent_tracks, fn t ->
%{
t
| scrobbled_at_label: localize_scrobbled_at(t.scrobbled_at_uts, @timezone)
}
end)
recent_release_ids = recent_release_ids(localized_recent_tracks)
collected_releases = Collection.collected_releases(recent_release_ids)
wishlisted_releases = Wishlist.wishlisted_releases(recent_release_ids)
all_artist_ids = Artists.get_all_artist_ids()
recent_artist_ids = recent_artist_ids(recent_tracks)
recent_artist_ids = recent_artist_ids(localized_recent_tracks)
artist_ids = MapSet.intersection(all_artist_ids, recent_artist_ids)
recent_albums =
recent_tracks
localized_recent_tracks
|> Enum.uniq_by(fn t -> t.album end)
|> Enum.map(fn t ->
%{
@@ -190,7 +200,7 @@ defmodule MusicLibraryWeb.StatsLive.Index do
end)
socket
|> stream(:recent_tracks, recent_tracks, reset: true)
|> stream(:recent_tracks, localized_recent_tracks, reset: true)
|> stream(:recent_albums, recent_albums, reset: true)
|> assign(
collected_releases: collected_releases,
@@ -220,6 +230,15 @@ defmodule MusicLibraryWeb.StatsLive.Index do
end)
end
defp localize_scrobbled_at(uts, timezone) do
ldt =
uts
|> DateTime.from_unix!()
|> DateTime.shift_zone!(timezone)
"#{ldt.day}/#{ldt.month}/#{ldt.year} #{ldt.hour}:#{ldt.minute}"
end
# The Tailwind build step requires all needed classes to be explicitly referenced
# in the source code, and not dynamically generated. This implies that one cannot
# (for example) interpolate a number in a class name.