fix: cached queue tracks expired stream

This commit is contained in:
Kingkor Roy Tirtho 2023-06-04 12:30:04 +06:00
parent f7ca3a654f
commit ed29ab5137
5 changed files with 11 additions and 7 deletions

View File

@ -237,6 +237,7 @@ class SpotubeTrack extends Track {
Map<String, dynamic> toJson() {
return {
// super values
"album": album?.toJson(),
"artists": artists?.map((artist) => artist.toJson()).toList(),
"availableMarkets": availableMarkets,
@ -253,6 +254,7 @@ class SpotubeTrack extends Track {
"trackNumber": trackNumber,
"type": type,
"uri": uri,
// this values
"ytTrack": ytTrack.toJson(),
"ytUri": ytUri,
"siblings": siblings.map((sibling) => sibling.toJson()).toList(),

View File

@ -46,9 +46,7 @@ class ProxyPlaylist {
}
static Map<String, dynamic> _makeAppropriateTrackJson(Track track) {
if (track is SpotubeTrack) {
return track.toJson();
} else if (track is LocalTrack) {
if (track is LocalTrack) {
return track.toJson();
} else {
return track.toJson();

View File

@ -44,6 +44,7 @@ class ProxyPlaylistNotifier extends PersistedStateNotifier<ProxyPlaylist>
late final AudioServices notificationService;
UserPreferences get preferences => ref.read(userPreferencesProvider);
ProxyPlaylist get playlist => state;
BlackListNotifier get blacklist =>
ref.read(BlackListNotifier.provider.notifier);
@ -96,7 +97,8 @@ class ProxyPlaylistNotifier extends PersistedStateNotifier<ProxyPlaylist>
});
bool isPreSearching = false;
audioPlayer.percentCompletedStream(60).listen((percent) async {
listenTo60Percent(percent) async {
if (isPreSearching || audioPlayer.currentSource == null) return;
try {
isPreSearching = true;
@ -130,7 +132,9 @@ class ProxyPlaylistNotifier extends PersistedStateNotifier<ProxyPlaylist>
} finally {
isPreSearching = false;
}
});
}
audioPlayer.percentCompletedStream(60).listen(listenTo60Percent);
// player stops at 99% if nextSource is still not playable
audioPlayer.percentCompletedStream(99).listen((_) async {

View File

@ -52,7 +52,7 @@ class MkPlayerWithState extends Player {
await super.open(_playlist!.medias[_playlist!.index], play: true);
} else {
await next();
await play();
await Future.delayed(const Duration(milliseconds: 250), play);
}
}),
streams.playlist.listen((event) {

View File

@ -239,7 +239,7 @@ class _MprisMediaPlayer2Player extends DBusObject {
}());
}
ProxyPlaylist get playlist => playlistNotifier.state;
ProxyPlaylist get playlist => playlistNotifier.playlist;
void dispose() {
dbus.unregisterObject(this);