diff --git a/assets/css/admin/components.css b/assets/css/admin/components.css index 6bfec2e..c2a6ec1 100644 --- a/assets/css/admin/components.css +++ b/assets/css/admin/components.css @@ -187,7 +187,7 @@ color: var(--t-text-inverse); &:hover { opacity: 0.85; } - &:disabled { opacity: 0.5; cursor: not-allowed; } + &:disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; } } .admin-btn-primary { diff --git a/lib/berrypod_web/live/admin/backup.ex b/lib/berrypod_web/live/admin/backup.ex index 55b97f4..ce9e3cb 100644 --- a/lib/berrypod_web/live/admin/backup.ex +++ b/lib/berrypod_web/live/admin/backup.ex @@ -40,25 +40,11 @@ defmodule BerrypodWeb.Admin.Backup do end def handle_event("create_backup", _params, socket) do - # Ignore if already creating if socket.assigns.create_backup_status == :saving do {:noreply, socket} else - socket = assign(socket, :create_backup_status, :saving) - - case Backup.create_backup() do - {:ok, _path} -> - {:noreply, - socket - |> assign(:backups, Backup.list_backups()) - |> assign(:create_backup_status, :saved)} - - {:error, error} -> - {:noreply, - socket - |> assign(:create_backup_status, :error) - |> put_flash(:error, "Failed to create backup: #{inspect(error)}")} - end + send(self(), :do_create_backup) + {:noreply, assign(socket, :create_backup_status, :saving)} end end @@ -186,6 +172,22 @@ defmodule BerrypodWeb.Admin.Backup do end @impl true + def handle_info(:do_create_backup, socket) do + case Backup.create_backup() do + {:ok, _path} -> + {:noreply, + socket + |> assign(:backups, Backup.list_backups()) + |> assign(:create_backup_status, :saved)} + + {:error, error} -> + {:noreply, + socket + |> assign(:create_backup_status, :error) + |> put_flash(:error, "Failed to create backup: #{inspect(error)}")} + end + end + def handle_info(:do_restore, socket) do backup_path = socket.assigns.uploaded_backup.path @@ -329,6 +331,7 @@ defmodule BerrypodWeb.Admin.Backup do