fix(phasen): Reset zeigt sofort nur 'Sortieren' - keine ererbten Haekchen
Nach einem Tour-Wechsel (Tageswechsel im Kopf-Kalender, Resync) blieben bis zum asynchronen Nachladen aus den SharedPreferences noch Phase und Haekchen (maxReached) der vorherigen Tour sichtbar; zudem konnte ein persistiertes Max uebernommen werden, obwohl fuer die neue Tour-Version gar keine Phase persistiert war. - Bei Tour-Wechsel eines bereits geladenen Autos den In-Memory-Stand SOFORT synchron auf die Eintrittsphase setzen (nur Sortieren aktiv, keine Haekchen); ein persistierter Stand der neuen Tour folgt per PhaseLoaded - persistedMax nur uebernehmen, wenn fuer diese Tour-Version auch eine Phase persistiert ist (frische Tour-Version startet immer ohne ererbte Haekchen) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@ -95,14 +95,29 @@ class PhaseBloc extends Bloc<PhaseEvent, PhaseState> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Tour-Wechsel bei bereits geladenem Auto: den alten In-Memory-Stand
|
||||||
|
// SOFORT synchron auf die Eintrittsphase zurücksetzen (nur „Sortieren"
|
||||||
|
// aktiv, keine Häkchen), damit während des asynchronen Nachladens aus
|
||||||
|
// den SharedPreferences nichts von der vorherigen Tour sichtbar bleibt.
|
||||||
|
// Ein evtl. persistierter Stand der neuen Tour (Rückkehr zu einem alten
|
||||||
|
// Tag) folgt direkt danach per PhaseLoaded.
|
||||||
|
if (current.phaseByCar.containsKey(event.carId)) {
|
||||||
|
final entry = _entryPhase();
|
||||||
|
emit(current.withLoaded(event.carId, entry, entry));
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final persisted = await phaseService.load(event.carId, token);
|
final persisted = await phaseService.load(event.carId, token);
|
||||||
final persistedMax = await phaseService.loadMax(event.carId, token);
|
final persistedMax = await phaseService.loadMax(event.carId, token);
|
||||||
final phase = persisted ?? _entryPhase();
|
final phase = persisted ?? _entryPhase();
|
||||||
// Max ist mindestens die aktuelle Phase. Falls in der Persistenz ein
|
// Max ist mindestens die aktuelle Phase. Ein höheres persistiertes Max
|
||||||
// höherer Wert steht (Rücksprung), den nehmen.
|
// (Rücksprung am selben Tag) wird NUR übernommen, wenn für diese
|
||||||
|
// Tour-Version auch eine Phase persistiert ist. Eine frische
|
||||||
|
// Tour-Version (persisted == null) startet immer ohne ererbte Häkchen.
|
||||||
DeliveryPhase maxPhase = phase;
|
DeliveryPhase maxPhase = phase;
|
||||||
if (persistedMax != null && persistedMax.index > maxPhase.index) {
|
if (persisted != null &&
|
||||||
|
persistedMax != null &&
|
||||||
|
persistedMax.index > maxPhase.index) {
|
||||||
maxPhase = persistedMax;
|
maxPhase = persistedMax;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user