feat(desktop, network): Fehlerhandling verbessert, Tools-Menü erweitert und mDNS-Discovery optimiert
Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
+3
-3
@@ -73,13 +73,13 @@ fun main() = application {
|
||||
wsServer.start()
|
||||
val discovery = koin.get<NetworkDiscoveryService>()
|
||||
discovery.startDiscovery()
|
||||
// Im Host-Modus würden wir hier registerService aufrufen
|
||||
// Im Host-Modus würden wir hier registerService aufrufen.
|
||||
// Für den POC registrieren wir den lokalen Host-Dienst immer mit dem WS-Port
|
||||
try {
|
||||
discovery.registerService(wsServer.getPort())
|
||||
println("[DesktopApp] Discovery-Registrierung durchgeführt (Port ${wsServer.getPort()})")
|
||||
} catch (_: Exception) {
|
||||
println("[DesktopApp] Discovery-Registrierung fehlgeschlagen: ${'$'}{e.message}")
|
||||
} catch (e: Exception) {
|
||||
println("[DesktopApp] Discovery-Registrierung fehlgeschlagen: ${e.message}")
|
||||
}
|
||||
} catch(e: Exception) {
|
||||
println("[DesktopApp] POC-Dienste konnten nicht gestartet werden: ${e.message}")
|
||||
|
||||
+6
-6
@@ -24,14 +24,14 @@ class DesktopNavigationPort : NavigationPort {
|
||||
}
|
||||
|
||||
override fun navigateToScreen(screen: AppScreen) {
|
||||
println("[DesktopNav] navigateToScreen -> $screen")
|
||||
// Aktuellen Screen auf den Stack legen, falls er nicht derselbe ist
|
||||
val current = _currentScreen.value
|
||||
if (current != screen) {
|
||||
backStack.add(current)
|
||||
// Begrenzung des Backstacks auf z. B. 50 Einträge
|
||||
if (backStack.size > 50) backStack.removeAt(0)
|
||||
if (current == screen) {
|
||||
// Keine Aktion/kein Log bei identischem Ziel – beruhigt die Navigation
|
||||
return
|
||||
}
|
||||
println("[DesktopNav] navigateToScreen -> $screen")
|
||||
backStack.add(current)
|
||||
if (backStack.size > 50) backStack.removeAt(0)
|
||||
_currentScreen.value = screen
|
||||
}
|
||||
|
||||
|
||||
+28
-7
@@ -151,24 +151,45 @@ fun DesktopTopHeader(
|
||||
try {
|
||||
val backupService: BackupService = GlobalContext.get().get<BackupService> { parametersOf(deviceName) }
|
||||
val result = backupService.exportDelta("poc-backup", backupPath, sharedKey)
|
||||
result.onSuccess { _ -> println($$"[Backup] Erfolgreich exportiert: $path") }
|
||||
.onFailure { _ -> println($$"[Backup] Fehler: ${e.message}") }
|
||||
} catch (_: Exception) {
|
||||
println($$"[Backup] Fehler bei der Initialisierung: ${e.message}")
|
||||
result.onSuccess { fileName -> println("[Backup] Erfolgreich exportiert: $fileName") }
|
||||
.onFailure { ex -> println("[Backup] Fehler: ${ex.message}") }
|
||||
} catch (e: Exception) {
|
||||
println("[Backup] Fehler bei der Initialisierung: ${e.message}")
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
HorizontalDivider(Modifier, DividerDefaults.Thickness, DividerDefaults.color)
|
||||
DropdownMenuItem(
|
||||
text = { Text("Einstellungen-Ordner öffnen") },
|
||||
onClick = {
|
||||
menuOpen = false
|
||||
val settingsDir = DeviceInitializationSettingsManager.getSettingsFilePath()
|
||||
val parent = java.io.File(settingsDir).parentFile?.absolutePath ?: settingsDir
|
||||
try {
|
||||
// Versuche plattformspezifisch den Ordner zu öffnen
|
||||
val os = System.getProperty("os.name").lowercase()
|
||||
if (os.contains("win")) {
|
||||
Runtime.getRuntime().exec(arrayOf("explorer", parent))
|
||||
} else if (os.contains("mac")) {
|
||||
Runtime.getRuntime().exec(arrayOf("open", parent))
|
||||
} else {
|
||||
Runtime.getRuntime().exec(arrayOf("xdg-open", parent))
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
println("[Tools] Konnte Ordner nicht öffnen: ${e.message}. Pfad: $parent")
|
||||
}
|
||||
}
|
||||
)
|
||||
DropdownMenuItem(
|
||||
text = { Text("Einstellungen zurücksetzen") },
|
||||
onClick = {
|
||||
menuOpen = false
|
||||
val res = DeviceInitializationSettingsManager.resetToFactoryDefaults(deleteDatabase = false)
|
||||
if (res.isSuccess) {
|
||||
println($$"[Reset] settings.json gelöscht: ${DeviceInitializationSettingsManager.getSettingsFilePath()}")
|
||||
println("[Reset] settings.json gelöscht: ${DeviceInitializationSettingsManager.getSettingsFilePath()}")
|
||||
} else {
|
||||
println($$"[Reset] Fehler: ${res.exceptionOrNull()?.message}")
|
||||
println("[Reset] Fehler: ${res.exceptionOrNull()?.message}")
|
||||
}
|
||||
onNavigate(AppScreen.DeviceInitialization)
|
||||
}
|
||||
@@ -181,7 +202,7 @@ fun DesktopTopHeader(
|
||||
if (res.isSuccess) {
|
||||
println("[Reset] settings + ~/.meldestelle gelöscht")
|
||||
} else {
|
||||
println("[Reset] Fehler: ${'$'}{res.exceptionOrNull()?.message}")
|
||||
println("[Reset] Fehler: ${res.exceptionOrNull()?.message}")
|
||||
}
|
||||
onNavigate(AppScreen.DeviceInitialization)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user