diff --git a/lib/music_library_web/components/scrobble_components.ex b/lib/music_library_web/components/scrobble_components.ex new file mode 100644 index 00000000..217b221a --- /dev/null +++ b/lib/music_library_web/components/scrobble_components.ex @@ -0,0 +1,20 @@ +defmodule MusicLibraryWeb.ScrobbleComponents do + @moduledoc """ + Universal search modal and related components. + """ + + use MusicLibraryWeb, :html + + def refresh_lastfm_feed_button(assigns) do + ~H""" + + """ + end +end diff --git a/lib/music_library_web/components/stats_components.ex b/lib/music_library_web/components/stats_components.ex index ec99c9ca..d2a2268d 100644 --- a/lib/music_library_web/components/stats_components.ex +++ b/lib/music_library_web/components/stats_components.ex @@ -129,19 +129,6 @@ defmodule MusicLibraryWeb.StatsComponents do """ end - def refresh_lastfm_feed_button(assigns) do - ~H""" - - """ - end - attr :record_show_path, :any, required: true attr :records, :list, required: true attr :current_date, Date, required: true diff --git a/lib/music_library_web/live/scrobbled_tracks_live/index.ex b/lib/music_library_web/live/scrobbled_tracks_live/index.ex index 2e51bc0f..e74cac09 100644 --- a/lib/music_library_web/live/scrobbled_tracks_live/index.ex +++ b/lib/music_library_web/live/scrobbled_tracks_live/index.ex @@ -2,6 +2,7 @@ defmodule MusicLibraryWeb.ScrobbledTracksLive.Index do use MusicLibraryWeb, :live_view import MusicLibraryWeb.Components.Pagination + import MusicLibraryWeb.ScrobbleComponents, only: [refresh_lastfm_feed_button: 1] alias LastFm.Track alias MusicLibrary.ScrobbleActivity @@ -20,6 +21,10 @@ defmodule MusicLibraryWeb.ScrobbledTracksLive.Index do |> assign(:current_section, :scrobble_activity) |> stream_configure(:tracks, dom_id: fn %Track{scrobbled_at_uts: id} -> "tracks-#{id}" end) + if connected?(socket) do + LastFm.subscribe_to_feed() + end + {:ok, socket} end @@ -66,6 +71,14 @@ defmodule MusicLibraryWeb.ScrobbledTracksLive.Index do {:noreply, load_and_assign_tracks(socket, socket.assigns.track_list_params)} end + def handle_info(%{track_count: 0}, socket) do + {:noreply, socket} + end + + def handle_info(%{track_count: _count}, socket) do + {:noreply, load_and_assign_tracks(socket, socket.assigns.track_list_params)} + end + @impl true def handle_event("delete", %{"scrobbled-at-uts" => scrobbled_at_uts}, socket) do track = ScrobbleActivity.get_track!(scrobbled_at_uts) @@ -83,6 +96,11 @@ defmodule MusicLibraryWeb.ScrobbledTracksLive.Index do {:noreply, push_patch(socket, to: ~p"/scrobbled-tracks?#{qs}")} end + def handle_event("refresh_lastfm_feed", _, socket) do + LastFm.refresh_scrobbled_tracks() + {:noreply, socket} + end + defp parse_order("scrobbled_at"), do: :scrobbled_at defp parse_order("title"), do: :title defp parse_order("artist"), do: :artist diff --git a/lib/music_library_web/live/scrobbled_tracks_live/index.html.heex b/lib/music_library_web/live/scrobbled_tracks_live/index.html.heex index 6c199974..9d8258ba 100644 --- a/lib/music_library_web/live/scrobbled_tracks_live/index.html.heex +++ b/lib/music_library_web/live/scrobbled_tracks_live/index.html.heex @@ -6,7 +6,7 @@ -
+
<.button_group> <.button patch={order_path(@track_list_params, :scrobbled_at)} @@ -54,6 +54,7 @@ {gettext("Album")} + <.refresh_lastfm_feed_button />
diff --git a/lib/music_library_web/live/stats_live/index.ex b/lib/music_library_web/live/stats_live/index.ex index 6298498d..244c715b 100644 --- a/lib/music_library_web/live/stats_live/index.ex +++ b/lib/music_library_web/live/stats_live/index.ex @@ -5,6 +5,7 @@ defmodule MusicLibraryWeb.StatsLive.Index do import MusicLibraryWeb.ChartComponents import MusicLibraryWeb.RecordComponents, only: [format_label: 1, type_label: 1] import MusicLibraryWeb.StatsComponents + import MusicLibraryWeb.ScrobbleComponents, only: [refresh_lastfm_feed_button: 1] alias MusicLibrary.Assets.Transform alias MusicLibrary.{Collection, Records, ScrobbleActivity, Wishlist} diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index 6b55e51d..8144466d 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -293,7 +293,7 @@ msgstr "" msgid "MusicBrainz data refreshed successfully" msgstr "" -#: lib/music_library_web/components/stats_components.ex +#: lib/music_library_web/components/scrobble_components.ex #, elixir-autogen, elixir-format msgid "Refresh LastFm Feed" msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index 7e740638..ac2d9c2c 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -293,7 +293,7 @@ msgstr "" msgid "MusicBrainz data refreshed successfully" msgstr "" -#: lib/music_library_web/components/stats_components.ex +#: lib/music_library_web/components/scrobble_components.ex #, elixir-autogen, elixir-format msgid "Refresh LastFm Feed" msgstr ""