diff --git a/lib/livebook_web/live/app_live.ex b/lib/livebook_web/live/app_live.ex index 773347a4d..d871bed1a 100644 --- a/lib/livebook_web/live/app_live.ex +++ b/lib/livebook_web/live/app_live.ex @@ -62,10 +62,10 @@ defmodule LivebookWeb.AppLive do <% end %>

- +
<.link @@ -94,13 +94,15 @@ defmodule LivebookWeb.AppLive do def render(assigns), do: auth_placeholder(assigns) @impl true - def handle_event("new_session", %{}, socket) do + def handle_params(_params, _url, socket) when socket.assigns.live_action == :new_session do session_id = Livebook.App.get_session_id(socket.assigns.app.pid, user: socket.assigns.current_user) {:noreply, push_navigate(socket, to: ~p"/apps/#{socket.assigns.app.slug}/#{session_id}")} end + def handle_params(_params, _url, socket), do: {:noreply, socket} + @impl true def handle_info({:app_updated, app}, socket) do {:noreply, assign(socket, :app, app)} diff --git a/lib/livebook_web/router.ex b/lib/livebook_web/router.ex index d371e9536..ba2f5b68c 100644 --- a/lib/livebook_web/router.ex +++ b/lib/livebook_web/router.ex @@ -113,6 +113,7 @@ defmodule LivebookWeb.Router do pipe_through [:browser, :user] live "/apps/:slug", AppLive, :page + live "/apps/:slug/new", AppLive, :new_session live "/apps/:slug/authenticate", AppAuthLive, :page live "/apps/:slug/:id", AppSessionLive, :page diff --git a/test/livebook_web/live/app_live_test.exs b/test/livebook_web/live/app_live_test.exs index 4b6be821a..910f5b3e7 100644 --- a/test/livebook_web/live/app_live_test.exs +++ b/test/livebook_web/live/app_live_test.exs @@ -84,7 +84,7 @@ defmodule LivebookWeb.AppLiveTest do {:error, {:live_redirect, %{to: to}}} = view - |> element("button", "New session") + |> element("a", "New session") |> render_click() assert_receive {:app_updated, %{pid: ^app_pid, sessions: [%{id: session_id}]}}