diff --git a/lib/provider/proxy_playlist/player_listeners.dart b/lib/provider/proxy_playlist/player_listeners.dart index b6839df6..a4ced4e4 100644 --- a/lib/provider/proxy_playlist/player_listeners.dart +++ b/lib/provider/proxy_playlist/player_listeners.dart @@ -74,9 +74,11 @@ extension ProxyPlaylistListeners on ProxyPlaylistNotifier { if (lastTrack == nextTrack.id) return; - await ref.read(sourcedTrackProvider(nextTrack).future).whenComplete(() { + try { + await ref.read(sourcedTrackProvider(nextTrack).future); + } finally { lastTrack = nextTrack.id!; - }); + } }); } diff --git a/lib/provider/server/server.dart b/lib/provider/server/server.dart index 4dd8e6b9..48f32a3c 100644 --- a/lib/provider/server/server.dart +++ b/lib/provider/server/server.dart @@ -80,7 +80,24 @@ class PlaybackServer { ), ); - final audioStream = res.data?.stream as Stream?; + final audioStream = + (res.data?.stream as Stream?)?.asBroadcastStream(); + + // if (res.statusCode! > 300) { + // debugPrint( + // "[[Request]]\n" + // "URI: ${res.requestOptions.uri}\n" + // "Status: ${res.statusCode}\n" + // "Request Headers: ${res.requestOptions.headers}\n" + // "Response Body: ${res.data}\n" + // "Response Headers: ${res.headers.map}", + // ); + // } + + audioStream!.listen( + (event) {}, + cancelOnError: true, + ); return Response( res.statusCode!, diff --git a/lib/services/audio_player/audio_player.dart b/lib/services/audio_player/audio_player.dart index 617efb1b..d5ebddb4 100644 --- a/lib/services/audio_player/audio_player.dart +++ b/lib/services/audio_player/audio_player.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:catcher_2/catcher_2.dart'; +import 'package:flutter/foundation.dart'; import 'package:spotify/spotify.dart'; import 'package:spotube/extensions/track.dart'; import 'package:spotube/models/local_track.dart'; @@ -48,6 +49,7 @@ abstract class AudioPlayerInterface { : _mkPlayer = CustomPlayer( configuration: const mk.PlayerConfiguration( title: "Spotube", + logLevel: kDebugMode ? mk.MPVLogLevel.info : mk.MPVLogLevel.error, ), ) // _justAudio = !_mkSupportedPlatform ? ja.AudioPlayer() : null diff --git a/lib/services/audio_player/custom_player.dart b/lib/services/audio_player/custom_player.dart index ec47bbb7..d273519e 100644 --- a/lib/services/audio_player/custom_player.dart +++ b/lib/services/audio_player/custom_player.dart @@ -25,6 +25,8 @@ class CustomPlayer extends Player { : _playerStateStream = StreamController.broadcast(), _shuffleStream = StreamController.broadcast(), _shuffled = false { + nativePlayer.setProperty("network-timeout", "120"); + _subscriptions = [ stream.buffering.listen((event) { _playerStateStream.add(AudioPlaybackState.buffering);