mirror of
https://gitlab.com/foxixus/neomovies_mobile.git
synced 2025-10-28 01:18:50 +05:00
42 lines
1.2 KiB
Dart
42 lines
1.2 KiB
Dart
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
|
|
|
class Favorite {
|
|
final String id; // MongoDB ObjectID as string
|
|
final String mediaId;
|
|
final String mediaType; // "movie" or "tv"
|
|
final String title;
|
|
final String posterPath;
|
|
final DateTime? createdAt;
|
|
|
|
Favorite({
|
|
required this.id,
|
|
required this.mediaId,
|
|
required this.mediaType,
|
|
required this.title,
|
|
required this.posterPath,
|
|
this.createdAt,
|
|
});
|
|
|
|
factory Favorite.fromJson(Map<String, dynamic> json) {
|
|
return Favorite(
|
|
id: json['id'] as String? ?? '',
|
|
mediaId: json['mediaId'] as String? ?? '',
|
|
mediaType: json['mediaType'] as String? ?? 'movie',
|
|
title: json['title'] as String? ?? '',
|
|
posterPath: json['posterPath'] as String? ?? '',
|
|
createdAt: json['createdAt'] != null
|
|
? DateTime.tryParse(json['createdAt'] as String)
|
|
: null,
|
|
);
|
|
}
|
|
|
|
String get fullPosterUrl {
|
|
final baseUrl = dotenv.env['API_URL']!;
|
|
if (posterPath.isEmpty) {
|
|
return '$baseUrl/images/w500/placeholder.jpg';
|
|
}
|
|
final cleanPath = posterPath.startsWith('/') ? posterPath.substring(1) : posterPath;
|
|
return '$baseUrl/images/w500/$cleanPath';
|
|
}
|
|
}
|