livebook/lib/livebook_app.ex
2023-06-20 13:13:38 +02:00

35 lines
753 B
Elixir

if Mix.target() == :app do
defmodule LivebookApp do
use GenServer
def start_link(arg) do
GenServer.start_link(__MODULE__, arg, name: __MODULE__)
end
@impl true
def init(_) do
{:ok, pid} = ElixirKit.start()
ref = Process.monitor(pid)
ElixirKit.publish("url", LivebookWeb.Endpoint.access_url())
{:ok, %{ref: ref}}
end
@impl true
def handle_info({:event, "open", url}, state) do
url
|> Livebook.Utils.expand_desktop_url()
|> Livebook.Utils.browser_open()
{:noreply, state}
end
@impl true
def handle_info({:DOWN, ref, :process, _, :shutdown}, state) when ref == state.ref do
Livebook.Config.shutdown()
{:noreply, state}
end
end
end