mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 16:05:18 +00:00
fix: 0:00 media duration in queue after application restart #782
This commit is contained in:
parent
4956bf367b
commit
83c0b49da9
@ -4,26 +4,29 @@ import 'package:spotube/extensions/artist_simple.dart';
|
||||
|
||||
extension TrackJson on Track {
|
||||
Map<String, dynamic> toJson() {
|
||||
return TrackJson.trackToJson(this);
|
||||
}
|
||||
|
||||
static Map<String, dynamic> trackToJson(Track track) {
|
||||
return {
|
||||
"album": album?.toJson(),
|
||||
"artists": artists?.map((artist) => artist.toJson()).toList(),
|
||||
"availableMarkets": availableMarkets?.map((e) => e.name).toList(),
|
||||
"discNumber": discNumber,
|
||||
"duration": duration.toString(),
|
||||
"durationMs": durationMs,
|
||||
"explicit": explicit,
|
||||
// "externalIds": externalIds,
|
||||
// "externalUrls": externalUrls,
|
||||
"href": href,
|
||||
"id": id,
|
||||
"isPlayable": isPlayable,
|
||||
// "linkedFrom": linkedFrom,
|
||||
"name": name,
|
||||
"popularity": popularity,
|
||||
"previewUrl": previewUrl,
|
||||
"trackNumber": trackNumber,
|
||||
"type": type,
|
||||
"uri": uri,
|
||||
"album": track.album?.toJson(),
|
||||
"artists": track.artists?.map((artist) => artist.toJson()).toList(),
|
||||
"available_markets": track.availableMarkets?.map((e) => e.name).toList(),
|
||||
"disc_number": track.discNumber,
|
||||
"duration_ms": track.durationMs,
|
||||
"explicit": track.explicit,
|
||||
// "external_ids"track.: externalIds,
|
||||
// "external_urls"track.: externalUrls,
|
||||
"href": track.href,
|
||||
"id": track.id,
|
||||
"is_playable": track.isPlayable,
|
||||
// "linked_from"track.: linkedFrom,
|
||||
"name": track.name,
|
||||
"popularity": track.popularity,
|
||||
"preview_rrl": track.previewUrl,
|
||||
"track_number": track.trackNumber,
|
||||
"type": track.type,
|
||||
"uri": track.uri,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
import 'package:spotify/spotify.dart';
|
||||
import 'package:spotube/extensions/album_simple.dart';
|
||||
import 'package:spotube/extensions/artist_simple.dart';
|
||||
import 'package:spotube/extensions/track.dart';
|
||||
|
||||
class LocalTrack extends Track {
|
||||
final String path;
|
||||
@ -38,22 +37,7 @@ class LocalTrack extends Track {
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
"album": album?.toJson(),
|
||||
"artists": artists?.map((artist) => artist.toJson()).toList(),
|
||||
"availableMarkets": availableMarkets?.map((m) => m.name),
|
||||
"discNumber": discNumber,
|
||||
"duration": duration.toString(),
|
||||
"durationMs": durationMs,
|
||||
"explicit": explicit,
|
||||
"href": href,
|
||||
"id": id,
|
||||
"isPlayable": isPlayable,
|
||||
"name": name,
|
||||
"popularity": popularity,
|
||||
"previewUrl": previewUrl,
|
||||
"trackNumber": trackNumber,
|
||||
"type": type,
|
||||
"uri": uri,
|
||||
...TrackJson.trackToJson(this),
|
||||
'path': path,
|
||||
};
|
||||
}
|
||||
|
@ -1,8 +1,7 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:spotify/spotify.dart';
|
||||
import 'package:spotube/extensions/album_simple.dart';
|
||||
import 'package:spotube/extensions/artist_simple.dart';
|
||||
import 'package:spotube/extensions/track.dart';
|
||||
import 'package:spotube/models/matched_track.dart';
|
||||
import 'package:spotube/provider/user_preferences_provider.dart';
|
||||
import 'package:spotube/services/youtube/youtube.dart';
|
||||
@ -264,22 +263,7 @@ class SpotubeTrack extends Track {
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
// super values
|
||||
"album": album?.toJson(),
|
||||
"artists": artists?.map((artist) => artist.toJson()).toList(),
|
||||
"availableMarkets": availableMarkets?.map((m) => m.name),
|
||||
"discNumber": discNumber,
|
||||
"duration": duration.toString(),
|
||||
"durationMs": durationMs,
|
||||
"explicit": explicit,
|
||||
"href": href,
|
||||
"id": id,
|
||||
"isPlayable": isPlayable,
|
||||
"name": name,
|
||||
"popularity": popularity,
|
||||
"previewUrl": previewUrl,
|
||||
"trackNumber": trackNumber,
|
||||
"type": type,
|
||||
"uri": uri,
|
||||
...TrackJson.trackToJson(this),
|
||||
// this values
|
||||
"ytTrack": ytTrack.toJson(),
|
||||
"ytUri": ytUri,
|
||||
|
@ -54,12 +54,14 @@ class ProxyPlaylist {
|
||||
}
|
||||
}
|
||||
|
||||
/// To make sure proper instance method is used for JSON serialization
|
||||
/// Otherwise default super.toJson() is used
|
||||
static Map<String, dynamic> _makeAppropriateTrackJson(Track track) {
|
||||
if (track is LocalTrack) {
|
||||
return track.toJson();
|
||||
} else {
|
||||
return track.toJson();
|
||||
}
|
||||
return switch (track.runtimeType) {
|
||||
LocalTrack => track.toJson(),
|
||||
SpotubeTrack => track.toJson(),
|
||||
_ => track.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
|
Loading…
Reference in New Issue
Block a user