diff --git a/lib/pages/basket.dart b/lib/pages/basket.dart index 6ff485b..81c9965 100644 --- a/lib/pages/basket.dart +++ b/lib/pages/basket.dart @@ -65,7 +65,10 @@ class _BasketPageState extends State { void initState() { super.initState(); Future.microtask(() => getCart().then((value) async { - final items = await getItems(context); + //TODO: Сделать через получение конкретных товаров через getItemsByIds + final itemIds = + value.map((element) => element['id'] as String).toList(); + final items = await getItemsByIds(context, itemIds); setState(() { gymCart = items; cartItems = value.map((element) { diff --git a/lib/tools/items.dart b/lib/tools/items.dart index cb79113..414f47b 100644 --- a/lib/tools/items.dart +++ b/lib/tools/items.dart @@ -31,3 +31,33 @@ Future> getItems(BuildContext context) async { context.read().onError(); return []; } + +//FIXME: Сделать, чтоб работало +Future> getItemsByIds( + BuildContext context, List ids) async { + final token = context.read().token; + if (token != '') { + final Uri url = + Uri.http('gymlink.freemyip.com:8080', 'api/product/get-products'); + try { + final response = await http.post(url, + headers: { + 'Authorization': 'Bearer $token', + }, + body: jsonEncode(ids.toList())); + if (response.statusCode == 200) { + final data = + jsonDecode(utf8.decode(response.bodyBytes)) as List; + final items = data.map((e) => GymItem.fromJson(e)).toList(); + return items; + } + throw response.body; + } catch (e) { + debugPrint('error: $e'); + return await Future.delayed( + const Duration(seconds: 5), () => getItemsByIds(context, ids)); + } + } + context.read().onError(); + return []; +}