first commit
This commit is contained in:
54
lib/features/music/domain/models/track_model.dart
Normal file
54
lib/features/music/domain/models/track_model.dart
Normal file
@@ -0,0 +1,54 @@
|
||||
class TrackModel {
|
||||
const TrackModel({
|
||||
required this.id,
|
||||
required this.userId,
|
||||
required this.title,
|
||||
required this.audioUrl,
|
||||
required this.genreTag,
|
||||
required this.plays,
|
||||
required this.createdAt,
|
||||
required this.username,
|
||||
this.featured = false,
|
||||
});
|
||||
|
||||
final String id;
|
||||
final String userId;
|
||||
final String title;
|
||||
final String audioUrl;
|
||||
final String genreTag;
|
||||
final int plays;
|
||||
final DateTime createdAt;
|
||||
final String username;
|
||||
final bool featured;
|
||||
|
||||
factory TrackModel.fromJson(Map<String, dynamic> json, {String? username}) {
|
||||
return TrackModel(
|
||||
id: json['id'] as String,
|
||||
userId: json['user_id'] as String,
|
||||
title: (json['title'] as String?) ?? 'UNTITLED',
|
||||
audioUrl: (json['audio_url'] as String?) ?? '',
|
||||
genreTag: (json['genre_tag'] as String?) ?? 'UNKNOWN',
|
||||
plays: (json['plays'] as int?) ?? 0,
|
||||
createdAt: DateTime.parse(json['created_at'] as String),
|
||||
username: username ?? 'RIOTER',
|
||||
featured: (json['featured'] as bool?) ?? false,
|
||||
);
|
||||
}
|
||||
|
||||
TrackModel copyWith({
|
||||
int? plays,
|
||||
bool? featured,
|
||||
}) {
|
||||
return TrackModel(
|
||||
id: id,
|
||||
userId: userId,
|
||||
title: title,
|
||||
audioUrl: audioUrl,
|
||||
genreTag: genreTag,
|
||||
plays: plays ?? this.plays,
|
||||
createdAt: createdAt,
|
||||
username: username,
|
||||
featured: featured ?? this.featured,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user