summaryrefslogtreecommitdiff
path: root/lib/network/popular_api.dart
diff options
context:
space:
mode:
Diffstat (limited to 'lib/network/popular_api.dart')
-rw-r--r--lib/network/popular_api.dart29
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;
}
}