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 {
|
extension TrackJson on Track {
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
|
return TrackJson.trackToJson(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Map<String, dynamic> trackToJson(Track track) {
|
||||||
return {
|
return {
|
||||||
"album": album?.toJson(),
|
"album": track.album?.toJson(),
|
||||||
"artists": artists?.map((artist) => artist.toJson()).toList(),
|
"artists": track.artists?.map((artist) => artist.toJson()).toList(),
|
||||||
"availableMarkets": availableMarkets?.map((e) => e.name).toList(),
|
"available_markets": track.availableMarkets?.map((e) => e.name).toList(),
|
||||||
"discNumber": discNumber,
|
"disc_number": track.discNumber,
|
||||||
"duration": duration.toString(),
|
"duration_ms": track.durationMs,
|
||||||
"durationMs": durationMs,
|
"explicit": track.explicit,
|
||||||
"explicit": explicit,
|
// "external_ids"track.: externalIds,
|
||||||
// "externalIds": externalIds,
|
// "external_urls"track.: externalUrls,
|
||||||
// "externalUrls": externalUrls,
|
"href": track.href,
|
||||||
"href": href,
|
"id": track.id,
|
||||||
"id": id,
|
"is_playable": track.isPlayable,
|
||||||
"isPlayable": isPlayable,
|
// "linked_from"track.: linkedFrom,
|
||||||
// "linkedFrom": linkedFrom,
|
"name": track.name,
|
||||||
"name": name,
|
"popularity": track.popularity,
|
||||||
"popularity": popularity,
|
"preview_rrl": track.previewUrl,
|
||||||
"previewUrl": previewUrl,
|
"track_number": track.trackNumber,
|
||||||
"trackNumber": trackNumber,
|
"type": track.type,
|
||||||
"type": type,
|
"uri": track.uri,
|
||||||
"uri": uri,
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import 'package:spotify/spotify.dart';
|
import 'package:spotify/spotify.dart';
|
||||||
import 'package:spotube/extensions/album_simple.dart';
|
import 'package:spotube/extensions/track.dart';
|
||||||
import 'package:spotube/extensions/artist_simple.dart';
|
|
||||||
|
|
||||||
class LocalTrack extends Track {
|
class LocalTrack extends Track {
|
||||||
final String path;
|
final String path;
|
||||||
@ -38,22 +37,7 @@ class LocalTrack extends Track {
|
|||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
return {
|
return {
|
||||||
"album": album?.toJson(),
|
...TrackJson.trackToJson(this),
|
||||||
"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,
|
|
||||||
'path': path,
|
'path': path,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:spotify/spotify.dart';
|
import 'package:spotify/spotify.dart';
|
||||||
import 'package:spotube/extensions/album_simple.dart';
|
import 'package:spotube/extensions/track.dart';
|
||||||
import 'package:spotube/extensions/artist_simple.dart';
|
|
||||||
import 'package:spotube/models/matched_track.dart';
|
import 'package:spotube/models/matched_track.dart';
|
||||||
import 'package:spotube/provider/user_preferences_provider.dart';
|
import 'package:spotube/provider/user_preferences_provider.dart';
|
||||||
import 'package:spotube/services/youtube/youtube.dart';
|
import 'package:spotube/services/youtube/youtube.dart';
|
||||||
@ -264,22 +263,7 @@ class SpotubeTrack extends Track {
|
|||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
return {
|
return {
|
||||||
// super values
|
// super values
|
||||||
"album": album?.toJson(),
|
...TrackJson.trackToJson(this),
|
||||||
"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,
|
|
||||||
// this values
|
// this values
|
||||||
"ytTrack": ytTrack.toJson(),
|
"ytTrack": ytTrack.toJson(),
|
||||||
"ytUri": ytUri,
|
"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) {
|
static Map<String, dynamic> _makeAppropriateTrackJson(Track track) {
|
||||||
if (track is LocalTrack) {
|
return switch (track.runtimeType) {
|
||||||
return track.toJson();
|
LocalTrack => track.toJson(),
|
||||||
} else {
|
SpotubeTrack => track.toJson(),
|
||||||
return track.toJson();
|
_ => track.toJson(),
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
|
Loading…
Reference in New Issue
Block a user