diff options
Diffstat (limited to 'lib/network/popular_api.dart')
-rw-r--r-- | lib/network/popular_api.dart | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/lib/network/popular_api.dart b/lib/network/popular_api.dart index 4d2c033..bf4098a 100644 --- a/lib/network/popular_api.dart +++ b/lib/network/popular_api.dart @@ -1,19 +1,42 @@ import 'dart:convert'; import 'package:http/http.dart' as http; +import 'package:pmsna1/database/helper.dart'; import 'package:pmsna1/models/popular.dart'; +import 'package:pmsna1/models/popular_detail.dart'; class PopularApi { String apiKey = '0cb894064f40656f3575e8ccae3d8d73'; - Uri get link => Uri.parse( + Uri get popularLink => Uri.parse( 'https://api.themoviedb.org/3/movie/popular?api_key=$apiKey&language=es-MX&page=1'); + Uri getDetailLink(int id) => Uri.parse( + 'https://api.themoviedb.org/3/movie/$id?api_key=$apiKey&language=es-MX&page=1&append_to_response=videos,credits', + ); Future<List<Popular>?> getAllPopular() async { - http.Response result = await http.get(link); + http.Response result = await http.get(popularLink); var list = jsonDecode(result.body)['results'] as List; if (result.statusCode != 200) { return null; } - return list.map((popular) => Popular.fromMap(popular)).toList(); + List<Popular> favorites = await DatabaseHelper().getAllFavorites(); + return list.map((p) { + Popular popular = Popular.fromMap(p); + if (favorites.where((f) => f.id == popular.id).isNotEmpty) { + popular.hasFavorite = true; + } + return popular; + }).toList(); + } + + Future<PopularDetail?> getPopularDetail(int id) async { + http.Response result = await http.get(getDetailLink(id)); + var map = jsonDecode(result.body) as Map<String, dynamic>; + if (result.statusCode != 200) { + return null; + } + PopularDetail detail = PopularDetail.fromMap(map); + detail.hasFavorite = await DatabaseHelper().hasFavorite(detail.id!); + return detail; } } |