diff --git a/assets/icons/eye2.svg b/assets/icons/eye2.svg
new file mode 100644
index 00000000..84676c48
--- /dev/null
+++ b/assets/icons/eye2.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/filter2.svg b/assets/icons/filter2.svg
new file mode 100644
index 00000000..ed90bc9d
--- /dev/null
+++ b/assets/icons/filter2.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/repost.svg b/assets/icons/repost.svg
new file mode 100644
index 00000000..05517e80
--- /dev/null
+++ b/assets/icons/repost.svg
@@ -0,0 +1,3 @@
+
diff --git a/lib/app_router.dart b/lib/app_router.dart
index 6b8edb3c..91ab37fd 100644
--- a/lib/app_router.dart
+++ b/lib/app_router.dart
@@ -147,9 +147,14 @@ class AppRouter {
GoRoute(
path: '/about-diet-screen',
name: 'aboutDietScreen',
- builder: (context, state) => AboutDietScreen(
- diet: state.extra as Diet,
- ),
+ builder: (context, state) {
+ final data = state.extra as Map;
+ return AboutDietScreen(
+ diet: data['diet'] as Diet,
+ index: data['index'] as int,
+ navigateToComments: data['navigateToComments'] as bool,
+ );
+ },
),
GoRoute(
path: '/blog-post-create-screen',
diff --git a/lib/core/data/diet/repositories/diet_repository.dart b/lib/core/data/diet/repositories/diet_repository.dart
new file mode 100644
index 00000000..5e78ae33
--- /dev/null
+++ b/lib/core/data/diet/repositories/diet_repository.dart
@@ -0,0 +1,105 @@
+import 'dart:async';
+
+import 'package:eatvio_app/core/data/diet/services/diet_service.dart';
+import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart';
+import 'package:equatable/equatable.dart';
+
+class DietRepository {
+ DietRepository({required this.dietsService});
+ final DietService dietsService;
+
+ final _dietLikeStateStreamController = StreamController.broadcast();
+ final _dietFavoriteStateStreamController = StreamController.broadcast();
+ final _dietCommentsStateStreamController = StreamController.broadcast();
+ Stream get dietLikeState => _dietLikeStateStreamController.stream;
+ Stream get dietFavoriteState => _dietFavoriteStateStreamController.stream;
+ Stream get dietCommentsState => _dietCommentsStateStreamController.stream;
+
+ Future likeDiet(int id) async {
+ try {
+ await dietsService.likeDiet(id: id);
+ } catch (e) {
+ rethrow;
+ }
+ }
+
+ Future getDiet(int id) async {
+ try {
+ final diet = await dietsService.getDiet(id: id);
+ return diet;
+ } catch (e) {
+ rethrow;
+ }
+ }
+
+ Future addToFavorite(int id) async {
+ try {
+ await dietsService.addToFavorite(id: id);
+ } catch (e) {
+ rethrow;
+ }
+ }
+
+ Future removeFromFavorite(int id) async {
+ try {
+ await dietsService.removeFromFavorite(id: id);
+ } catch (e) {
+ rethrow;
+ }
+ }
+
+ void emitLikesStateToFeed(DietLikesState state) => _dietLikeStateStreamController.add(state);
+ void emitFavoriteStateToFeed(DietFavoriteState state) => _dietFavoriteStateStreamController.add(state);
+ void emitCommentsStateToFeed(DietCommentsState state) => _dietCommentsStateStreamController.add(state);
+}
+
+class DietLikesState extends Equatable {
+ final bool wasLikedByMe;
+ final int totalLikes;
+ final int index;
+
+ DietLikesState({
+ required this.wasLikedByMe,
+ required this.totalLikes,
+ required this.index,
+ });
+
+ @override
+ List