diff --git a/assets/bun.lockb b/assets/bun.lockb index b0a82ae..e7f3c73 100755 Binary files a/assets/bun.lockb and b/assets/bun.lockb differ diff --git a/assets/js/app.js b/assets/js/app.js index 5faf26a..aeef705 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -1,14 +1,14 @@ -// Establish Phoenix Socket and LiveView configuration. -import { Socket, LongPoll } from "phoenix"; -import { LiveSocket } from "phoenix_live_view"; +// Phoenix assets are imported from dependencies. import topbar from "topbar"; let csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute("content"); -let socketPath = document.querySelector("meta[name='socket-path']").getAttribute("content"); -let socketTransport = document.querySelector("meta[name='socket-transport']").getAttribute("content"); -let normalizedTransport = (socketTransport == "longpoll") ? LongPoll : WebSocket; +let livePath = document.querySelector("meta[name='live-path']").getAttribute("content"); +let liveTransport = document .querySelector("meta[name='live-transport']") .getAttribute("content"); -let liveSocket = new LiveSocket(socketPath, Socket, { transport: normalizedTransport, params: { _csrf_token: csrfToken }}); +let liveSocket = new LiveView.LiveSocket(livePath, Phoenix.Socket, { + transport: liveTransport === "longpoll" ? Phoenix.LongPoll : WebSocket, + params: { _csrf_token: csrfToken }, +}); // Show progress bar on live navigation and form submits topbar.config({ barColors: { 0: "#29d" }, shadowColor: "rgba(0, 0, 0, .3)" }); diff --git a/dev.exs b/dev.exs index af25241..a2f0427 100644 --- a/dev.exs +++ b/dev.exs @@ -5,7 +5,7 @@ Mix.install([ {:ecto_sqlite3, ">= 0.0.0"}, {:error_tracker, path: ".", force: true}, - {:phoenix_playground, "~> 0.1.7"} + {:phoenix_playground, "~> 0.1.8"} ]) otp_app = :error_tracker_dev diff --git a/lib/error_tracker/web.ex b/lib/error_tracker/web.ex index 448909d..c04dd8b 100644 --- a/lib/error_tracker/web.ex +++ b/lib/error_tracker/web.ex @@ -62,7 +62,7 @@ defmodule ErrorTracker.Web do ```elixir config :error_tracker, socket: [ - path: "/my-custom-socket-path" + path: "/my-custom-live-path" transport: :longpoll # (accepted values are :longpoll or :websocket) ] ``` diff --git a/lib/error_tracker/web/components/core_components.ex b/lib/error_tracker/web/components/core_components.ex index 12eb26d..4c413b4 100644 --- a/lib/error_tracker/web/components/core_components.ex +++ b/lib/error_tracker/web/components/core_components.ex @@ -26,7 +26,7 @@ defmodule ErrorTracker.Web.CoreComponents do ]} {@rest} > - <%= render_slot(@inner_block) %> + {render_slot(@inner_block)} """ end @@ -42,7 +42,7 @@ defmodule ErrorTracker.Web.CoreComponents do ]} {@rest} > - <%= render_slot(@inner_block) %> + {render_slot(@inner_block)} """ end @@ -80,7 +80,7 @@ defmodule ErrorTracker.Web.CoreComponents do class={["text-sm font-medium me-2 py-1 px-2 rounded-lg ring-1 ring-inset", @color_class]} {@rest} > - <%= render_slot(@inner_block) %> + {render_slot(@inner_block)} """ end @@ -124,9 +124,9 @@ defmodule ErrorTracker.Web.CoreComponents do :if={assigns[:title]} class={["text-sm font-semibold mb-2 uppercase text-gray-400", @title_class]} > - <%= @title %> + {@title} - <%= render_slot(@inner_block) %> + {render_slot(@inner_block)} """ end diff --git a/lib/error_tracker/web/components/layouts.ex b/lib/error_tracker/web/components/layouts.ex index 2ad77a4..9714c81 100644 --- a/lib/error_tracker/web/components/layouts.ex +++ b/lib/error_tracker/web/components/layouts.ex @@ -2,16 +2,25 @@ defmodule ErrorTracker.Web.Layouts do @moduledoc false use ErrorTracker.Web, :html - @default_socket_config %{path: "/live", transport: :websocket} + phoenix_js_paths = + for app <- ~w[phoenix phoenix_html phoenix_live_view]a do + path = Application.app_dir(app, ["priv", "static", "#{app}.js"]) + Module.put_attribute(__MODULE__, :external_resource, path) + path + end + + @static_path Application.app_dir(:error_tracker, ["priv", "static"]) + @external_resource css_path = Path.join(@static_path, "app.css") + @external_resource js_path = Path.join(@static_path, "app.js") - @css_path Application.app_dir(:error_tracker, ["priv", "static", "app.css"]) - @js_path Application.app_dir(:error_tracker, ["priv", "static", "app.js"]) + @css File.read!(css_path) - @external_resource @css_path - @external_resource @js_path + @js """ + #{for path <- phoenix_js_paths, do: path |> File.read!() |> String.replace("//# sourceMappingURL=", "// ")} + #{File.read!(js_path)} + """ - @css File.read!(@css_path) - @js File.read!(@js_path) + @default_socket_config %{path: "/live", transport: :websocket} embed_templates "layouts/*" @@ -97,7 +106,7 @@ defmodule ErrorTracker.Web.Layouts do class="whitespace-nowrap flex-0 block py-2 px-3 rounded-lg text-white hover:text-white hover:bg-gray-700 md:hover:bg-transparent md:border-0 md:hover:text-sky-500" {@rest} > - <%= render_slot(@inner_block) %> + {render_slot(@inner_block)} """ diff --git a/lib/error_tracker/web/components/layouts/live.html.heex b/lib/error_tracker/web/components/layouts/live.html.heex index b6b6845..a495577 100644 --- a/lib/error_tracker/web/components/layouts/live.html.heex +++ b/lib/error_tracker/web/components/layouts/live.html.heex @@ -1,4 +1,4 @@ <.navbar id="navbar" {assigns} />
- <%= @inner_content %> + {@inner_content}
diff --git a/lib/error_tracker/web/components/layouts/root.html.heex b/lib/error_tracker/web/components/layouts/root.html.heex index e1b694a..578e781 100644 --- a/lib/error_tracker/web/components/layouts/root.html.heex +++ b/lib/error_tracker/web/components/layouts/root.html.heex @@ -5,10 +5,10 @@ - - + + - <%= assigns[:page_title] || "🐛 ErrorTracker" %> + {assigns[:page_title] || "🐛 ErrorTracker"}