diff --git a/lib/core/data/diet/models/diet_likes_model.dart b/lib/features/diets/models/diet_likes_model.dart similarity index 100% rename from lib/core/data/diet/models/diet_likes_model.dart rename to lib/features/diets/models/diet_likes_model.dart diff --git a/lib/core/data/diet/models/diet_likes_model.freezed.dart b/lib/features/diets/models/diet_likes_model.freezed.dart similarity index 100% rename from lib/core/data/diet/models/diet_likes_model.freezed.dart rename to lib/features/diets/models/diet_likes_model.freezed.dart diff --git a/lib/core/data/diet/models/diet_likes_model.g.dart b/lib/features/diets/models/diet_likes_model.g.dart similarity index 100% rename from lib/core/data/diet/models/diet_likes_model.g.dart rename to lib/features/diets/models/diet_likes_model.g.dart diff --git a/lib/features/diets/presentation/bloc/about_diet_cubit.dart b/lib/features/diets/presentation/bloc/about_diet_cubit.dart index 14fa564b..470da0de 100644 --- a/lib/features/diets/presentation/bloc/about_diet_cubit.dart +++ b/lib/features/diets/presentation/bloc/about_diet_cubit.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'dart:developer'; import 'package:easy_debounce/easy_debounce.dart'; -import 'package:eatvio_app/core/data/diet/repositories/diet_repository.dart'; +import 'package:eatvio_app/features/diets/repositories/diet_repository.dart'; import 'package:eatvio_app/features/diets/presentation/bloc/about_diet_state.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; diff --git a/lib/core/data/diet/repositories/diet_repository.dart b/lib/features/diets/repositories/diet_repository.dart similarity index 95% rename from lib/core/data/diet/repositories/diet_repository.dart rename to lib/features/diets/repositories/diet_repository.dart index aff946b7..142ce800 100644 --- a/lib/core/data/diet/repositories/diet_repository.dart +++ b/lib/features/diets/repositories/diet_repository.dart @@ -1,7 +1,7 @@ import 'dart:async'; -import 'package:eatvio_app/core/data/diet/models/diet_likes_model.dart'; -import 'package:eatvio_app/core/data/diet/services/diet_service.dart'; +import 'package:eatvio_app/features/diets/models/diet_likes_model.dart'; +import 'package:eatvio_app/features/diets/services/diet_service.dart'; import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart'; import 'package:equatable/equatable.dart'; diff --git a/lib/core/data/diet/services/diet_service.dart b/lib/features/diets/services/diet_service.dart similarity index 91% rename from lib/core/data/diet/services/diet_service.dart rename to lib/features/diets/services/diet_service.dart index 4baffdcb..0d9aebc3 100644 --- a/lib/core/data/diet/services/diet_service.dart +++ b/lib/features/diets/services/diet_service.dart @@ -1,5 +1,5 @@ import 'package:dio/dio.dart'; -import 'package:eatvio_app/core/data/diet/models/diet_likes_model.dart'; +import 'package:eatvio_app/features/diets/models/diet_likes_model.dart'; import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart'; import 'package:retrofit/retrofit.dart'; diff --git a/lib/core/data/diet/services/diet_service.g.dart b/lib/features/diets/services/diet_service.g.dart similarity index 100% rename from lib/core/data/diet/services/diet_service.g.dart rename to lib/features/diets/services/diet_service.g.dart diff --git a/lib/features/feed/presentation/bloc/diets_cubit/diets_cubit.dart b/lib/features/feed/presentation/bloc/diets_cubit/diets_cubit.dart index 745df313..27e97425 100644 --- a/lib/features/feed/presentation/bloc/diets_cubit/diets_cubit.dart +++ b/lib/features/feed/presentation/bloc/diets_cubit/diets_cubit.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'dart:developer'; import 'package:easy_debounce/easy_debounce.dart'; -import 'package:eatvio_app/core/data/diet/repositories/diet_repository.dart'; +import 'package:eatvio_app/features/diets/repositories/diet_repository.dart'; import 'package:eatvio_app/features/feed/presentation/bloc/diets_cubit/diets_state.dart'; import 'package:eatvio_app/features/feed/repositories/feed_repository.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; @@ -14,6 +14,9 @@ class DietsCubit extends Cubit { late int lastPage; bool isLoading = false; String? _query; + String? _types; + int? _duration; + String? _sorting; late final StreamSubscription likesStateSubscription; late final StreamSubscription favoriteStateSubscription; late final StreamSubscription commentsStateSubscription; @@ -42,11 +45,20 @@ class DietsCubit extends Cubit { loadDiets({ String? query, + String? types, + int? duration, + String? sorting, }) async { try { _query = query; + _types = types; + _duration = duration; + _sorting = sorting; final dietsPagination = await feedRepository.getDiets( query: query, + types: types, + duration: duration, + sorting: sorting, ); lastPage = dietsPagination.meta.lastPage; emit( @@ -76,6 +88,9 @@ class DietsCubit extends Cubit { final dietPagination = await feedRepository.getDiets( page: currentPage, query: _query, + types: _types, + duration: _duration, + sorting: _sorting, ); isLoading = false; emit( diff --git a/lib/features/feed/presentation/pages/feed_screen.dart b/lib/features/feed/presentation/pages/feed_screen.dart index 43a3afa3..f2a47c74 100644 --- a/lib/features/feed/presentation/pages/feed_screen.dart +++ b/lib/features/feed/presentation/pages/feed_screen.dart @@ -537,7 +537,7 @@ class _FeedScreenState extends State { recipesCubit.loadRecipesList(); break; case 2: - dietsCubit.loadDiets(query: query); + dietsCubit.loadDiets(query: query == '' ? null : query); break; } }, diff --git a/lib/features/feed/repositories/feed_repository.dart b/lib/features/feed/repositories/feed_repository.dart index 0556029c..5fe12d8a 100644 --- a/lib/features/feed/repositories/feed_repository.dart +++ b/lib/features/feed/repositories/feed_repository.dart @@ -45,11 +45,17 @@ class FeedRepository { Future getDiets({ int page = 1, String? query, + String? types, + int? duration, + String? sorting, }) async { try { return (await feedService.getDiets( page: page, query: query, + types: types, + duration: duration, + sorting: sorting, )); } catch (e) { rethrow; @@ -153,5 +159,4 @@ class FeedRepository { rethrow; } } - } diff --git a/lib/features/feed/services/feed_service.dart b/lib/features/feed/services/feed_service.dart index b5237b6c..771a6a1f 100644 --- a/lib/features/feed/services/feed_service.dart +++ b/lib/features/feed/services/feed_service.dart @@ -28,6 +28,9 @@ abstract class FeedService { Future getDiets({ @Query('page') required int page, @Query('filters[name][\$startsWith]') String? query, + @Query('filters[type][\$contains]') String? types, + @Query('filters[duration][\$eq]') int? duration, + @Query('sort') String? sorting, }); @GET('/api/blogPosts/{id}/comments/show') diff --git a/lib/features/feed/services/feed_service.g.dart b/lib/features/feed/services/feed_service.g.dart index 313ee6ec..e7a83c0e 100644 --- a/lib/features/feed/services/feed_service.g.dart +++ b/lib/features/feed/services/feed_service.g.dart @@ -107,11 +107,17 @@ class _FeedService implements FeedService { Future getDiets({ required int page, String? query, + String? types, + int? duration, + String? sorting, }) async { final _extra = {}; final queryParameters = { r'page': page, r'filters[name][$startsWith]': query, + r'filters[type][$contains]': types, + r'filters[duration][$eq]': duration, + r'sort': sorting, }; queryParameters.removeWhere((k, v) => v == null); final _headers = {}; diff --git a/lib/locator_service.dart b/lib/locator_service.dart index 8afebb45..b80bd8f4 100644 --- a/lib/locator_service.dart +++ b/lib/locator_service.dart @@ -1,7 +1,7 @@ import 'package:dio/dio.dart'; import 'package:eatvio_app/core/const.dart'; -import 'package:eatvio_app/core/data/diet/repositories/diet_repository.dart'; -import 'package:eatvio_app/core/data/diet/services/diet_service.dart'; +import 'package:eatvio_app/features/diets/repositories/diet_repository.dart'; +import 'package:eatvio_app/features/diets/services/diet_service.dart'; import 'package:eatvio_app/core/initialization_cubit/initialization_cubit.dart'; import 'package:eatvio_app/features/bottom_navigation_bar/presentation/bloc/new_messages_cubit/new_messages_cubit.dart'; import 'package:eatvio_app/features/bottom_navigation_bar/presentation/bloc/notifications_cubit/notifications_cubit.dart';