Aggiunge overlay server-side burn-in e stabilizza diretta live.

Tabellone, badge e brand sono ricodificati nel flusso _air via OverlayRelay;
sync punteggio HTTP, volume condiviso rails/sidekiq, qualità 720p migliorata
e badge CONNECTING in ripresa da pausa.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-03 23:55:17 +02:00
parent fd225fbadd
commit ab9cb02083
58 changed files with 2423 additions and 242 deletions

View File

@@ -6,6 +6,7 @@ import '../providers/auth_provider.dart';
import 'models/invite_preview.dart';
import 'models/match.dart';
import 'models/recording_item.dart';
import 'models/score_state.dart';
import 'models/stream_session.dart';
import 'models/team.dart';
import 'models/user.dart';
@@ -210,6 +211,19 @@ class ApiClient {
return StreamSession.fromJson(response.data!);
}
/// Persiste il tabellone e restituisce lo stato salvato sul server.
Future<ScoreState?> syncScore(String sessionId, Map<String, dynamic> payload) async {
final response = await _dio.patch<Map<String, dynamic>>(
'/sessions/$sessionId/score',
data: payload,
);
final score = response.data?['score'];
if (score is Map<String, dynamic>) {
return ScoreState.fromJson(score);
}
return null;
}
Future<RegiaLinkResponse> createRegiaLink(String sessionId) async {
final response = await _dio.post<Map<String, dynamic>>(
'/sessions/$sessionId/regia_link',