🐛 Bug fixes on playback

This commit is contained in:
2024-08-27 02:22:47 +08:00
parent 031cab75e0
commit 41e248f8cc
6 changed files with 101 additions and 13 deletions

View File

@ -58,8 +58,8 @@ class ServerPlaybackRoutesProvider {
},
headers: res.headers.map,
);
} catch (e) {
log('[PlaybackSever] Error: $e');
} catch (e, stackTrace) {
log('[PlaybackSever] Error: $e; Trace:\n $stackTrace');
return Response.internalServerError();
}
}

View File

@ -11,6 +11,8 @@ import 'package:shelf/shelf_io.dart';
import 'package:shelf_router/shelf_router.dart';
class PlaybackServerProvider extends GetxController {
final int port = Random().nextInt(17500) + 5000;
HttpServer? _server;
Router? _router;
@ -26,8 +28,6 @@ class PlaybackServerProvider extends GetxController {
pipeline.addMiddleware(logRequests());
}
final port = Random().nextInt(17500) + 5000;
RhythmMedia.serverPort = port;
_router = Router();

View File

@ -1,17 +1,36 @@
import 'package:collection/collection.dart';
import 'package:get/get.dart';
import 'package:rhythm_box/providers/audio_player.dart';
import 'package:rhythm_box/services/audio_player/audio_player.dart';
import 'package:rhythm_box/services/local_track.dart';
import 'package:rhythm_box/services/sourced_track/sourced_track.dart';
import 'package:spotify/spotify.dart';
class SourcedTrackProvider extends GetxController {
Rx<SourcedTrack?> sourcedTrack = Rx(null);
Future<SourcedTrack?> fetch(RhythmMedia? media) async {
final track = media?.track;
if (track == null || track is LocalTrack) {
sourcedTrack.value = null;
return null;
}
final sourcedTrack = await SourcedTrack.fetchFromTrack(track: track);
final AudioPlayerProvider playback = Get.find();
return sourcedTrack;
ever(playback.state.value.tracks.obs, (List<Track> tracks) {
if (tracks.isEmpty || tracks.none((element) => element.id == track.id)) {
invalidate();
}
});
sourcedTrack.value = await SourcedTrack.fetchFromTrack(track: track);
return sourcedTrack.value;
}
void invalidate() {
sourcedTrack.value = null;
fetch(null);
}
}