fix: Sync-Statusanzeige zeigt nach Neustart fälschlich "nicht konfiguriert"
SyncEngine feuert sein erstes StatusChanged bereits im eigenen Konstruktor. Da SyncEngine und SyncStatusViewModel beide DI-Singletons sind und Letzterer Ersteren erst innerhalb der eigenen Factory aus dem Container holt, lief dieser erste Broadcast ab, bevor SyncStatusViewModel überhaupt abonniert hatte - der Status ging verloren, StatusText blieb bis zum nächsten Auto-Sync oder manuellen Sync beim hartcodierten Default "Kein Server konfiguriert". Fix: Konstruktor ruft nach dem Abonnieren zusätzlich einmal OnStatus(engine.Status) mit dem bereits vorhandenen aktuellen Zustand auf. Regressionstest ergänzt - dabei fehlte LehrerApp.Desktop.Tests das DisableTestParallelization-Attribut (gleicher bekannter LiteDB-BsonMapper.Global-Bug wie in den anderen Testprojekten, sobald zwei Testklassen parallel LiteDbContext konstruieren). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -19,7 +19,16 @@ public partial class SyncStatusViewModel : ObservableObject
|
||||
{
|
||||
_engine = engine;
|
||||
IsServerConfigured = engine is not null;
|
||||
if (_engine is not null) _engine.StatusChanged += OnStatus;
|
||||
if (_engine is not null)
|
||||
{
|
||||
_engine.StatusChanged += OnStatus;
|
||||
// SyncEngine feuert sein erstes StatusChanged bereits im eigenen Konstruktor
|
||||
// (UpdateStatus) - der läuft aber schon, während wir hier noch in GetService<SyncEngine>()
|
||||
// stecken, also VOR dem obigen Abonnieren. Ohne diesen Nachhol-Aufruf bliebe StatusText
|
||||
// nach jedem Neustart beim Default "Kein Server konfiguriert", bis der nächste
|
||||
// Auto-Sync oder Klick auf "Jetzt synchronisieren" den Text erstmals aktualisiert.
|
||||
OnStatus(_engine.Status);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnStatus(SyncStatus s)
|
||||
|
||||
Reference in New Issue
Block a user