diff --git a/lib/features/iptv/providers/settings_provider.dart b/lib/features/iptv/providers/settings_provider.dart index 4ba6f33..d23a2e2 100644 --- a/lib/features/iptv/providers/settings_provider.dart +++ b/lib/features/iptv/providers/settings_provider.dart @@ -19,9 +19,9 @@ enum BufferSize { /// Connection timeout presets enum ConnectionTimeout { - short, // 15 seconds - medium, // 30 seconds - long, // 60 seconds + short, // 30 seconds + medium, // 60 seconds + long, // 120 seconds } /// EPG cache duration presets @@ -205,11 +205,11 @@ class IptvSettings { int get timeoutSeconds { switch (connectionTimeout) { case ConnectionTimeout.short: - return 15; - case ConnectionTimeout.medium: return 30; - case ConnectionTimeout.long: + case ConnectionTimeout.medium: return 60; + case ConnectionTimeout.long: + return 120; } } diff --git a/lib/features/iptv/providers/xtream_provider.dart b/lib/features/iptv/providers/xtream_provider.dart index a09dc14..f21d612 100644 --- a/lib/features/iptv/providers/xtream_provider.dart +++ b/lib/features/iptv/providers/xtream_provider.dart @@ -12,6 +12,7 @@ final xtreamServiceProvider = final service = XtreamService(); final settings = ref.watch(iptvSettingsProvider); service.setBackendUrl(settings.backendUrl); + service.updateTimeouts(settings.timeoutSeconds); service.setPlaylist(playlist); ref.onDispose(() => service.dispose()); return service; @@ -62,6 +63,8 @@ final activeXtreamServiceProvider = Provider((ref) { if (playlist != null) { service.setPlaylist(playlist); + final settings = ref.read(iptvSettingsProvider); + service.updateTimeouts(settings.timeoutSeconds); } return service; diff --git a/lib/features/iptv/services/xtream_service.dart b/lib/features/iptv/services/xtream_service.dart index c109df3..669f2dc 100644 --- a/lib/features/iptv/services/xtream_service.dart +++ b/lib/features/iptv/services/xtream_service.dart @@ -69,6 +69,13 @@ class XtreamService { _manualBackendUrl = url; } + /// Update connection timeouts + void updateTimeouts(int seconds) { + _dio.options.connectTimeout = Duration(seconds: seconds); + _dio.options.receiveTimeout = Duration(seconds: seconds); + _dio.options.sendTimeout = Duration(seconds: seconds); + } + /// Wrap URL with proxy for all external IPTV URLs String _wrapWithProxy(String url) { if (url.startsWith('http')) {