Refresh covers asynchronously
This commit is contained in:
@@ -8,7 +8,7 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|
||||
alias Phoenix.LiveView.JS
|
||||
|
||||
@impl true
|
||||
def mount(_params, _session, socket) do
|
||||
def mount(%{"id" => record_id}, _session, socket) do
|
||||
socket =
|
||||
if static_changed?(socket) do
|
||||
put_flash(socket, :warning, gettext("The application has been updated, please reload."))
|
||||
@@ -16,6 +16,10 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|
||||
socket
|
||||
end
|
||||
|
||||
if connected?(socket) do
|
||||
Records.subscribe(record_id)
|
||||
end
|
||||
|
||||
{:ok, socket}
|
||||
end
|
||||
|
||||
@@ -79,14 +83,11 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|
||||
end
|
||||
|
||||
def handle_event("refresh_cover", %{"id" => id}, socket) do
|
||||
record = Records.get_record!(id)
|
||||
|
||||
case Records.refresh_cover(record) do
|
||||
{:ok, updated_record} ->
|
||||
case Records.refresh_cover_async(id) do
|
||||
{:ok, _worker} ->
|
||||
{:noreply,
|
||||
socket
|
||||
|> put_flash(:info, gettext("Cover refreshed successfully"))
|
||||
|> assign(:record, updated_record)}
|
||||
|> put_flash(:info, gettext("Cover scheduled for refresh"))}
|
||||
|
||||
{:error, reason} ->
|
||||
{:noreply,
|
||||
@@ -103,6 +104,14 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|
||||
{:noreply, assign(socket, :record, record)}
|
||||
end
|
||||
|
||||
@impl true
|
||||
def handle_info({:update, record}, socket) do
|
||||
{:noreply,
|
||||
socket
|
||||
|> put_flash(:info, gettext("Record updated in the background"))
|
||||
|> assign(:record, record)}
|
||||
end
|
||||
|
||||
def page_title(:show, record) do
|
||||
artist_names = Enum.map(record.artists, & &1.name)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user