Change new notebook button to link (#2036)

This commit is contained in:
Jonatan Kłosko 2023-07-04 14:46:19 +02:00 committed by GitHub
parent 27458f33f7
commit fb9148acf7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 21 additions and 24 deletions

View file

@ -692,7 +692,7 @@ Now we have everything we need to connect across notebooks.
### Notebook connections ### Notebook connections
In order to connect across notebooks, open up [a new empty notebook](/learn/notebooks/new) In order to connect across notebooks, open up [a new empty notebook](/new)
in a separate tab, copy and paste the code below to this new notebook, in a separate tab, copy and paste the code below to this new notebook,
and execute it: and execute it:

View file

@ -157,7 +157,7 @@ defmodule LivebookCLI.Server do
defp open_from_args(base_url, ["@new"]) do defp open_from_args(base_url, ["@new"]) do
base_url base_url
|> set_path("/learn/notebooks/new") |> set_path("/new")
|> Livebook.Utils.browser_open() |> Livebook.Utils.browser_open()
end end

View file

@ -48,10 +48,10 @@ defmodule LivebookWeb.HomeLive do
<.link navigate={~p"/open/file"} class="button-base button-outlined-gray whitespace-nowrap"> <.link navigate={~p"/open/file"} class="button-base button-outlined-gray whitespace-nowrap">
Open Open
</.link> </.link>
<button class="button-base button-blue" phx-click="new"> <.link class="button-base button-blue" patch={~p"/new"}>
<.remix_icon icon="add-line" class="align-middle mr-1" /> <.remix_icon icon="add-line" class="align-middle mr-1" />
<span>New notebook</span> <span>New notebook</span>
</button> </.link>
</div> </div>
</:topbar_action> </:topbar_action>
@ -68,10 +68,10 @@ defmodule LivebookWeb.HomeLive do
> >
Open Open
</.link> </.link>
<button class="button-base button-blue" phx-click="new"> <.link class="button-base button-blue" patch={~p"/new"}>
<.remix_icon icon="add-line" class="align-middle mr-1" /> <.remix_icon icon="add-line" class="align-middle mr-1" />
<span>New notebook</span> <span>New notebook</span>
</button> </.link>
</div> </div>
</div> </div>
@ -225,13 +225,13 @@ defmodule LivebookWeb.HomeLive do
{:noreply, assign(socket, session: session)} {:noreply, assign(socket, session: session)}
end end
def handle_params(_params, _url, socket), do: {:noreply, socket} def handle_params(%{}, _url, socket) when socket.assigns.live_action == :public_new_notebook do
@impl true
def handle_event("new", %{}, socket) do
{:noreply, create_session(socket)} {:noreply, create_session(socket)}
end end
def handle_params(_params, _url, socket), do: {:noreply, socket}
@impl true
def handle_event("unstar_notebook", %{"idx" => idx}, socket) do def handle_event("unstar_notebook", %{"idx" => idx}, socket) do
on_confirm = fn socket -> on_confirm = fn socket ->
%{file: file} = Enum.fetch!(socket.assigns.starred_notebooks, idx) %{file: file} = Enum.fetch!(socket.assigns.starred_notebooks, idx)

View file

@ -116,10 +116,6 @@ defmodule LivebookWeb.LearnLive do
end end
@impl true @impl true
def handle_params(%{"slug" => "new"}, _url, socket) do
{:noreply, create_session(socket)}
end
def handle_params(%{"slug" => slug}, _url, socket) do def handle_params(%{"slug" => slug}, _url, socket) do
{notebook, images} = Learn.notebook_by_slug!(slug) {notebook, images} = Learn.notebook_by_slug!(slug)
{:noreply, create_session(socket, notebook: notebook, images: images)} {:noreply, create_session(socket, notebook: notebook, images: images)}

View file

@ -101,6 +101,7 @@ defmodule LivebookWeb.Router do
scope "/", LivebookWeb do scope "/", LivebookWeb do
pipe_through [:browser, :auth] pipe_through [:browser, :auth]
live "/new", HomeLive, :public_new_notebook
live "/import", OpenLive, :public_import live "/import", OpenLive, :public_import
live "/open", OpenLive, :public_open live "/open", OpenLive, :public_open
end end

View file

@ -18,7 +18,7 @@ defmodule LivebookWeb.HomeLiveTest do
assert {:error, {:live_redirect, %{to: to}}} = assert {:error, {:live_redirect, %{to: to}}} =
view view
|> element(~s/[role="navigation"] button/, "New notebook") |> element(~s/[role="navigation"] a/, "New notebook")
|> render_click() |> render_click()
assert to =~ "/sessions/" assert to =~ "/sessions/"
@ -26,6 +26,15 @@ defmodule LivebookWeb.HomeLiveTest do
close_session_by_path(to) close_session_by_path(to)
end end
test "public new endpoint creates an empty session", %{conn: conn} do
assert {:error, {:live_redirect, %{to: to}}} = result = live(conn, ~p"/new")
{:ok, view, _} = follow_redirect(result, conn)
assert render(view) =~ "Untitled notebook"
close_session_by_path(to)
end
describe "sessions list" do describe "sessions list" do
test "lists running sessions", %{conn: conn} do test "lists running sessions", %{conn: conn} do
{:ok, session1} = Sessions.create_session() {:ok, session1} = Sessions.create_session()

View file

@ -19,15 +19,6 @@ defmodule LivebookWeb.LearnLiveTest do
close_session_by_path(to) close_session_by_path(to)
end end
test "link to a new notebook creates an empty session", %{conn: conn} do
assert {:error, {:live_redirect, %{to: to}}} = result = live(conn, ~p"/learn/notebooks/new")
{:ok, view, _} = follow_redirect(result, conn)
assert render(view) =~ "Untitled notebook"
close_session_by_path(to)
end
defp close_session_by_path("/sessions/" <> session_id) do defp close_session_by_path("/sessions/" <> session_id) do
{:ok, session} = Livebook.Sessions.fetch_session(session_id) {:ok, session} = Livebook.Sessions.fetch_session(session_id)
Livebook.Session.close(session.pid) Livebook.Session.close(session.pid)