Files
mihainator/lib/mihainator_web/live/upload_live.ex

41 lines
1.0 KiB
Elixir

defmodule MihainatorWeb.UploadLive do
use MihainatorWeb, :live_view
@impl Phoenix.LiveView
def mount(_params, _session, socket) do
{:ok,
socket
|> assign(:submit_disabled?, true)
|> allow_upload(:history, accept: ~w(.csv))}
end
@impl Phoenix.LiveView
def handle_event("validate", _params, socket) do
{:noreply,
socket
|> assign(:submit_disabled?, false)}
end
@impl Phoenix.LiveView
def handle_event("save", _params, socket) do
consume_uploaded_entries(socket, :history, fn %{path: path}, _entry ->
Task.async(fn -> Mihainator.CSVParser.start(path) end)
{:ok, nil}
end)
{:noreply, socket}
end
@impl Phoenix.LiveView
@spec handle_info({reference(), any()}, any()) :: {:noreply, any()}
def handle_info({ref, _result}, socket) do
Process.demonitor(ref, [:flush])
{:noreply, socket}
end
defp error_to_string(:too_large), do: "Too large"
defp error_to_string(:not_accepted), do: "You have selected an unacceptable file type"
end