feat: Implement Xtream Codes IPTV streaming, VOD transcoding, and content browsing UI with a dedicated web player.

This commit is contained in:
Michael committed 2025-12-15 21:18:36 +01:00
1 parent 6d69617e40
commit 3f9a88c09a
4 files changed
+142 -21

No files matched your search

+17 -2
View File
@@ -149,9 +149,24 @@ class _MoviesTabState extends ConsumerState<MoviesTab> {
return originalUrl;
}
void _playMovie(Movie movie) {
Future<void> _playMovie(Movie movie) async {
ref.read(watchHistoryProvider.notifier).markMovieWatched(movie.streamId);
// Fetch actual duration from API if not available in movie data
Duration? movieDuration;
if (movie.durationSecs != null && movie.durationSecs! > 0) {
movieDuration = Duration(seconds: movie.durationSecs!);
} else {
// Try to fetch from API
final service = ref.read(xtreamServiceProvider(widget.playlist));
final durationSecs = await service.getVodDuration(movie.streamId);
if (durationSecs != null && durationSecs > 0) {
movieDuration = Duration(seconds: durationSecs);
}
}
if (!mounted) return;
Navigator.push(
context,
MaterialPageRoute(
@@ -161,7 +176,7 @@ class _MoviesTabState extends ConsumerState<MoviesTab> {
playlist: widget.playlist,
streamType: StreamType.vod,
containerExtension: movie.containerExtension ?? 'mp4',
duration: movie.durationSecs != null ? Duration(seconds: movie.durationSecs!) : null,
duration: movieDuration,
),
),
);