From 1f5e5967edb4146b10f077dd7d38e73385b2ebfd Mon Sep 17 00:00:00 2001
From: Matthias Nott <mnott@mnsoft.org>
Date: Wed, 01 Apr 2026 18:29:13 +0200
Subject: [PATCH] feat: show connection method (Local/VPN/Remote/Discovered) in app bar and settings
---
lib/services/mqtt_service.dart | 21 +++++++++++++++++++--
1 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/lib/services/mqtt_service.dart b/lib/services/mqtt_service.dart
index a872fd7..e50adcf 100644
--- a/lib/services/mqtt_service.dart
+++ b/lib/services/mqtt_service.dart
@@ -60,6 +60,8 @@
// Callbacks
void Function(ConnectionStatus status)? onStatusChanged;
void Function(String detail)? onStatusDetail; // "Probing local...", "Scanning network..."
+ String? connectedHost; // The host we're currently connected to
+ String? connectedVia; // "Local", "VPN", "Remote", "Bonjour", "Scan"
void Function(Map<String, dynamic> message)? onMessage;
void Function()? onOpen;
void Function()? onClose;
@@ -158,12 +160,27 @@
}
if (winner != null && !_intentionalClose) {
- _mqttLog('MQTT: winner: $winner, connecting...');
- onStatusDetail?.call('Connecting to $winner...');
+ // Determine connection method label
+ if (winner == config.localHost) {
+ connectedVia = 'Local';
+ } else if (winner == config.vpnHost) {
+ connectedVia = 'VPN';
+ } else if (winner == config.host) {
+ connectedVia = 'Remote';
+ } else if (winner == _lastDiscoveredHost) {
+ connectedVia = 'Discovered';
+ } else {
+ connectedVia = winner;
+ }
+ connectedHost = winner;
+ _mqttLog('MQTT: winner: $winner ($connectedVia), connecting...');
+ onStatusDetail?.call('Connecting via $connectedVia...');
try {
if (await _tryConnect(winner, clientId, timeout: 5000)) return;
} catch (e) {
_mqttLog('MQTT: connect to $winner failed: $e');
+ connectedHost = null;
+ connectedVia = null;
}
}
--
Gitblit v1.3.1