Have something to say?

Tell us how we could make the product more useful to you.

Completed

ErrorResolutionDialog: KS-Status live aktualisieren während Dialog offen ist

**Gemeldet von Valentin via Chat, 2026-05-05 (Motorsport-CAN-Test-Workflow)** Vale macht CAN-Tests an Motorsportakkus über einen Stecker + ein Modul am PC. Er prüft in der App live, ob die Funktionen ankommen, die er am PC eingibt — speziell ob der Killswitch (KS) aktiv ist oder nicht. Aktuell muss er den Error-Dialog jedes Mal schließen und wieder öffnen, um die Statusänderung zu sehen. **Felix hat in der Chat-Antwort schon zugesagt:** „Das ist möglich und kann ich so mit aufnehmen für die nächste Version". **Root Cause (verified auf github/dev @53b42db):** `lib/features/device_page/components/error_resolution_dialog.dart:290-305` — die `build()`-Methode nutzt zwar `BlocBuilder `, aber die `buildWhen`-Predicate triggert NUR auf `hasChargeOverrideAvailable` Änderungen: ```dart return BlocBuilder ( buildWhen: (previous, current) { return previous.currentSessionData?.hasChargeOverrideAvailable != current.currentSessionData?.hasChargeOverrideAvailable; }, builder: (context, state) { final currentGuide = _getCurrentGuide(state.currentSessionData); ... } ); ``` KS-State-Änderungen (`isKillswitchActive`, `powerSwitchReasonInt`, `isAntiTheftActive`, `hasResettableError`) sind nicht in der buildWhen-Predicate enthalten — der Dialog rebuildet also nicht, wenn sich der KS-Status während Vale's CAN-Test ändert. Er zeigt weiterhin den Snapshot der bei Dialog-Öffnung gerendert wurde. Der StreamSubscription in `_subscribeToSessionChanges()` (Z.96) hört zwar auf SessionBloc-Updates, aber NUR um nach Aktionen wie „Reset Error" das Dialog automatisch zu schließen — er triggert keinen Rebuild der UI. **Fix-Plan (klein, ~5 Zeilen):** Die `buildWhen`-Predicate erweitern auf alle Felder die `_getCurrentGuide()` und die UI verwenden: ```dart buildWhen: (previous, current) { final p = previous.currentSessionData; final c = current.currentSessionData; return p?.hasChargeOverrideAvailable != c?.hasChargeOverrideAvailable || p?.powerSwitchReasonInt?.value != c?.powerSwitchReasonInt?.value || p?.isKillswitchActive != c?.isKillswitchActive || p?.isAntiTheftActive != c?.isAntiTheftActive || p?.hasResettableError != c?.hasResettableError; }, ``` Alternative: `buildWhen` ganz entfernen (rebuildet bei jedem State-Tick). Für einen modalen Dialog ist das performance-mäßig unkritisch und robuster gegen zukünftig hinzukommende UI-Felder. **Wert:** Vale's Motorsport-CAN-Test-Workflow wird signifikant produktiver (kein ständiges Schließen + Öffnen mehr). Allgemein nützlich für jeden der die Wirkung eines Reset-/Override-Buttons live sehen will. Screenshots im Chat 2026-05-05 (Slack).

Felix 2 months ago

1
💡

Feature Requests