spotube/lib/models/metadata/album.dart
2025-06-14 19:18:32 +06:00

43 lines
1.2 KiB
Dart

part of 'metadata.dart';
enum SpotubeAlbumType {
album,
single,
compilation,
}
@freezed
class SpotubeFullAlbumObject with _$SpotubeFullAlbumObject {
factory SpotubeFullAlbumObject({
required String id,
required String name,
required List<SpotubeSimpleArtistObject> artists,
@Default([]) List<SpotubeImageObject> images,
required String releaseDate,
required String externalUri,
required int totalTracks,
required SpotubeAlbumType albumType,
String? recordLabel,
List<String>? genres,
}) = _SpotubeFullAlbumObject;
factory SpotubeFullAlbumObject.fromJson(Map<String, dynamic> json) =>
_$SpotubeFullAlbumObjectFromJson(json);
}
@freezed
class SpotubeSimpleAlbumObject with _$SpotubeSimpleAlbumObject {
factory SpotubeSimpleAlbumObject({
required String id,
required String name,
required String externalUri,
required List<SpotubeSimpleArtistObject> artists,
@Default([]) List<SpotubeImageObject> images,
required String releaseDate,
required SpotubeAlbumType albumType,
}) = _SpotubeSimpleAlbumObject;
factory SpotubeSimpleAlbumObject.fromJson(Map<String, dynamic> json) =>
_$SpotubeSimpleAlbumObjectFromJson(json);
}