DayDetails.razor
1. GameHubService injiziert (Zeile 26)
2. IAsyncDisposable implementiert statt IDisposable
3. SignalR-Events abonniert:
- OnGameStateUpdated → aktualisiert lokalen State via RemoteGameStateUpdatedAction
- OnThrowRecorded → zeigt Snackbar-Benachrichtigung
- OnGameStarted → lädt aktives Spiel neu
- OnGameEnded → lädt abgeschlossene Spiele neu
4. Hub-Verbindung initialisiert in OnAfterRenderAsync:
- StartAsync() - verbindet zum Hub
- JoinDayAsync(DayId) - tritt der Day-Gruppe bei
- JoinGameAsync() - tritt der Game-Gruppe bei (wenn aktiv)
5. Automatisches Join/Leave bei Spielwechsel via OnGameStateChanged
6. Cleanup in DisposeAsync:
- Unsubscribe von Events
- LeaveGameAsync/LeaveDayAsync aufrufen
- Hub-Verbindung disposen
GameEffects.cs
BroadcastThrowAsync hinzugefügt (Zeile 451-458) - broadcast Wurf sofort an andere Clients
GameActions.cs / GameReducers.cs
RemoteGameStateUpdatedAction und Reducer hinzugefügt für Remote-State-Updates
|
||
|---|---|---|
| .claude | ||
| docs | ||
| src | ||
| test | ||
| .gitattributes | ||
| .gitignore | ||
| CLAUDE.md | ||
| KoogleApp.sln | ||
| todos.md | ||