diff --git a/Dockerfile b/Dockerfile index 4893f9e..4d4a627 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,8 +26,8 @@ COPY . . # Re-run pub get after copying source to ensure lockfile consistency RUN flutter pub get -# Build web application (CanvasKit renderer is now default) -RUN flutter build web --release --verbose +# Build web application (Debug mode for better error messages) +RUN flutter build web --debug --verbose # ============================================ # Stage 2: Serve with dhttpd (Dart HTTP server) diff --git a/lib/features/iptv/providers/xtream_provider.dart b/lib/features/iptv/providers/xtream_provider.dart index 9fbc690..f92f72d 100644 --- a/lib/features/iptv/providers/xtream_provider.dart +++ b/lib/features/iptv/providers/xtream_provider.dart @@ -38,6 +38,12 @@ final liveChannelsProvider = FutureProvider.autoDispose((ref) async { return await service.getLiveChannels(); }); +/// Provider for live TV channels by playlist (family provider) +final liveChannelsByPlaylistProvider = FutureProvider.family.autoDispose((ref, PlaylistConfig playlist) async { + final service = ref.watch(xtreamServiceProvider(playlist)); + return await service.getLiveChannels(); +}); + /// Provider for VOD items (movies) grouped by category final vodItemsProvider = FutureProvider.autoDispose((ref) async { final service = ref.watch(activeXtreamServiceProvider); diff --git a/lib/features/iptv/screens/dashboard_screen.dart b/lib/features/iptv/screens/dashboard_screen.dart index a32d88a..745414c 100644 --- a/lib/features/iptv/screens/dashboard_screen.dart +++ b/lib/features/iptv/screens/dashboard_screen.dart @@ -28,7 +28,7 @@ class _DashboardScreenState extends ConsumerState { void initState() { super.initState(); _tabs = [ - const LiveTVTab(), + LiveTVTab(playlist: widget.playlist), MoviesTab(playlist: widget.playlist), SeriesTab(playlist: widget.playlist), const SettingsTab(), diff --git a/lib/features/iptv/widgets/live_tv_tab.dart b/lib/features/iptv/widgets/live_tv_tab.dart index 6d7795c..59412f0 100644 --- a/lib/features/iptv/widgets/live_tv_tab.dart +++ b/lib/features/iptv/widgets/live_tv_tab.dart @@ -4,10 +4,13 @@ import 'package:cached_network_image/cached_network_image.dart'; import '../providers/xtream_provider.dart'; import '../screens/player_screen.dart'; import '../../../core/models/iptv_models.dart'; +import '../../../core/models/playlist_config.dart'; /// Live TV tab with group-based pagination class LiveTVTab extends ConsumerStatefulWidget { - const LiveTVTab({super.key}); + final PlaylistConfig playlist; + + const LiveTVTab({super.key, required this.playlist}); @override ConsumerState createState() => _LiveTVTabState(); @@ -26,7 +29,8 @@ class _LiveTVTabState extends ConsumerState Widget build(BuildContext context) { super.build(context); - final channelsAsync = ref.watch(liveChannelsProvider); + final service = ref.watch(xtreamServiceProvider(widget.playlist)); + final channelsAsync = ref.watch(liveChannelsByPlaylistProvider(widget.playlist)); return channelsAsync.when( data: (groupedChannels) {