🐛 Bug fixes on playback
This commit is contained in:
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user