Prevent multiple scrobbles for 3 seconds
This commit is contained in:
@@ -10,7 +10,8 @@ defmodule MusicLibraryWeb.ReleaseComponent do
|
|||||||
def mount(socket) do
|
def mount(socket) do
|
||||||
{:ok,
|
{:ok,
|
||||||
socket
|
socket
|
||||||
|> assign(:can_scrobble?, ScrobbleActivity.can_scrobble?())}
|
|> assign(:can_scrobble?, ScrobbleActivity.can_scrobble?())
|
||||||
|
|> assign(:already_scrobbled, false)}
|
||||||
end
|
end
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
@@ -25,6 +26,10 @@ defmodule MusicLibraryWeb.ReleaseComponent do
|
|||||||
end)}
|
end)}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def update(%{already_scrobbled: _already_scrobbled} = assigns, socket) do
|
||||||
|
{:ok, assign(socket, assigns)}
|
||||||
|
end
|
||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def render(assigns) do
|
def render(assigns) do
|
||||||
~H"""
|
~H"""
|
||||||
@@ -40,6 +45,7 @@ defmodule MusicLibraryWeb.ReleaseComponent do
|
|||||||
<.button
|
<.button
|
||||||
:if={@can_scrobble?}
|
:if={@can_scrobble?}
|
||||||
size="sm"
|
size="sm"
|
||||||
|
disabled={@already_scrobbled}
|
||||||
phx-click="scrobble_release"
|
phx-click="scrobble_release"
|
||||||
phx-target={@myself}
|
phx-target={@myself}
|
||||||
phx-disable-with={gettext("Scrobbling...")}
|
phx-disable-with={gettext("Scrobbling...")}
|
||||||
@@ -79,6 +85,7 @@ defmodule MusicLibraryWeb.ReleaseComponent do
|
|||||||
<.button
|
<.button
|
||||||
:if={@can_scrobble?}
|
:if={@can_scrobble?}
|
||||||
size="sm"
|
size="sm"
|
||||||
|
disabled={@already_scrobbled}
|
||||||
phx-click="scrobble_medium"
|
phx-click="scrobble_medium"
|
||||||
phx-value-number={medium.number}
|
phx-value-number={medium.number}
|
||||||
phx-target={@myself}
|
phx-target={@myself}
|
||||||
@@ -135,8 +142,11 @@ defmodule MusicLibraryWeb.ReleaseComponent do
|
|||||||
release_with_tracks_async_result && release_with_tracks_async_result.result do
|
release_with_tracks_async_result && release_with_tracks_async_result.result do
|
||||||
case ScrobbleActivity.scrobble_release(release_with_tracks, finished_at: DateTime.utc_now()) do
|
case ScrobbleActivity.scrobble_release(release_with_tracks, finished_at: DateTime.utc_now()) do
|
||||||
{:ok, _} ->
|
{:ok, _} ->
|
||||||
|
send_update_after(socket.assigns.myself, %{already_scrobbled: false}, 3000)
|
||||||
|
|
||||||
{:noreply,
|
{:noreply,
|
||||||
socket
|
socket
|
||||||
|
|> assign(:already_scrobbled, true)
|
||||||
|> put_flash(:info, gettext("Release scrobbled successfully"))}
|
|> put_flash(:info, gettext("Release scrobbled successfully"))}
|
||||||
|
|
||||||
{:error, reason} ->
|
{:error, reason} ->
|
||||||
@@ -162,8 +172,11 @@ defmodule MusicLibraryWeb.ReleaseComponent do
|
|||||||
finished_at: DateTime.utc_now()
|
finished_at: DateTime.utc_now()
|
||||||
) do
|
) do
|
||||||
{:ok, _} ->
|
{:ok, _} ->
|
||||||
|
send_update_after(socket.assigns.myself, %{already_scrobbled: false}, 3000)
|
||||||
|
|
||||||
{:noreply,
|
{:noreply,
|
||||||
socket
|
socket
|
||||||
|
|> assign(:already_scrobbled, true)
|
||||||
|> put_flash(:info, gettext("Disc scrobbled successfully"))}
|
|> put_flash(:info, gettext("Disc scrobbled successfully"))}
|
||||||
|
|
||||||
{:error, reason} ->
|
{:error, reason} ->
|
||||||
|
|||||||
Reference in New Issue
Block a user