ML-169.10: async delete actions with initial implementation

This commit is contained in:
Claudio Ortolina
2026-05-22 16:19:54 +01:00
parent 9f02e12414
commit b10be7ba3c
10 changed files with 380 additions and 16 deletions
@@ -10,6 +10,7 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
alias MusicLibrary.Collection
alias MusicLibrary.Records
alias MusicLibraryWeb.Components.AddRecord
alias MusicLibraryWeb.ErrorMessages
alias MusicLibraryWeb.LiveHelpers.IndexActions
defp index_config do
@@ -323,6 +324,28 @@ defmodule MusicLibraryWeb.CollectionLive.Index do
{:noreply, socket}
end
def handle_async({:delete_record, _id}, {:ok, {:ok, _record}}, socket) do
{:noreply, socket}
end
def handle_async({:delete_record, id}, {:ok, {:error, reason}}, socket) do
record = Records.get_record!(id)
{:noreply,
socket
|> stream_insert(:records, record)
|> put_toast(:error, gettext("Failed to delete: ") <> ErrorMessages.friendly_message(reason))}
end
def handle_async({:delete_record, id}, {:exit, _reason}, socket) do
record = Records.get_record!(id)
{:noreply,
socket
|> stream_insert(:records, record)
|> put_toast(:error, gettext("Delete failed, please try again"))}
end
@impl true
def handle_event("delete", %{"id" => id}, socket) do
IndexActions.handle_delete(socket, id)