mirror of
https://github.com/livebook-dev/livebook.git
synced 2025-09-06 04:54:29 +08:00
Change wording from delete session to close session (#160)
This commit is contained in:
parent
5f5ef1d0b6
commit
d8213c3f68
9 changed files with 56 additions and 58 deletions
|
@ -52,12 +52,12 @@ defmodule Livebook.SessionSupervisor do
|
|||
@doc """
|
||||
Asynchronously stops a session process identified by the given id.
|
||||
|
||||
Broadcasts `{:session_delete, id}` message under the `"sessions"` topic.
|
||||
Broadcasts `{:session_closed, id}` message under the `"sessions"` topic.
|
||||
"""
|
||||
@spec delete_session(Session.id()) :: :ok
|
||||
def delete_session(id) do
|
||||
@spec close_session(Session.id()) :: :ok
|
||||
def close_session(id) do
|
||||
Session.close(id)
|
||||
broadcast_sessions_message({:session_deleted, id})
|
||||
broadcast_sessions_message({:session_closed, id})
|
||||
:ok
|
||||
end
|
||||
|
||||
|
|
|
@ -90,9 +90,9 @@ defmodule LivebookWeb.HomeLive do
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<%= if @live_action == :delete_session do %>
|
||||
<%= live_modal @socket, LivebookWeb.SessionLive.DeleteSessionComponent,
|
||||
id: :delete_session_modal,
|
||||
<%= if @live_action == :close_session do %>
|
||||
<%= live_modal @socket, LivebookWeb.SessionLive.CloseSessionComponent,
|
||||
id: :close_session_modal,
|
||||
return_to: Routes.home_path(@socket, :page),
|
||||
session_summary: @session_summary %>
|
||||
<% end %>
|
||||
|
@ -148,7 +148,7 @@ defmodule LivebookWeb.HomeLive do
|
|||
{:noreply, assign(socket, session_summaries: session_summaries)}
|
||||
end
|
||||
|
||||
def handle_info({:session_deleted, id}, socket) do
|
||||
def handle_info({:session_closed, id}, socket) do
|
||||
session_summaries = Enum.reject(socket.assigns.session_summaries, &(&1.session_id == id))
|
||||
{:noreply, assign(socket, session_summaries: session_summaries)}
|
||||
end
|
||||
|
|
34
lib/livebook_web/live/home_live/close_session_component.ex
Normal file
34
lib/livebook_web/live/home_live/close_session_component.ex
Normal file
|
@ -0,0 +1,34 @@
|
|||
defmodule LivebookWeb.SessionLive.CloseSessionComponent do
|
||||
use LivebookWeb, :live_component
|
||||
|
||||
alias Livebook.SessionSupervisor
|
||||
|
||||
@impl true
|
||||
def render(assigns) do
|
||||
~L"""
|
||||
<div class="p-6 pb-4 max-w-xl w-screen flex flex-col space-y-8">
|
||||
<h3 class="text-2xl font-semibold text-gray-800">
|
||||
Close session
|
||||
</h3>
|
||||
<p class="text-gray-700">
|
||||
Are you sure you want to close this section -
|
||||
<span class="font-semibold">“<%= @session_summary.notebook_name %>”</span>?
|
||||
This won't delete any persisted files.
|
||||
</p>
|
||||
<div class="mt-8 flex justify-end space-x-2">
|
||||
<button class="button button-red" phx-click="close" phx-target="<%= @myself %>">
|
||||
<%= remix_icon("close-circle-line", class: "align-middle mr-1") %>
|
||||
Close session
|
||||
</button>
|
||||
<%= live_patch "Cancel", to: @return_to, class: "button button-outlined-gray" %>
|
||||
</div>
|
||||
</div>
|
||||
"""
|
||||
end
|
||||
|
||||
@impl true
|
||||
def handle_event("close", %{}, socket) do
|
||||
SessionSupervisor.close_session(socket.assigns.session_summary.session_id)
|
||||
{:noreply, push_patch(socket, to: socket.assigns.return_to)}
|
||||
end
|
||||
end
|
|
@ -1,36 +0,0 @@
|
|||
defmodule LivebookWeb.SessionLive.DeleteSessionComponent do
|
||||
use LivebookWeb, :live_component
|
||||
|
||||
alias Livebook.SessionSupervisor
|
||||
|
||||
@impl true
|
||||
def render(assigns) do
|
||||
~L"""
|
||||
<div class="p-6 pb-4 max-w-md w-screen flex flex-col space-y-8">
|
||||
<h3 class="text-2xl font-semibold text-gray-800">
|
||||
Delete session
|
||||
</h3>
|
||||
<p class="text-gray-700">
|
||||
Are you sure you want to delete this section -
|
||||
<span class="font-semibold">
|
||||
“<%= @session_summary.notebook_name %>”
|
||||
</span>?
|
||||
This won't delete any persisted files.
|
||||
</p>
|
||||
<div class="mt-8 flex justify-end space-x-2">
|
||||
<button class="button button-red" phx-click="delete" phx-target="<%= @myself %>">
|
||||
<%= remix_icon("delete-bin-6-line", class: "align-middle mr-1") %>
|
||||
Delete session
|
||||
</button>
|
||||
<%= live_patch "Cancel", to: @return_to, class: "button button-outlined-gray" %>
|
||||
</div>
|
||||
</div>
|
||||
"""
|
||||
end
|
||||
|
||||
@impl true
|
||||
def handle_event("delete", %{}, socket) do
|
||||
SessionSupervisor.delete_session(socket.assigns.session_summary.session_id)
|
||||
{:noreply, push_patch(socket, to: socket.assigns.return_to)}
|
||||
end
|
||||
end
|
|
@ -26,10 +26,10 @@ defmodule LivebookWeb.SessionLive.SessionsComponent do
|
|||
<%= remix_icon("git-branch-line") %>
|
||||
<span class="font-medium">Fork</span>
|
||||
</button>
|
||||
<%= live_patch to: Routes.home_path(@socket, :delete_session, summary.session_id),
|
||||
<%= live_patch to: Routes.home_path(@socket, :close_session, summary.session_id),
|
||||
class: "flex space-x-3 px-5 py-2 items-center text-red-600 hover:bg-gray-50" do %>
|
||||
<%= remix_icon("delete-bin-6-line") %>
|
||||
<span class="font-medium">Delete</span>
|
||||
<%= remix_icon("close-circle-line") %>
|
||||
<span class="font-medium">Close</span>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -15,7 +15,7 @@ defmodule LivebookWeb.Router do
|
|||
pipe_through :browser
|
||||
|
||||
live "/", HomeLive, :page
|
||||
live "/home/sessions/:session_id/delete", HomeLive, :delete_session
|
||||
live "/home/sessions/:session_id/close", HomeLive, :close_session
|
||||
live "/sessions/:id", SessionLive, :page
|
||||
live "/sessions/:id/shortcuts", SessionLive, :shortcuts
|
||||
live "/sessions/:id/settings/:tab", SessionLive, :settings
|
||||
|
|
|
@ -19,13 +19,13 @@ defmodule Livebook.SessionSupervisorTest do
|
|||
end
|
||||
end
|
||||
|
||||
describe "delete_session/1" do
|
||||
describe "close_session/1" do
|
||||
test "stops the session process identified by the given id" do
|
||||
{:ok, id} = SessionSupervisor.create_session()
|
||||
{:ok, pid} = SessionSupervisor.get_session_pid(id)
|
||||
ref = Process.monitor(pid)
|
||||
|
||||
SessionSupervisor.delete_session(id)
|
||||
SessionSupervisor.close_session(id)
|
||||
|
||||
assert_receive {:DOWN, ^ref, :process, _, _}
|
||||
refute has_child_with_pid?(SessionSupervisor, pid)
|
||||
|
@ -35,9 +35,9 @@ defmodule Livebook.SessionSupervisorTest do
|
|||
Phoenix.PubSub.subscribe(Livebook.PubSub, "sessions")
|
||||
{:ok, id} = SessionSupervisor.create_session()
|
||||
|
||||
SessionSupervisor.delete_session(id)
|
||||
SessionSupervisor.close_session(id)
|
||||
|
||||
assert_receive {:session_deleted, ^id}
|
||||
assert_receive {:session_closed, ^id}
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ defmodule LivebookWeb.SessionControllerTest do
|
|||
assert conn.status == 404
|
||||
assert conn.resp_body == "Not found"
|
||||
|
||||
SessionSupervisor.delete_session(session_id)
|
||||
SessionSupervisor.close_session(session_id)
|
||||
end
|
||||
|
||||
test "returns the image when it does exist", %{conn: conn} do
|
||||
|
@ -33,7 +33,7 @@ defmodule LivebookWeb.SessionControllerTest do
|
|||
assert conn.status == 200
|
||||
assert get_resp_header(conn, "content-type") == ["image/jpeg"]
|
||||
|
||||
SessionSupervisor.delete_session(session_id)
|
||||
SessionSupervisor.close_session(session_id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -96,7 +96,7 @@ defmodule LivebookWeb.HomeLiveTest do
|
|||
{:ok, id} = SessionSupervisor.create_session()
|
||||
assert render(view) =~ id
|
||||
|
||||
SessionSupervisor.delete_session(id)
|
||||
SessionSupervisor.close_session(id)
|
||||
refute render(view) =~ id
|
||||
end
|
||||
|
||||
|
@ -117,7 +117,7 @@ defmodule LivebookWeb.HomeLiveTest do
|
|||
assert render(view) =~ "My notebook - fork"
|
||||
end
|
||||
|
||||
test "allows deleting session after confirmation", %{conn: conn} do
|
||||
test "allows closing session after confirmation", %{conn: conn} do
|
||||
{:ok, id} = SessionSupervisor.create_session()
|
||||
|
||||
{:ok, view, _} = live(conn, "/")
|
||||
|
@ -125,11 +125,11 @@ defmodule LivebookWeb.HomeLiveTest do
|
|||
assert render(view) =~ id
|
||||
|
||||
view
|
||||
|> element(~s{[data-test-session-id="#{id}"] a}, "Delete")
|
||||
|> element(~s{[data-test-session-id="#{id}"] a}, "Close")
|
||||
|> render_click()
|
||||
|
||||
view
|
||||
|> element(~s{button}, "Delete session")
|
||||
|> element(~s{button}, "Close session")
|
||||
|> render_click()
|
||||
|
||||
refute render(view) =~ id
|
||||
|
|
Loading…
Add table
Reference in a new issue