From 618593158d1790e3e5404d7c48602725bde17c5f Mon Sep 17 00:00:00 2001 From: Daniel Kukula <904179+dkuku@users.noreply.github.com> Date: Thu, 6 Jan 2022 17:37:55 +0000 Subject: [PATCH] Set page name when notebook is renamed (#844) * override tab name when notebook is renamed * set page_title in after operation function * add custom page title to all live pages * Revert "override tab name when notebook is renamed" This reverts commit 90303e08a8274b2c9e03fd9a547fc5bfaf601d7e. * add test for update --- lib/livebook_web/live/explore_live.ex | 3 ++- lib/livebook_web/live/home_live.ex | 3 ++- lib/livebook_web/live/session_live.ex | 9 +++++++++ lib/livebook_web/live/settings_live.ex | 3 ++- test/livebook_web/live/session_live_test.exs | 11 +++++++++++ 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/lib/livebook_web/live/explore_live.ex b/lib/livebook_web/live/explore_live.ex index 47967ce95..ec901c2b1 100644 --- a/lib/livebook_web/live/explore_live.ex +++ b/lib/livebook_web/live/explore_live.ex @@ -14,7 +14,8 @@ defmodule LivebookWeb.ExploreLive do {:ok, assign(socket, lead_notebook_info: lead_notebook_info, - notebook_infos: notebook_infos + notebook_infos: notebook_infos, + page_title: "Livebook - Explore" )} end diff --git a/lib/livebook_web/live/home_live.ex b/lib/livebook_web/live/home_live.ex index 5303feca6..3e504a8db 100644 --- a/lib/livebook_web/live/home_live.ex +++ b/lib/livebook_web/live/home_live.ex @@ -21,7 +21,8 @@ defmodule LivebookWeb.HomeLive do file: Livebook.Config.default_dir(), file_info: %{exists: true, access: :read_write}, sessions: sessions, - notebook_infos: notebook_infos + notebook_infos: notebook_infos, + page_title: "Livebook" )} end diff --git a/lib/livebook_web/live/session_live.ex b/lib/livebook_web/live/session_live.ex index feaf98b44..d778d4ad0 100644 --- a/lib/livebook_web/live/session_live.ex +++ b/lib/livebook_web/live/session_live.ex @@ -38,6 +38,7 @@ defmodule LivebookWeb.SessionLive do self: self(), data_view: data_to_view(data), autofocus_cell_id: autofocus_cell_id(data.notebook), + page_title: get_page_title(data.notebook.name), empty_default_runtime: Livebook.Config.default_runtime() |> elem(0) |> struct() ) |> assign_private(data: data) @@ -1083,6 +1084,10 @@ defmodule LivebookWeb.SessionLive do push_event(socket, "clients_updated", %{clients: updated_clients}) end + defp after_operation(socket, _prev_socket, {:set_notebook_name, _client_pid, name}) do + assign(socket, page_title: get_page_title(name)) + end + defp after_operation(socket, _prev_socket, {:insert_section, client_pid, _index, section_id}) do if client_pid == self() do push_event(socket, "section_inserted", %{section_id: section_id}) @@ -1425,4 +1430,8 @@ defmodule LivebookWeb.SessionLive do defp update_dirty_status(data_view, data) do put_in(data_view.dirty, data.dirty) end + + defp get_page_title(notebook_name) do + "Livebook - #{notebook_name}" + end end diff --git a/lib/livebook_web/live/settings_live.ex b/lib/livebook_web/live/settings_live.ex index 44d574c98..858939fd5 100644 --- a/lib/livebook_web/live/settings_live.ex +++ b/lib/livebook_web/live/settings_live.ex @@ -13,7 +13,8 @@ defmodule LivebookWeb.SettingsLive do {:ok, assign(socket, file_systems: file_systems, - file_systems_env: file_systems_env + file_systems_env: file_systems_env, + page_title: "Livebook - Settings" )} end diff --git a/test/livebook_web/live/session_live_test.exs b/test/livebook_web/live/session_live_test.exs index ad5c991b2..62d7b0429 100644 --- a/test/livebook_web/live/session_live_test.exs +++ b/test/livebook_web/live/session_live_test.exs @@ -28,6 +28,17 @@ defmodule LivebookWeb.SessionLiveTest do assert render(view) =~ "My notebook" end + test "renders an updated notebook name in title", %{conn: conn, session: session} do + {:ok, view, _} = live(conn, "/sessions/#{session.id}") + + assert page_title(view) =~ "Untitled notebook" + + Session.set_notebook_name(session.pid, "My notebook") + wait_for_session_update(session.pid) + + assert page_title(view) =~ "My notebook" + end + test "renders a newly inserted section", %{conn: conn, session: session} do {:ok, view, _} = live(conn, "/sessions/#{session.id}")