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() } }