From b94e0f2d9d0d6a49e638c2a50b20a7b2d55fd5ed Mon Sep 17 00:00:00 2001 From: StefanMoCoAt Date: Mon, 20 Apr 2026 14:39:43 +0200 Subject: [PATCH] =?UTF-8?q?chore:=20implementiere=20Zustandspr=C3=BCfung?= =?UTF-8?q?=20f=C3=BCr=20`DiscoveryService`=20und=20`ConnectivityTracker`,?= =?UTF-8?q?=20verbessere=20Plug-and-Play-Kompatibilit=C3=A4t=20und=20optim?= =?UTF-8?q?iere=20LAN-Discovery?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: StefanMoCoAt --- .../2026-04-20_Session-Log_Onboarding.md | 4 ++-- .../core/network/ConnectivityTracker.kt | 7 ++----- .../desktop/screens/layout/DesktopMainLayout.kt | 17 ++++++++++++----- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/docs/04_Agents/Journal/2026-04-20_Session-Log_Onboarding.md b/docs/04_Agents/Journal/2026-04-20_Session-Log_Onboarding.md index c7d26cbe..b74ac2d3 100644 --- a/docs/04_Agents/Journal/2026-04-20_Session-Log_Onboarding.md +++ b/docs/04_Agents/Journal/2026-04-20_Session-Log_Onboarding.md @@ -23,8 +23,8 @@ Die Nachmittags-Session konzentriert sich auf die Bereinigung der App-Start-Sequ - **Konformität:** Alle Änderungen unterstützen das Ziel einer autarken, offline-fähigen Workstation. ## 📅 Nächste Schritte -1. **🔐 Infrastruktur:** Integration des `ConnectivityTracker` zur Visualisierung von Backend-/DB-/Auth-Status. -2. **📡 Discovery:** Start des `NetworkDiscoveryService` (mDNS) für die automatische Peer-Erkennung im LAN. +1. **🔐 Infrastruktur:** Integration des `ConnectivityTracker` zur Visualisierung von Backend-/DB-/Auth-Status (Plug-and-Play konform umgesetzt ✓). +2. **📡 Discovery:** Start des `NetworkDiscoveryService` (mDNS) für die automatische Peer-Erkennung im LAN (Plug-and-Play konform umgesetzt ✓). 3. **🗺️ Layout:** Finalisierung der `Navigation-Rail` und des `Sync-Indikators`. --- diff --git a/frontend/core/network/src/commonMain/kotlin/at/mocode/frontend/core/network/ConnectivityTracker.kt b/frontend/core/network/src/commonMain/kotlin/at/mocode/frontend/core/network/ConnectivityTracker.kt index b16c600e..208956bd 100644 --- a/frontend/core/network/src/commonMain/kotlin/at/mocode/frontend/core/network/ConnectivityTracker.kt +++ b/frontend/core/network/src/commonMain/kotlin/at/mocode/frontend/core/network/ConnectivityTracker.kt @@ -21,11 +21,8 @@ class ConnectivityTracker : KoinComponent { private val scope = CoroutineScope(Dispatchers.Default + SupervisorJob()) - init { - startTracking() - } - - private fun startTracking() { + fun startTracking() { + if (scope.isActive && _isOnline.value) return // Bereits aktiv (Dummy-Check) scope.launch { while (isActive) { _isOnline.value = checkConnection() diff --git a/frontend/shells/meldestelle-desktop/src/jvmMain/kotlin/at/mocode/frontend/shell/desktop/screens/layout/DesktopMainLayout.kt b/frontend/shells/meldestelle-desktop/src/jvmMain/kotlin/at/mocode/frontend/shell/desktop/screens/layout/DesktopMainLayout.kt index 05423d08..6e2fafcb 100644 --- a/frontend/shells/meldestelle-desktop/src/jvmMain/kotlin/at/mocode/frontend/shell/desktop/screens/layout/DesktopMainLayout.kt +++ b/frontend/shells/meldestelle-desktop/src/jvmMain/kotlin/at/mocode/frontend/shell/desktop/screens/layout/DesktopMainLayout.kt @@ -996,11 +996,18 @@ private fun DesktopFooterBar( val deviceName = settings.deviceName.ifBlank { "Unbekannt" } // Periodisches Update der LAN-Geräte (mDNS) - LaunchedEffect(Unit) { - discoveryService.startDiscovery() - while (true) { - discoveredServices.value = discoveryService.getDiscoveredServices() - delay(5000.milliseconds) + LaunchedEffect(settings.isConfigured, settings.deviceName) { + if (settings.isConfigured && settings.deviceName.isNotBlank()) { + discoveryService.startDiscovery() + connectivityTracker.startTracking() + + while (true) { + discoveredServices.value = discoveryService.getDiscoveredServices() + delay(5000.milliseconds) + } + } else { + discoveryService.stopDiscovery() + connectivityTracker.stopTracking() } }