Risolve timeout creazione sessione YouTube lato app.

La setup broadcast YouTube (~23s) passa in background job; l'API risponde
subito. Aumentato anche il timeout Dio mobile per createSession YouTube.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-04 00:18:07 +02:00
parent fd7a5c2c8e
commit 70e704827e
5 changed files with 89 additions and 22 deletions

View File

@@ -76,6 +76,17 @@ class _StepTransmissionState extends ConsumerState<StepTransmission> {
message: apiErr!.message,
billingUrl: apiErr.billingUrl,
);
} else if (e.type == DioExceptionType.receiveTimeout ||
e.type == DioExceptionType.sendTimeout ||
e.type == DioExceptionType.connectionTimeout) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text(
'Il server impiega più del previsto (YouTube). Attendi e non ritentare subito: '
'controlla se la sessione è già stata creata.',
),
),
);
} else {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(apiErr?.message ?? 'Errore nella creazione sessione')),

View File

@@ -167,6 +167,10 @@ class ApiClient {
int? targetBitrate,
int? targetFps,
}) async {
// YouTube: creazione broadcast + path MediaMTX può richiedere 2030s lato server.
final sessionTimeout = platform == 'youtube'
? const Duration(seconds: 60)
: const Duration(seconds: 30);
final response = await _dio.post<Map<String, dynamic>>(
'/matches/$matchId/sessions',
data: {
@@ -177,6 +181,10 @@ class ApiClient {
if (targetBitrate != null) 'target_bitrate': targetBitrate,
if (targetFps != null) 'target_fps': targetFps,
},
options: Options(
sendTimeout: sessionTimeout,
receiveTimeout: sessionTimeout,
),
);
return StreamSession.fromJson(response.data!);
}