Ausrichtungs-Assistent: nicht mehr hängenbleiben

Der Vollbildschirm hing an einer `Section`. SwiftUI zeigt Blätter und
Vollbildschirme dort nicht zuverlässig an - genau der Fehler, an dem
schon der Bestätigungsdialog der Kühlbox scheiterte. Dass es "irgendwie
nicht immer" auftrat, passt dazu. Er hängt jetzt am Knopf selbst. Alle
übrigen Blätter und Dialoge der App sitzen bereits an einer Liste oder
einem Stapel; nur diese Stelle nicht.

Dazu die zweite Hälfte: der Assistent war freigegeben, sobald irgendwann
einmal ein Messwert angekommen war. Nach einem Verbindungsabbruch blieb
der letzte Stand stehen, der Knopf also offen - und der Assistent zeigte
Zahlen, die längst nicht mehr galten. Er verlangt jetzt eine stehende
Verbindung, und der Abschnitt sagt, warum er sonst grau ist.

Reisst die Verbindung während des Rangierens ab, steht das jetzt oben im
Assistenten. Vorher stand die Anzeige einfach still, was von einer
hängenden App nicht zu unterscheiden war.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
BiasF
2026-08-31 09:47:54 +02:00
co-authored by Claude Opus 5
parent edf3f5b779
commit 4bc2f5d0f3
2 changed files with 42 additions and 4 deletions
+17 -4
View File
@@ -160,7 +160,21 @@ struct LevelControls: View {
Image(systemName: "car.side.arrowtriangle.up.arrowtriangle.down")
}
}
.disabled(!state.hasReading)
// Der Assistent lebt von laufenden Messwerten. Ein einmal
// empfangener Wert genügt nicht: nach einem Verbindungsabbruch
// bliebe er stehen und die Ansicht sähe eingefroren aus.
.disabled(!isLive || !state.hasReading)
// Der Vollbildschirm gehört an den Knopf, nicht an den Abschnitt.
// SwiftUI zeigt Blätter und Vollbildschirme an einer `Section`
// nicht zuverlässig an dasselbe hatte die Kühlbox schon.
.fullScreenCover(isPresented: $showAssistant) {
AlignmentAssistantView(device: device, profile: store.activeProfile)
}
} footer: {
if !isLive {
Text("Der Assistent braucht laufende Messwerte. Der Neigungsmesser "
+ "ist gerade nicht verbunden.")
}
}
// Einbaulage und Nullpunkt liegen auf einer eigenen Seite. Direkt unter
@@ -178,11 +192,10 @@ struct LevelControls: View {
} footer: {
Text("Einbaulage des Sensors und Nullpunkt der Anzeige.")
}
.fullScreenCover(isPresented: $showAssistant) {
AlignmentAssistantView(device: device, profile: store.activeProfile)
}
}
private var isLive: Bool { bluetooth.linkStates[device.id] == .live }
/// Was auf der Einrichtungsseite zu holen ist der Nullpunkt zuerst, denn
/// ohne ihn stimmt die Anzeige nicht.
private var setupSummary: String {