Can scrobble a release from the UI
This commit is contained in:
@@ -11,7 +11,7 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|
|||||||
format_duration: 1
|
format_duration: 1
|
||||||
]
|
]
|
||||||
|
|
||||||
alias MusicLibrary.Records
|
alias MusicLibrary.{Records, ScrobbleActivity}
|
||||||
alias Phoenix.LiveView.JS
|
alias Phoenix.LiveView.JS
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
@@ -128,6 +128,29 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|
|||||||
end)}
|
end)}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def handle_event("scrobble_release", _params, socket) do
|
||||||
|
release_with_tracks_async_result =
|
||||||
|
socket.assigns.release_with_tracks
|
||||||
|
|
||||||
|
if release_with_tracks =
|
||||||
|
release_with_tracks_async_result && release_with_tracks_async_result.result do
|
||||||
|
case ScrobbleActivity.scrobble(release_with_tracks, DateTime.utc_now()) do
|
||||||
|
{:ok, _} ->
|
||||||
|
{:noreply,
|
||||||
|
socket
|
||||||
|
|> put_flash(:info, gettext("Release scrobbled successfully"))}
|
||||||
|
|
||||||
|
{:error, reason} ->
|
||||||
|
{:noreply,
|
||||||
|
socket
|
||||||
|
|> put_flash(
|
||||||
|
:error,
|
||||||
|
gettext("Error scrobbling release") <> "," <> inspect(reason)
|
||||||
|
)}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def handle_info({MusicLibraryWeb.FormComponent, {:saved, record}}, socket) do
|
def handle_info({MusicLibraryWeb.FormComponent, {:saved, record}}, socket) do
|
||||||
{:noreply, assign(socket, :record, record)}
|
{:noreply, assign(socket, :record, record)}
|
||||||
|
|||||||
@@ -280,9 +280,11 @@
|
|||||||
placement="right"
|
placement="right"
|
||||||
on_open={JS.push("load_release_with_tracks")}
|
on_open={JS.push("load_release_with_tracks")}
|
||||||
>
|
>
|
||||||
<h3 class="text-lg font-semibold text-zinc-700 dark:text-zinc-300 mb-4">{gettext("Tracks")}</h3>
|
<h3 class="text-lg font-semibold text-zinc-700 dark:text-zinc-300">{gettext("Tracks")}</h3>
|
||||||
|
|
||||||
<div :if={@release_with_tracks} class="space-y-4">
|
<.button phx-click="scrobble_release">{gettext("Scrobble to Last.fm")}</.button>
|
||||||
|
|
||||||
|
<div :if={@release_with_tracks} class="space-y-4 mt-4">
|
||||||
<.async_result :let={release_with_tracks} assign={@release_with_tracks}>
|
<.async_result :let={release_with_tracks} assign={@release_with_tracks}>
|
||||||
<:loading>
|
<:loading>
|
||||||
<span class="sr-only">{gettext("Loading release with tracks")}</span>
|
<span class="sr-only">{gettext("Loading release with tracks")}</span>
|
||||||
|
|||||||
@@ -784,3 +784,18 @@ msgstr ""
|
|||||||
#, elixir-autogen, elixir-format
|
#, elixir-autogen, elixir-format
|
||||||
msgid "Successfully connected your Last.fm account"
|
msgid "Successfully connected your Last.fm account"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/music_library_web/live/collection_live/show.ex
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Error scrobbling release"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/music_library_web/live/collection_live/show.ex
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Release scrobbled successfully"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/music_library_web/live/collection_live/show.html.heex
|
||||||
|
#, elixir-autogen, elixir-format
|
||||||
|
msgid "Scrobble to Last.fm"
|
||||||
|
msgstr ""
|
||||||
|
|||||||
Reference in New Issue
Block a user