diff --git a/lib/mv_web/live/import_live.ex b/lib/mv_web/live/import_live.ex index f3d4941..a8c5a95 100644 --- a/lib/mv_web/live/import_live.ex +++ b/lib/mv_web/live/import_live.ex @@ -47,14 +47,11 @@ defmodule MvWeb.ImportLive do # after this limit is reached. @max_errors 50 - # Maximum length for error messages before truncation - @max_error_message_length 200 - @impl true def mount(_params, session, socket) do # Get locale from session for translations locale = session["locale"] || "de" - Gettext.put_locale(MvWeb.Gettext, locale) + _ = Gettext.put_locale(MvWeb.Gettext, locale) # Get club name from settings club_name = @@ -193,16 +190,6 @@ defmodule MvWeb.ImportLive do :error, gettext("Failed to prepare CSV import: %{reason}", reason: reason) )} - - {:error, error} -> - error_message = format_error_message(error) - - {:noreply, - put_flash( - socket, - :error, - gettext("Failed to prepare CSV import: %{reason}", reason: error_message) - )} end end @@ -223,64 +210,6 @@ defmodule MvWeb.ImportLive do {:noreply, socket} end - # Formats error messages for user-friendly display. - # - # Handles various error types including Ash errors, maps with message fields, - # lists of errors, and fallback formatting for unknown types. - @spec format_error_message(any()) :: String.t() - defp format_error_message(error) do - case error do - %Ash.Error.Invalid{} = ash_error -> - format_ash_error(ash_error) - - %{message: msg} when is_binary(msg) -> - msg - - %{errors: errors} when is_list(errors) -> - format_error_list(errors) - - reason when is_binary(reason) -> - reason - - other -> - format_unknown_error(other) - end - end - - # Formats Ash validation errors for display - defp format_ash_error(%Ash.Error.Invalid{errors: errors}) when is_list(errors) do - Enum.map_join(errors, ", ", &format_single_error/1) - end - - defp format_ash_error(error) do - format_unknown_error(error) - end - - # Formats a list of errors into a readable string - defp format_error_list(errors) do - Enum.map_join(errors, ", ", &format_single_error/1) - end - - # Formats a single error item - defp format_single_error(error) when is_map(error) do - Map.get(error, :message) || Map.get(error, :field) || inspect(error, limit: :infinity) - end - - defp format_single_error(error) do - to_string(error) - end - - # Formats unknown error types with truncation for very long messages - defp format_unknown_error(other) do - error_str = inspect(other, limit: :infinity, pretty: true) - - if String.length(error_str) > @max_error_message_length do - String.slice(error_str, 0, @max_error_message_length - 3) <> "..." - else - error_str - end - end - @impl true def handle_info({:process_chunk, idx}, socket) do case socket.assigns do @@ -337,32 +266,33 @@ defmodule MvWeb.ImportLive do actor: actor ] - if Config.sql_sandbox?() do - run_chunk_with_locale( - locale, - chunk, - import_state.column_map, - import_state.custom_field_map, - opts, - live_view_pid, - idx - ) - else - Task.Supervisor.start_child( - Mv.TaskSupervisor, - fn -> - run_chunk_with_locale( - locale, - chunk, - import_state.column_map, - import_state.custom_field_map, - opts, - live_view_pid, - idx - ) - end - ) - end + _ = + if Config.sql_sandbox?() do + run_chunk_with_locale( + locale, + chunk, + import_state.column_map, + import_state.custom_field_map, + opts, + live_view_pid, + idx + ) + else + Task.Supervisor.start_child( + Mv.TaskSupervisor, + fn -> + run_chunk_with_locale( + locale, + chunk, + import_state.column_map, + import_state.custom_field_map, + opts, + live_view_pid, + idx + ) + end + ) + end {:noreply, socket} end @@ -378,7 +308,7 @@ defmodule MvWeb.ImportLive do live_view_pid, idx ) do - Gettext.put_locale(MvWeb.Gettext, locale) + _ = Gettext.put_locale(MvWeb.Gettext, locale) ImportRunner.process_chunk(chunk, column_map, custom_field_map, opts, live_view_pid, idx) end