Remove automatic telemetry querying, remove battery pane, add telemetry history pane

This commit is contained in:
Gnome Adrift
2026-04-01 11:54:39 -07:00
committed by Jack Kingsman
parent 87df4b4aa1
commit c808f0930b
19 changed files with 272 additions and 596 deletions
+8 -24
View File
@@ -1,3 +1,4 @@
import json
import logging
from app.database import db
@@ -10,18 +11,16 @@ class RepeaterTelemetryRepository:
async def record(
public_key: str,
timestamp: int,
battery_volts: float,
uptime_seconds: int | None = None,
noise_floor_dbm: int | None = None,
data: dict,
) -> None:
"""Insert a telemetry history row."""
"""Insert a telemetry history row with the full status snapshot as JSON."""
await db.conn.execute(
"""
INSERT INTO repeater_telemetry_history
(public_key, timestamp, battery_volts, uptime_seconds, noise_floor_dbm)
VALUES (?, ?, ?, ?, ?)
(public_key, timestamp, data)
VALUES (?, ?, ?)
""",
(public_key, timestamp, battery_volts, uptime_seconds, noise_floor_dbm),
(public_key, timestamp, json.dumps(data)),
)
await db.conn.commit()
@@ -30,7 +29,7 @@ class RepeaterTelemetryRepository:
"""Return telemetry rows for a repeater since a given timestamp, ordered ASC."""
cursor = await db.conn.execute(
"""
SELECT timestamp, battery_volts, uptime_seconds, noise_floor_dbm
SELECT timestamp, data
FROM repeater_telemetry_history
WHERE public_key = ? AND timestamp >= ?
ORDER BY timestamp ASC
@@ -41,22 +40,7 @@ class RepeaterTelemetryRepository:
return [
{
"timestamp": row["timestamp"],
"battery_volts": row["battery_volts"],
"uptime_seconds": row["uptime_seconds"],
"noise_floor_dbm": row["noise_floor_dbm"],
"data": json.loads(row["data"]),
}
for row in rows
]
@staticmethod
async def prune_old(max_age_seconds: int) -> int:
"""Delete rows older than max_age_seconds. Returns count of deleted rows."""
import time
cutoff = int(time.time()) - max_age_seconds
cursor = await db.conn.execute(
"DELETE FROM repeater_telemetry_history WHERE timestamp < ?",
(cutoff,),
)
await db.conn.commit()
return cursor.rowcount
+1 -27
View File
@@ -29,8 +29,7 @@ class AppSettingsRepository:
SELECT max_radio_contacts, favorites, auto_decrypt_dm_on_advert,
sidebar_sort_order, last_message_times, preferences_migrated,
advert_interval, last_advert_time, flood_scope,
blocked_keys, blocked_names, discovery_blocked_types,
telemetry_tracked_keys
blocked_keys, blocked_names, discovery_blocked_types
FROM app_settings WHERE id = 1
"""
)
@@ -90,14 +89,6 @@ class AppSettingsRepository:
except (json.JSONDecodeError, TypeError):
discovery_blocked_types = []
# Parse telemetry_tracked_keys JSON
telemetry_tracked_keys: list[str] = []
if row["telemetry_tracked_keys"]:
try:
telemetry_tracked_keys = json.loads(row["telemetry_tracked_keys"])
except (json.JSONDecodeError, TypeError):
telemetry_tracked_keys = []
# Validate sidebar_sort_order (fallback to "recent" if invalid)
sort_order = row["sidebar_sort_order"]
if sort_order not in ("recent", "alpha"):
@@ -116,7 +107,6 @@ class AppSettingsRepository:
blocked_keys=blocked_keys,
blocked_names=blocked_names,
discovery_blocked_types=discovery_blocked_types,
telemetry_tracked_keys=telemetry_tracked_keys,
)
@staticmethod
@@ -133,7 +123,6 @@ class AppSettingsRepository:
blocked_keys: list[str] | None = None,
blocked_names: list[str] | None = None,
discovery_blocked_types: list[int] | None = None,
telemetry_tracked_keys: list[str] | None = None,
) -> AppSettings:
"""Update app settings. Only provided fields are updated."""
updates = []
@@ -188,10 +177,6 @@ class AppSettingsRepository:
updates.append("discovery_blocked_types = ?")
params.append(json.dumps(discovery_blocked_types))
if telemetry_tracked_keys is not None:
updates.append("telemetry_tracked_keys = ?")
params.append(json.dumps(telemetry_tracked_keys))
if updates:
query = f"UPDATE app_settings SET {', '.join(updates)} WHERE id = 1"
await db.conn.execute(query, params)
@@ -241,17 +226,6 @@ class AppSettingsRepository:
new_names = settings.blocked_names + [name]
return await AppSettingsRepository.update(blocked_names=new_names)
@staticmethod
async def toggle_telemetry_tracked_key(key: str) -> AppSettings:
"""Toggle a public key in the telemetry tracking list. Keys are normalized to lowercase."""
normalized = key.lower()
settings = await AppSettingsRepository.get()
if normalized in settings.telemetry_tracked_keys:
new_keys = [k for k in settings.telemetry_tracked_keys if k != normalized]
else:
new_keys = settings.telemetry_tracked_keys + [normalized]
return await AppSettingsRepository.update(telemetry_tracked_keys=new_keys)
@staticmethod
async def migrate_preferences_from_frontend(
favorites: list[dict],