mirror of
https://github.com/livebook-dev/livebook.git
synced 2025-10-10 13:38:09 +08:00
Change new notebook button to link (#2036)
This commit is contained in:
parent
27458f33f7
commit
fb9148acf7
7 changed files with 21 additions and 24 deletions
|
@ -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:
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Reference in a new issue