import 'package:eatvio_app/core/routing/route_constants.dart'; import 'package:eatvio_app/features/blog_post/presentation/pages/blog_post_screen.dart'; import 'package:eatvio_app/features/blog_post_create/presentation/pages/blog_post_create_screen.dart'; import 'package:eatvio_app/features/diets/presentation/pages/about_diet_screen.dart'; import 'package:eatvio_app/features/feed/models/feed_blog_post_model.dart'; import 'package:eatvio_app/features/plans/presentation/pages/about_plan_screen.dart'; import 'package:eatvio_app/features/recipe/presentation/pages/about_recipe_screen.dart'; import 'package:go_router/go_router.dart'; /// Маршруты для контента class ContentRoutes { /// Создание маршрутов контента static List createRoutes() { return [ GoRoute( path: RouteConstants.aboutPlanScreen, name: 'aboutPlanScreen', builder: (context, state) { final slug = state.uri.queryParameters['slug']; final commentIdStr = state.uri.queryParameters['commentId']; final commentId = int.tryParse(commentIdStr ?? ''); if (slug != null) { return AboutPlanScreen(slug: slug, navigateToComments: commentId != null, index: null, highlightedCommentId: commentId); } final data = state.extra as Map; return AboutPlanScreen( slug: data['slug'] as String, index: data['index'] as int?, navigateToComments: data['navigateToComments'] as bool? ?? (data['commentId'] != null), highlightedCommentId: data['commentId'] as int?, ); }, ), GoRoute( path: RouteConstants.aboutRecipesScreen, name: 'aboutRecipesScreen', builder: (context, state) { final slug = state.uri.queryParameters['slug']; final commentIdStr = state.uri.queryParameters['commentId']; final commentId = int.tryParse(commentIdStr ?? ''); if (slug != null) { return AboutRecipeScreen(recipeSlug: slug, navigateToComments: commentId != null, index: null, highlightedCommentId: commentId); } final data = state.extra as Map; return AboutRecipeScreen( recipeSlug: data['recipe'] as String, index: data['index'] as int?, navigateToComments: data['navigateToComments'] as bool? ?? (data['commentId'] != null), highlightedCommentId: data['commentId'] as int?, ); }, ), GoRoute( path: RouteConstants.aboutDietScreen, name: 'aboutDietScreen', builder: (context, state) { final slug = state.uri.queryParameters['slug']; final idStr = state.uri.queryParameters['id']; final id = int.tryParse(idStr ?? ''); final commentIdStr = state.uri.queryParameters['commentId']; final commentId = int.tryParse(commentIdStr ?? ''); if (slug != null) { return AboutDietScreen(id: null, slug: slug, index: null, navigateToComments: commentId != null, highlightedCommentId: commentId); } if (id != null && id > 0) { return AboutDietScreen(id: id, slug: null, index: null, navigateToComments: commentId != null, highlightedCommentId: commentId); } final data = state.extra as Map?; if (data != null) { return AboutDietScreen( id: data['id'] as int?, slug: data['slug'] as String?, index: data['index'] as int?, navigateToComments: data['navigateToComments'] as bool? ?? (data['commentId'] != null), highlightedCommentId: data['commentId'] as int?, ); } return const AboutDietScreen(id: null, slug: null, index: null, navigateToComments: false, highlightedCommentId: null); }, ), GoRoute( path: RouteConstants.blogPostCreateScreen, name: 'blogPostCreateScreen', builder: (context, state) => BlogPostCreateScreen(feedBlogPostModel: state.extra != null ? state.extra as FeedBlogPostModel : null), ), GoRoute( path: RouteConstants.blogPostScreen, name: 'blogPostScreen', builder: (context, state) { final id = state.uri.queryParameters['id']; final commentIdStr = state.uri.queryParameters['commentId']; final commentId = int.tryParse(commentIdStr ?? ''); final parsedId = int.tryParse(id ?? ''); if (parsedId != null) { return BlogPostScreen(id: parsedId, highlightedCommentId: commentId); } if (state.extra is int) { return BlogPostScreen(id: state.extra as int); } final data = state.extra as Map; return BlogPostScreen(id: data['id'] as int, highlightedCommentId: data['commentId'] as int?); }, ), ]; } }