Change wording from delete session to close session (#160)

This commit is contained in:
Jonatan Kłosko 2021-04-12 23:24:26 +02:00 committed by GitHub
parent 5f5ef1d0b6
commit d8213c3f68
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 56 additions and 58 deletions

View file

@ -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

View file

@ -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

View 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

View file

@ -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

View file

@ -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>

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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