Files
elixirAI/lib/elixir_ai/chat_runner/liveview_session.ex
Alex Mickelson d5cd472bf5
Some checks failed
CI/CD Pipeline / build (push) Failing after 4s
runner code refactor, frontend papercuts
2026-03-23 13:13:55 -06:00

35 lines
1.0 KiB
Elixir

defmodule ElixirAi.ChatRunner.LiveviewSession do
require Logger
def handle_call(:get_liveview_pids, _from, state) do
{:reply, Map.keys(state.liveview_pids), state}
end
def handle_call({:register_liveview_pid, liveview_pid}, _from, state) do
ref = Process.monitor(liveview_pid)
{:reply, :ok, %{state | liveview_pids: Map.put(state.liveview_pids, liveview_pid, ref)}}
end
def handle_call({:deregister_liveview_pid, liveview_pid}, _from, state) do
case Map.pop(state.liveview_pids, liveview_pid) do
{nil, _} ->
{:reply, :ok, state}
{ref, new_pids} ->
Process.demonitor(ref, [:flush])
{:reply, :ok, %{state | liveview_pids: new_pids}}
end
end
def handle_down(ref, pid, _reason, state) do
case Map.get(state.liveview_pids, pid) do
^ref ->
Logger.info("ChatRunner #{state.name}: LiveView #{inspect(pid)} disconnected")
{:noreply, %{state | liveview_pids: Map.delete(state.liveview_pids, pid)}}
_ ->
{:noreply, state}
end
end
end