Packages
livebook
0.14.0-rc.1
0.19.8
0.19.7
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.14.0-rc.1
0.14.0-rc.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
Automate code & data workflows with interactive notebooks
Current section
Files
Jump to
Current section
Files
lib/livebook_web/live/hooks/sidebar_hook.ex
defmodule LivebookWeb.SidebarHook do
require Logger
import Phoenix.Component
import Phoenix.LiveView
import LivebookWeb.Confirm
def on_mount(:default, _params, _session, socket) do
if connected?(socket) do
Livebook.Hubs.Broadcasts.subscribe([:crud, :connection])
Phoenix.PubSub.subscribe(Livebook.PubSub, "sidebar")
end
socket =
socket
|> assign(saved_hubs: Livebook.Hubs.get_metadata())
|> attach_hook(:hubs, :handle_info, &handle_info/2)
|> attach_hook(:shutdown, :handle_info, &handle_info/2)
|> attach_hook(:shutdown, :handle_event, &handle_event/3)
{:cont, socket}
end
defp handle_info(:shutdown, socket) do
{:halt, put_flash(socket, :info, "Livebook is shutting down. You can close this page.")}
end
@connection_events ~w(hub_connected hub_changed hub_deleted)a
defp handle_info(event, socket) when elem(event, 0) in @connection_events do
{:cont, assign(socket, saved_hubs: Livebook.Hubs.get_metadata())}
end
defp handle_info({:hub_connection_failed, _hub_id, _reason}, socket) do
{:cont, assign(socket, saved_hubs: Livebook.Hubs.get_metadata())}
end
defp handle_info({:hub_server_error, _hub_id, error}, socket) do
{:cont,
socket
|> assign(saved_hubs: Livebook.Hubs.get_metadata())
|> put_flash(:error, error)}
end
defp handle_info(_event, socket), do: {:cont, socket}
defp handle_event("shutdown", _params, socket) do
on_confirm = fn socket ->
Livebook.Config.shutdown()
socket
end
{:halt,
confirm(socket, on_confirm,
title: "Shut Down",
description: "Are you sure you want to shut down Livebook now?",
confirm_text: "Shut Down",
confirm_icon: "shut-down-line"
)}
end
defp handle_event(_event, _params, socket), do: {:cont, socket}
end