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

View File

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

View File

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

View File

@ -52,7 +52,7 @@ class MkPlayerWithState extends Player {
await super.open(_playlist!.medias[_playlist!.index], play: true); await super.open(_playlist!.medias[_playlist!.index], play: true);
} else { } else {
await next(); await next();
await play(); await Future.delayed(const Duration(milliseconds: 250), play);
} }
}), }),
streams.playlist.listen((event) { 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() { void dispose() {
dbus.unregisterObject(this); dbus.unregisterObject(this);