forked from fritob/Camper-Monitor
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:
@@ -38,6 +38,8 @@ struct AlignmentAssistantView: View {
|
||||
VehicleTiltView(pitch: state.pitch, roll: state.roll)
|
||||
}
|
||||
|
||||
if !isLive { disconnectedBanner }
|
||||
|
||||
adviceBanner
|
||||
|
||||
readings
|
||||
@@ -95,6 +97,29 @@ struct AlignmentAssistantView: View {
|
||||
|
||||
// MARK: - Bausteine
|
||||
|
||||
private var isLive: Bool { bluetooth.linkStates[device.id] == .live }
|
||||
|
||||
/// Reisst die Verbindung beim Rangieren ab, stehen die Zahlen still. Ohne
|
||||
/// Hinweis sähe das aus, als hinge die App – man rangiert dann nach einem
|
||||
/// Wert, der längst nicht mehr gilt.
|
||||
private var disconnectedBanner: some View {
|
||||
Label {
|
||||
VStack(alignment: .leading, spacing: 2) {
|
||||
Text("Nicht verbunden").font(.headline)
|
||||
Text("Die Anzeige steht still, bis der Neigungsmesser wieder da ist.")
|
||||
.font(.callout)
|
||||
.foregroundStyle(.secondary)
|
||||
}
|
||||
} icon: {
|
||||
Image(systemName: "antenna.radiowaves.left.and.right.slash")
|
||||
.font(.title)
|
||||
.foregroundStyle(.orange)
|
||||
}
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.padding()
|
||||
.background(Color.orange.opacity(0.15), in: .rect(cornerRadius: 16))
|
||||
}
|
||||
|
||||
private var adviceBanner: some View {
|
||||
HStack(spacing: 12) {
|
||||
Image(systemName: assistant.hasReachedTarget
|
||||
|
||||
Reference in New Issue
Block a user