Enable scrobbling selected tracks in scrobble anything view
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
defmodule MusicLibraryWeb.ScrobbleLive.Show do
|
||||
use MusicLibraryWeb, :live_view
|
||||
|
||||
import(MusicLibraryWeb.Components.Release, only: [medium: 1])
|
||||
import(MusicLibraryWeb.Components.Release, only: [medium: 1, scrobble_button_label: 1])
|
||||
|
||||
alias MusicLibrary.ScrobbleActivity
|
||||
|
||||
@@ -12,7 +12,8 @@ defmodule MusicLibraryWeb.ScrobbleLive.Show do
|
||||
current_section: :scrobble,
|
||||
release: nil,
|
||||
can_scrobble: ScrobbleActivity.can_scrobble?(),
|
||||
page_title: "Scrobble Release"
|
||||
page_title: "Scrobble Release",
|
||||
selected_tracks: MapSet.new()
|
||||
)}
|
||||
end
|
||||
|
||||
@@ -80,4 +81,46 @@ defmodule MusicLibraryWeb.ScrobbleLive.Show do
|
||||
)}
|
||||
end
|
||||
end
|
||||
|
||||
def handle_event("scrobble_selected_tracks", _params, socket) do
|
||||
release_with_tracks = socket.assigns.release
|
||||
selected_track_ids = socket.assigns.selected_tracks
|
||||
|
||||
if MapSet.size(selected_track_ids) == 0 do
|
||||
{:noreply, socket |> put_toast(:error, gettext("No tracks selected"))}
|
||||
else
|
||||
case ScrobbleActivity.scrobble_tracks(
|
||||
selected_track_ids,
|
||||
release_with_tracks,
|
||||
finished_at: DateTime.utc_now()
|
||||
) do
|
||||
{:ok, _} ->
|
||||
{:noreply,
|
||||
socket
|
||||
|> assign(:selected_tracks, MapSet.new())
|
||||
|> put_toast(:info, gettext("Selected tracks scrobbled successfully"))}
|
||||
|
||||
{:error, reason} ->
|
||||
{:noreply,
|
||||
socket
|
||||
|> put_toast(
|
||||
:error,
|
||||
gettext("Error scrobbling selected tracks") <> "," <> inspect(reason)
|
||||
)}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def handle_event("toggle_track", %{"track-id" => track_id}, socket) do
|
||||
selected_tracks = socket.assigns.selected_tracks
|
||||
|
||||
updated_tracks =
|
||||
if MapSet.member?(selected_tracks, track_id) do
|
||||
MapSet.delete(selected_tracks, track_id)
|
||||
else
|
||||
MapSet.put(selected_tracks, track_id)
|
||||
end
|
||||
|
||||
{:noreply, assign(socket, :selected_tracks, updated_tracks)}
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user