defmodule FirehoseWeb.MicroprintsLive do use FirehoseWeb, :live_view alias Microprints.MicroprintCache alias Microprints.MicroprintComponent @source_dirs ["app", "blogex"] @impl true def mount(params, _session, socket) do files = scan_source_files_with_dir() microprints = files |> Enum.map(&process_file/1) {:ok, socket |> assign(:page_title, "Microprints") |> assign(:microprints, microprints) |> restore_state_from_params(params)} rescue e -> {:ok, socket |> assign(:page_title, "Microprints") |> assign(:microprints, []) |> assign(:expanded_path, nil) |> assign(:source_content, nil) |> assign(:highlighted_path, nil) |> assign(:highlighted_line, nil) |> put_flash(:error, "Error loading microprints: #{inspect(e)}")} end @impl true def handle_params(params, _uri, socket) do {:noreply, restore_state_from_params(socket, params)} end @impl true def render(assigns) do ~H"""
Visual fingerprints of source code files. Click a line to highlight it. Click a card to expand and view the source.
<.microprint_legend /> "-pre"} phx-update="ignore" class="m-0 p-2"><%= @source_content %>