defmodule RaxolWeb.ErrorBoundaryComponent do use RaxolWeb, :live_component require Logger def render(assigns) do error = Map.get(assigns, :error, nil) assigns = Map.put(assigns, :error, error) ~H"""
<%= if @error do %>

Something went wrong

An unexpected error occurred. Please try again.

<% else %> <%= render_slot(@inner_block) %> <% end %>
""" end def handle_event("retry", _, socket) do Logger.info( "Error boundary retry requested for component #{socket.assigns.id}" ) {:noreply, assign(socket, error: nil)} end def handle_error(error, stacktrace, socket) do Logger.error( "Error boundary caught error: #{inspect(error)}\nStacktrace: #{inspect(stacktrace)}" ) {:noreply, assign(socket, error: error)} end end