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 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, ); } }