From 82909f7f358a5fba042f7e6e4b383a8a66139dd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Mon, 17 Jul 2023 10:56:30 +0200 Subject: [PATCH] Pass only the Livebook PID to child LiveViews (#2081) --- lib/livebook_web/live/session_live.ex | 2 +- lib/livebook_web/live/session_live/attached_live.ex | 8 +++++++- .../live/session_live/elixir_standalone_live.ex | 8 +++++++- lib/livebook_web/live/session_live/embedded_live.ex | 8 +++++++- lib/livebook_web/live/session_live/package_search_live.ex | 4 ++-- lib/livebook_web/live/session_live/runtime_component.ex | 2 +- 6 files changed, 25 insertions(+), 7 deletions(-) diff --git a/lib/livebook_web/live/session_live.ex b/lib/livebook_web/live/session_live.ex index 19b014ee8..e75c1702e 100644 --- a/lib/livebook_web/live/session_live.ex +++ b/lib/livebook_web/live/session_live.ex @@ -554,7 +554,7 @@ defmodule LivebookWeb.SessionLive do <%= live_render(@socket, LivebookWeb.SessionLive.PackageSearchLive, id: "package-search", session: %{ - "session" => @session, + "session_pid" => @session.pid, "runtime" => @data_view.runtime, "return_to" => @self_path } diff --git a/lib/livebook_web/live/session_live/attached_live.ex b/lib/livebook_web/live/session_live/attached_live.ex index cfc1a611e..b58c13364 100644 --- a/lib/livebook_web/live/session_live/attached_live.ex +++ b/lib/livebook_web/live/session_live/attached_live.ex @@ -4,7 +4,13 @@ defmodule LivebookWeb.SessionLive.AttachedLive do alias Livebook.{Session, Runtime} @impl true - def mount(_params, %{"session" => session, "current_runtime" => current_runtime}, socket) do + def mount( + _params, + %{"session_pid" => session_pid, "current_runtime" => current_runtime}, + socket + ) do + session = Session.get_by_pid(session_pid) + unless Livebook.Config.runtime_enabled?(Livebook.Runtime.Attached) do raise "runtime module not allowed" end diff --git a/lib/livebook_web/live/session_live/elixir_standalone_live.ex b/lib/livebook_web/live/session_live/elixir_standalone_live.ex index 18b8bf4ac..2a039285f 100644 --- a/lib/livebook_web/live/session_live/elixir_standalone_live.ex +++ b/lib/livebook_web/live/session_live/elixir_standalone_live.ex @@ -4,7 +4,13 @@ defmodule LivebookWeb.SessionLive.ElixirStandaloneLive do alias Livebook.{Session, Runtime} @impl true - def mount(_params, %{"session" => session, "current_runtime" => current_runtime}, socket) do + def mount( + _params, + %{"session_pid" => session_pid, "current_runtime" => current_runtime}, + socket + ) do + session = Session.get_by_pid(session_pid) + unless Livebook.Config.runtime_enabled?(Livebook.Runtime.ElixirStandalone) do raise "runtime module not allowed" end diff --git a/lib/livebook_web/live/session_live/embedded_live.ex b/lib/livebook_web/live/session_live/embedded_live.ex index 5476e2252..8ade06594 100644 --- a/lib/livebook_web/live/session_live/embedded_live.ex +++ b/lib/livebook_web/live/session_live/embedded_live.ex @@ -4,7 +4,13 @@ defmodule LivebookWeb.SessionLive.EmbeddedLive do alias Livebook.{Session, Runtime} @impl true - def mount(_params, %{"session" => session, "current_runtime" => current_runtime}, socket) do + def mount( + _params, + %{"session_pid" => session_pid, "current_runtime" => current_runtime}, + socket + ) do + session = Session.get_by_pid(session_pid) + unless Livebook.Config.runtime_enabled?(Livebook.Runtime.Embedded) do raise "runtime module not allowed" end diff --git a/lib/livebook_web/live/session_live/package_search_live.ex b/lib/livebook_web/live/session_live/package_search_live.ex index 503f90a2e..d0937d90e 100644 --- a/lib/livebook_web/live/session_live/package_search_live.ex +++ b/lib/livebook_web/live/session_live/package_search_live.ex @@ -4,12 +4,12 @@ defmodule LivebookWeb.SessionLive.PackageSearchLive do @impl true def mount( _params, - %{"session" => session, "runtime" => runtime, "return_to" => return_to}, + %{"session_pid" => session_pid, "runtime" => runtime, "return_to" => return_to}, socket ) do socket = assign(socket, - session: session, + session: Livebook.Session.get_by_pid(session_pid), runtime: runtime, return_to: return_to, search: "", diff --git a/lib/livebook_web/live/session_live/runtime_component.ex b/lib/livebook_web/live/session_live/runtime_component.ex index eaeef062d..f302d5b37 100644 --- a/lib/livebook_web/live/session_live/runtime_component.ex +++ b/lib/livebook_web/live/session_live/runtime_component.ex @@ -61,7 +61,7 @@ defmodule LivebookWeb.SessionLive.RuntimeComponent do
<%= live_render(@socket, live_view_for_type(@type), id: "runtime-config-#{@type}", - session: %{"session" => @session, "current_runtime" => @runtime} + session: %{"session_pid" => @session.pid, "current_runtime" => @runtime} ) %>