diff --git a/lib/presentation/diets/diet_show_screen/bloc/diet_show_bloc.dart b/lib/presentation/diets/diet_show_screen/bloc/diet_show_bloc.dart index 064dcca9..a1216bd0 100644 --- a/lib/presentation/diets/diet_show_screen/bloc/diet_show_bloc.dart +++ b/lib/presentation/diets/diet_show_screen/bloc/diet_show_bloc.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; @@ -13,6 +15,7 @@ part 'diet_show_state.dart'; class DietBloc extends Bloc { DietBloc(DietState initialState) : super(initialState) { on(_onInitialize); + on(_deleteEntry); } _onInitialize( @@ -44,7 +47,6 @@ class DietBloc extends Bloc { diet: currentState.diet)); } else { emit(DietLoadedState(diet: data)); - print(data); } } else { // Один или несколько ключевых полей отсутствуют, обрабатываем ошибку @@ -59,4 +61,28 @@ class DietBloc extends Bloc { emit(DietErrorState('Ошибка при получении данных о чатах: $e')); } } + + FutureOr _deleteEntry( + DeleteEntry event, Emitter emit) async { + final box = await Hive.openBox('token'); + final token = box.get('token'); + if (token == null) { + NavigatorService.popAndPushNamed( + AppRoutes.authScreen, + ); + } + final int id = event.id; + final response = await http.post( + Uri.parse(dotenv.env['SERVER_ROOT']! + '/diets/delete/$id'), + headers: { + 'Authorization': 'Bearer $token', + }, + ); + if (response.statusCode == 200) { + NavigatorService.pushNamed(AppRoutes.dietSelectScreen); + } else { + // Статус ответа не равен 200, обрабатываем ошибку + emit(DietErrorState('Ошибка: ${response.statusCode}')); + } + } } diff --git a/lib/presentation/diets/diet_show_screen/bloc/diet_show_event.dart b/lib/presentation/diets/diet_show_screen/bloc/diet_show_event.dart index 3f1d6801..6a131d5c 100644 --- a/lib/presentation/diets/diet_show_screen/bloc/diet_show_event.dart +++ b/lib/presentation/diets/diet_show_screen/bloc/diet_show_event.dart @@ -14,3 +14,10 @@ class DietInitialEvent extends DietEvent { @override List get props => []; } + +class DeleteEntry extends DietEvent { + DeleteEntry(this.id); + final int id; + @override + List get props => [id]; +} diff --git a/lib/presentation/diets/diet_show_screen/diet_show_screen.dart b/lib/presentation/diets/diet_show_screen/diet_show_screen.dart index ce98505c..af308838 100644 --- a/lib/presentation/diets/diet_show_screen/diet_show_screen.dart +++ b/lib/presentation/diets/diet_show_screen/diet_show_screen.dart @@ -44,7 +44,6 @@ class DietScreen extends StatelessWidget { } _buildDiet(BuildContext context, DietLoadedState state) { - print(state.diet); mediaQueryData = MediaQuery.of(context); return SafeArea( child: Scaffold( @@ -110,9 +109,9 @@ class DietScreen extends StatelessWidget { child: Text('Редактировать'), ), ElevatedButton( - onPressed: () { - // Действие для удаления - }, + onPressed: () => context + .read() + .add(DeleteEntry(state.diet?['id'])), child: Text('Удалить'), ), ], diff --git a/lib/presentation/feed/blog_post_screen/bloc/blog_post_bloc.dart b/lib/presentation/feed/blog_post_screen/bloc/blog_post_bloc.dart index 621beb1c..74afd4d1 100644 --- a/lib/presentation/feed/blog_post_screen/bloc/blog_post_bloc.dart +++ b/lib/presentation/feed/blog_post_screen/bloc/blog_post_bloc.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; @@ -13,6 +15,7 @@ part 'blog_post_state.dart'; class BlogPostBloc extends Bloc { BlogPostBloc(BlogPostState initialState) : super(initialState) { on(_onInitialize); + on(_deleteEntry); } _onInitialize( @@ -58,4 +61,28 @@ class BlogPostBloc extends Bloc { emit(BlogPostErrorState('Ошибка при получении данных о чатах: $e')); } } + + FutureOr _deleteEntry( + DeleteEntry event, Emitter emit) async { + final box = await Hive.openBox('token'); + final token = box.get('token'); + if (token == null) { + NavigatorService.popAndPushNamed( + AppRoutes.authScreen, + ); + } + final int id = event.id; + final response = await http.post( + Uri.parse(dotenv.env['SERVER_ROOT']! + '/feed/delete/$id'), + headers: { + 'Authorization': 'Bearer $token', + }, + ); + if (response.statusCode == 200) { + NavigatorService.pushNamed(AppRoutes.feedScreen); + } else { + // Статус ответа не равен 200, обрабатываем ошибку + emit(BlogPostErrorState('Ошибка: ${response.statusCode}')); + } + } } diff --git a/lib/presentation/feed/blog_post_screen/bloc/blog_post_event.dart b/lib/presentation/feed/blog_post_screen/bloc/blog_post_event.dart index d656a785..de77e332 100644 --- a/lib/presentation/feed/blog_post_screen/bloc/blog_post_event.dart +++ b/lib/presentation/feed/blog_post_screen/bloc/blog_post_event.dart @@ -14,3 +14,10 @@ class BlogPostInitialEvent extends BlogPostEvent { @override List get props => []; } + +class DeleteEntry extends BlogPostEvent { + DeleteEntry(this.id); + final int id; + @override + List get props => [id]; +} diff --git a/lib/presentation/feed/blog_post_screen/blog_post_screen.dart b/lib/presentation/feed/blog_post_screen/blog_post_screen.dart index 58672875..4db80307 100644 --- a/lib/presentation/feed/blog_post_screen/blog_post_screen.dart +++ b/lib/presentation/feed/blog_post_screen/blog_post_screen.dart @@ -111,9 +111,9 @@ class BlogPostScreen extends StatelessWidget { child: Text('Редактировать'), ), ElevatedButton( - onPressed: () { - // Действие для удаления - }, + onPressed: () => context + .read() + .add(DeleteEntry(state.blog_post?['id'])), child: Text('Удалить'), ), ], diff --git a/lib/presentation/plans/plan_select_screen/plan_select_screen.dart b/lib/presentation/plans/plan_select_screen/plan_select_screen.dart index bb9862b4..a88ca9ab 100644 --- a/lib/presentation/plans/plan_select_screen/plan_select_screen.dart +++ b/lib/presentation/plans/plan_select_screen/plan_select_screen.dart @@ -40,7 +40,6 @@ class PlanSelectScreen extends StatelessWidget { _buildSetingsScreen(BuildContext context, PlanSelectLoadedState state) { mediaQueryData = MediaQuery.of(context); - print(state.posts); return SafeArea( child: Scaffold( backgroundColor: Colors.grey[200], diff --git a/lib/presentation/plans/plan_show_screen/bloc/plan_show_bloc.dart b/lib/presentation/plans/plan_show_screen/bloc/plan_show_bloc.dart index 1416bafa..616b521a 100644 --- a/lib/presentation/plans/plan_show_screen/bloc/plan_show_bloc.dart +++ b/lib/presentation/plans/plan_show_screen/bloc/plan_show_bloc.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; @@ -13,6 +15,7 @@ part 'plan_show_state.dart'; class PlanBloc extends Bloc { PlanBloc(PlanState initialState) : super(initialState) { on(_onInitialize); + on(_deleteEntry); } _onInitialize( @@ -44,7 +47,6 @@ class PlanBloc extends Bloc { plan: currentState.plan)); } else { emit(PlanLoadedState(plan: data)); - print(data); } } else { // Один или несколько ключевых полей отсутствуют, обрабатываем ошибку @@ -59,4 +61,28 @@ class PlanBloc extends Bloc { emit(PlanErrorState('Ошибка при получении данных о чатах: $e')); } } + + FutureOr _deleteEntry( + DeleteEntry event, Emitter emit) async { + final box = await Hive.openBox('token'); + final token = box.get('token'); + if (token == null) { + NavigatorService.popAndPushNamed( + AppRoutes.authScreen, + ); + } + final int id = event.id; + final response = await http.post( + Uri.parse(dotenv.env['SERVER_ROOT']! + '/plans/delete/$id'), + headers: { + 'Authorization': 'Bearer $token', + }, + ); + if (response.statusCode == 200) { + NavigatorService.pushNamed(AppRoutes.planSelectScreen); + } else { + // Статус ответа не равен 200, обрабатываем ошибку + emit(PlanErrorState('Ошибка: ${response.statusCode}')); + } + } } diff --git a/lib/presentation/plans/plan_show_screen/bloc/plan_show_event.dart b/lib/presentation/plans/plan_show_screen/bloc/plan_show_event.dart index 767eefad..fc83e024 100644 --- a/lib/presentation/plans/plan_show_screen/bloc/plan_show_event.dart +++ b/lib/presentation/plans/plan_show_screen/bloc/plan_show_event.dart @@ -14,3 +14,10 @@ class PlanInitialEvent extends PlanEvent { @override List get props => []; } + +class DeleteEntry extends PlanEvent { + DeleteEntry(this.id); + final int id; + @override + List get props => [id]; +} diff --git a/lib/presentation/plans/plan_show_screen/plan_show_screen.dart b/lib/presentation/plans/plan_show_screen/plan_show_screen.dart index 9da7deca..0dab4173 100644 --- a/lib/presentation/plans/plan_show_screen/plan_show_screen.dart +++ b/lib/presentation/plans/plan_show_screen/plan_show_screen.dart @@ -44,7 +44,6 @@ class PlanScreen extends StatelessWidget { } _buildPlan(BuildContext context, PlanLoadedState state) { - print(state.plan); mediaQueryData = MediaQuery.of(context); return SafeArea( child: Scaffold( @@ -108,9 +107,9 @@ class PlanScreen extends StatelessWidget { child: Text('Редактировать'), ), ElevatedButton( - onPressed: () { - // Действие для удаления - }, + onPressed: () => context + .read() + .add(DeleteEntry(state.plan?['id'])), child: Text('Удалить'), ), ], diff --git a/lib/presentation/recipe/recipe_select_screen/recipe_select_screen.dart b/lib/presentation/recipe/recipe_select_screen/recipe_select_screen.dart index 20f1d78e..f11d5c5e 100644 --- a/lib/presentation/recipe/recipe_select_screen/recipe_select_screen.dart +++ b/lib/presentation/recipe/recipe_select_screen/recipe_select_screen.dart @@ -29,7 +29,7 @@ class RecipeSelectScreen extends StatelessWidget { ); } else if (state is RecipeSelectLoadedState) { // Данные загружены, можно строить экран. - return _buildSetingsScreen(context, state); + return _buildRecipeScreen(context, state); } else { // Другие состояния, если они есть. return Container(); // Пустой контейнер для необработанных состояний. @@ -38,7 +38,7 @@ class RecipeSelectScreen extends StatelessWidget { ); } - _buildSetingsScreen(BuildContext context, RecipeSelectLoadedState state) { + _buildRecipeScreen(BuildContext context, RecipeSelectLoadedState state) { mediaQueryData = MediaQuery.of(context); return SafeArea( child: Scaffold( diff --git a/lib/presentation/recipe/recipe_show_screen/bloc/recipe_show_bloc.dart b/lib/presentation/recipe/recipe_show_screen/bloc/recipe_show_bloc.dart index e5c375a6..a65348ed 100644 --- a/lib/presentation/recipe/recipe_show_screen/bloc/recipe_show_bloc.dart +++ b/lib/presentation/recipe/recipe_show_screen/bloc/recipe_show_bloc.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; @@ -13,6 +15,7 @@ part 'recipe_show_state.dart'; class RecipeBloc extends Bloc { RecipeBloc(RecipeState initialState) : super(initialState) { on(_onInitialize); + on(_deleteEntry); } _onInitialize( @@ -44,7 +47,6 @@ class RecipeBloc extends Bloc { recipe: currentState.recipe)); } else { emit(RecipeLoadedState(recipe: data)); - print(data); } } else { // Один или несколько ключевых полей отсутствуют, обрабатываем ошибку @@ -59,4 +61,28 @@ class RecipeBloc extends Bloc { emit(RecipeErrorState('Ошибка при получении данных о чатах: $e')); } } + + FutureOr _deleteEntry( + DeleteEntry event, Emitter emit) async { + final box = await Hive.openBox('token'); + final token = box.get('token'); + if (token == null) { + NavigatorService.popAndPushNamed( + AppRoutes.authScreen, + ); + } + final int id = event.id; + final response = await http.post( + Uri.parse(dotenv.env['SERVER_ROOT']! + '/recipe/delete/$id'), + headers: { + 'Authorization': 'Bearer $token', + }, + ); + if (response.statusCode == 200) { + NavigatorService.pushNamed(AppRoutes.recipeSelectScreen); + } else { + // Статус ответа не равен 200, обрабатываем ошибку + emit(RecipeErrorState('Ошибка: ${response.statusCode}')); + } + } } diff --git a/lib/presentation/recipe/recipe_show_screen/bloc/recipe_show_event.dart b/lib/presentation/recipe/recipe_show_screen/bloc/recipe_show_event.dart index 489e3597..6257e893 100644 --- a/lib/presentation/recipe/recipe_show_screen/bloc/recipe_show_event.dart +++ b/lib/presentation/recipe/recipe_show_screen/bloc/recipe_show_event.dart @@ -14,3 +14,10 @@ class RecipeInitialEvent extends RecipeEvent { @override List get props => []; } + +class DeleteEntry extends RecipeEvent { + DeleteEntry(this.id); + final int id; + @override + List get props => [id]; +} diff --git a/lib/presentation/recipe/recipe_show_screen/recipe_show_screen.dart b/lib/presentation/recipe/recipe_show_screen/recipe_show_screen.dart index 3576b5a6..01e944e8 100644 --- a/lib/presentation/recipe/recipe_show_screen/recipe_show_screen.dart +++ b/lib/presentation/recipe/recipe_show_screen/recipe_show_screen.dart @@ -44,7 +44,6 @@ class RecipeScreen extends StatelessWidget { } _buildRecipe(BuildContext context, RecipeLoadedState state) { - print(state.recipe); mediaQueryData = MediaQuery.of(context); return SafeArea( child: Scaffold( @@ -108,9 +107,9 @@ class RecipeScreen extends StatelessWidget { child: Text('Редактировать'), ), ElevatedButton( - onPressed: () { - // Действие для удаления - }, + onPressed: () => context + .read() + .add(DeleteEntry(state.recipe?['id'])), child: Text('Удалить'), ), ],