defmodule AugieWeb.DashboardLive do
use Phoenix.LiveView, layout: {AugieWeb.LayoutView, "live.html"}
alias Augie.SerialTelemetry
alias Phoenix.PubSub
@moduledoc """
A live view which shows or hides the dashboard based on whether the Teensy USB
serial connection was found.
"""
def mount(_params, _context, socket) do
if connected?(socket), do: PubSub.subscribe(Augie.PubSub, "serial_telemetry")
{:ok,
assign(socket, connected: SerialTelemetry.connected?(), uarts: Circuits.UART.enumerate())}
end
def handle_info({:connected, false}, socket) do
{:noreply, assign(socket, connected: false, uarts: Circuits.UART.enumerate())}
def handle_info({:connected, _}, socket) do
{:noreply, assign(socket, connected: true, uarts: [])}