diff --git a/lib/data/dtos/candies_dto.dart b/lib/data/dtos/candies_dto.dart index 71866ff..8f6036b 100644 --- a/lib/data/dtos/candies_dto.dart +++ b/lib/data/dtos/candies_dto.dart @@ -22,10 +22,15 @@ class CandiesResponseDto { @JsonSerializable(createToJson: false) class CandyItemDto { - final int? beanId; - final List? groupName; + @JsonKey(name: "beanId") + final int? candyId; + + @JsonKey(name: "groupName") + final List? manufacturer; final List? ingredients; - final String? flavorName; + + @JsonKey(name: "flavorName") + final String? name; final String? description; final String? colorGroup; final String? backgroundColor; @@ -36,10 +41,10 @@ class CandyItemDto { final bool? kosher; const CandyItemDto( - {this.beanId, - this.groupName, + {this.candyId, + this.manufacturer, this.ingredients, - this.flavorName, + this.name, this.description, this.colorGroup, this.backgroundColor, diff --git a/lib/data/mapper/candies_mapper.dart b/lib/data/mapper/candies_mapper.dart index 33e729a..2621501 100644 --- a/lib/data/mapper/candies_mapper.dart +++ b/lib/data/mapper/candies_mapper.dart @@ -1,19 +1,19 @@ import 'package:candystore/data/dtos/candies_dto.dart'; import 'package:candystore/models/card_data.dart'; -import 'package:candystore/models/candy_data.dart'; +import 'package:candystore/models/home_data.dart'; extension CandyItemDtoToModel on CandyItemDto { CardData toDomain() => CardData( - flavorName: flavorName ?? "UNKNOWN", + name: name ?? "UNKNOWN", imageUrl: imageUrl ?? "https://upload.wikimedia.org/wikipedia/commons/a/a2/Person_Image_Placeholder.png", description: description ?? "UNKNOWN", - groupName: groupName ?? ["UNKNOWN"], - beanId: beanId); + manufacturer: manufacturer ?? ["UNKNOWN"], + candyId: candyId); } extension CandiesDtoToModel on CandiesResponseDto { - CandyData toDomain() => CandyData( + HomeData toDomain() => HomeData( data: items?.map((e) => e.toDomain()).toList(), nextPage: currentPage != null && totalPages != null && currentPage! < totalPages! ? currentPage! + 1 diff --git a/lib/data/repositories/api_interface.dart b/lib/data/repositories/api_interface.dart index 01ef601..b8f71f8 100644 --- a/lib/data/repositories/api_interface.dart +++ b/lib/data/repositories/api_interface.dart @@ -1,7 +1,7 @@ -import 'package:candystore/models/candy_data.dart'; +import 'package:candystore/models/home_data.dart'; typedef OnErrorCallback = void Function(String? error); abstract class ApiInterface { - Future loadData({OnErrorCallback? onError}); + Future loadData({OnErrorCallback? onError}); } diff --git a/lib/data/repositories/candy_repository.dart b/lib/data/repositories/candy_repository.dart index d68a7d7..802c8f1 100644 --- a/lib/data/repositories/candy_repository.dart +++ b/lib/data/repositories/candy_repository.dart @@ -5,7 +5,7 @@ import 'package:pretty_dio_logger/pretty_dio_logger.dart'; import 'package:candystore/data/dtos/candies_dto.dart'; import 'package:candystore/data/mapper/candies_mapper.dart'; import 'package:candystore/data/repositories/api_interface.dart'; -import 'package:candystore/models/candy_data.dart'; +import 'package:candystore/models/home_data.dart'; class CandyRepository extends ApiInterface { static final Dio _dio = Dio(BaseOptions(connectTimeout: const Duration(seconds: 10))) @@ -14,7 +14,7 @@ class CandyRepository extends ApiInterface { static const String _baseUrl = "https://jellybellywikiapi.onrender.com/api"; @override - Future loadData( + Future loadData( {OnErrorCallback? onError, String? q, int page = 1, int pageSize = 10}) async { try { const String url = '$_baseUrl/Beans?'; @@ -34,7 +34,7 @@ class CandyRepository extends ApiInterface { if (q != null && q.isNotEmpty) { final query = q.toLowerCase(); filteredItems = dto.items?.where((item) { - final flavorName = item.flavorName?.toLowerCase() ?? ''; + final flavorName = item.name?.toLowerCase() ?? ''; return flavorName.contains(query); // Динамическое совпадение }).toList(); } diff --git a/lib/models/card_data.dart b/lib/models/card_data.dart index 4841967..1d5d6b7 100644 --- a/lib/models/card_data.dart +++ b/lib/models/card_data.dart @@ -1,14 +1,14 @@ class CardData { - final String flavorName; + final String name; final String imageUrl; final String description; - final List groupName; - final int? beanId; + final List manufacturer; + final int? candyId; const CardData( - {required this.flavorName, + {required this.name, required this.imageUrl, required this.description, - required this.groupName, - required this.beanId}); + required this.manufacturer, + required this.candyId}); } diff --git a/lib/models/candy_data.dart b/lib/models/home_data.dart similarity index 62% rename from lib/models/candy_data.dart rename to lib/models/home_data.dart index eb090d1..036a90f 100644 --- a/lib/models/candy_data.dart +++ b/lib/models/home_data.dart @@ -1,10 +1,10 @@ import 'package:candystore/models/card_data.dart'; -class CandyData { +class HomeData { final List? data; final int? nextPage; final int? currentPage; final int? totalPages; - CandyData({this.data, this.nextPage, this.currentPage, this.totalPages}); + HomeData({this.data, this.nextPage, this.currentPage, this.totalPages}); } diff --git a/lib/presentation/bloc/candy_bloc/candy_state.dart b/lib/presentation/bloc/candy_bloc/candy_state.dart index 8f9a89b..9b632d8 100644 --- a/lib/presentation/bloc/candy_bloc/candy_state.dart +++ b/lib/presentation/bloc/candy_bloc/candy_state.dart @@ -1,8 +1,8 @@ -import 'package:candystore/models/candy_data.dart'; +import 'package:candystore/models/home_data.dart'; import 'package:equatable/equatable.dart'; class CandyState extends Equatable { - final CandyData? data; + final HomeData? data; final bool isLoading; final bool isPaginationLoading; final String? error; @@ -12,7 +12,7 @@ class CandyState extends Equatable { // Получение нового экземпляра состояния CandyState copyWith( - {CandyData? data, bool? isLoading, bool? isPaginationLoading, String? error}) => + {HomeData? data, bool? isLoading, bool? isPaginationLoading, String? error}) => CandyState( data: data ?? this.data, isLoading: isLoading ?? this.isLoading, diff --git a/lib/presentation/pages/details_page/details_page.dart b/lib/presentation/pages/details_page/details_page.dart index 95162c9..9bc64e5 100644 --- a/lib/presentation/pages/details_page/details_page.dart +++ b/lib/presentation/pages/details_page/details_page.dart @@ -10,7 +10,7 @@ class DetailsPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( - appBar: AppBar(title: Text('Sweet ${data.flavorName}')), + appBar: AppBar(title: Text('Sweet ${data.name}')), body: SingleChildScrollView( padding: const EdgeInsets.all(30), child: Column( @@ -27,11 +27,11 @@ class DetailsPage extends StatelessWidget { ), ), const SizedBox(height: 20), - Text("${context.locale.titleCard}: ${data.flavorName}", + Text("${context.locale.titleCard}: ${data.name}", style: const TextStyle(fontSize: 20, color: Colors.blue)), Text("${context.locale.descriptionCard}: ${data.description}", style: const TextStyle(fontSize: 16, color: Colors.red)), - Text("${context.locale.manufacturer}: ${data.groupName}", + Text("${context.locale.manufacturer}: ${data.manufacturer}", style: const TextStyle(fontSize: 16, color: Colors.orangeAccent)), ], ), diff --git a/lib/presentation/pages/home_page/candy_page.dart b/lib/presentation/pages/home_page/candy_page.dart index ddb92d4..e84bb37 100644 --- a/lib/presentation/pages/home_page/candy_page.dart +++ b/lib/presentation/pages/home_page/candy_page.dart @@ -167,7 +167,7 @@ class _MyCandyPageState extends State { : Card.fromData( data, isLiked: - likeState.likedIds?.contains(data.beanId) == true, + likeState.likedIds?.contains(data.candyId) == true, onLike: (int? id, String text, bool isLiked) => _onLike(id, text, isLiked), onTap: () => _navigateToDetailsPage(context, data), diff --git a/lib/presentation/pages/home_page/card.dart b/lib/presentation/pages/home_page/card.dart index f621173..baf9dc1 100644 --- a/lib/presentation/pages/home_page/card.dart +++ b/lib/presentation/pages/home_page/card.dart @@ -27,8 +27,8 @@ class Card extends StatelessWidget { VoidCallback? onTap, bool isLiked = false}) => Card( - id: data.beanId, - name: data.flavorName, + id: data.candyId, + name: data.name, description: data.description, image: data.imageUrl, isLiked: isLiked,