defmodule Server.Router do
require Logger
use Phoenix.Router
import Phoenix.LiveView.Router
pipeline :images do
plug Plug.Static,
at: "/images",
from: {:kino_live_view_native, "priv/static"}
end
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_query_params
plug :put_root_layout, html: {Server.Layouts, :root}
plug LiveViewNative.SessionPlug
end
scope "/images" do
pipe_through :images
get "/*path", Server.ErrorController, :not_found
end
scope "/" do
pipe_through :browser
KinoLiveViewNative.get_routes()
|> Enum.map(fn %{path: path, module: module, action: action} ->
# Ensure module is a LiveView
if Kernel.function_exported?(module, :__live__, 0) do
live(path, module, action)
else
Logger.error("Module #{inspect(module)} is not a valid LiveView.")
end
end)
end
end