defmodule AprsmeWeb.StatusLive.Index do @moduledoc """ LiveView for displaying real-time APRS-IS connection status """ use AprsmeWeb, :live_view # 30 seconds @refresh_interval 1_000 @impl true def mount(_params, _session, socket) do socket = assign(socket, page_title: "System Status", aprs_status: get_aprs_status(), version: get_app_version(), aprs_library_sha: get_aprs_library_sha(), is_latest_aprs_library: Aprsme.DependencyInfo.is_latest_aprs_library?(), current_time: DateTime.utc_now(), health_score: calculate_health_score(get_aprs_status()) ) if connected?(socket) do # Schedule the first refresh schedule_refresh() end {:ok, socket} end @impl true def handle_info(:refresh_status, socket) do socket = refresh_status(socket) # Schedule next refresh schedule_refresh() {:noreply, socket} end @impl true def render(assigns) do ~H"""
{get_health_description(@health_score, @aprs_status.connected)}