From 6c03971f183042ccc8000fa226c9d29b34b3faca Mon Sep 17 00:00:00 2001 From: maxxkim Date: Mon, 4 Mar 2024 10:12:01 +0300 Subject: [PATCH] feat(diary): Comments and autocomplete finished --- .../bloc/diary_edit_bloc.dart | 47 ++++++++++++++----- .../diary_edit_screen/diary_edit_screen.dart | 3 +- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_bloc.dart b/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_bloc.dart index 907684ce..da42241b 100644 --- a/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_bloc.dart +++ b/lib/presentation/diary/diary_edit_screen/bloc/diary_edit_bloc.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:ffi'; import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; @@ -302,16 +303,7 @@ class DiaryEditBloc extends Bloc { var currentState = state as DiaryEditLoadedState; var updatedState = currentState.copyWith(mealTimeController: event.time); - emit(updatedState); // Передаем обновленное состояние в emit - - // Отправляем данные по HTTP маршруту и ждем ответ - var response = await sendMealTimeData(currentState.token, event.time, - currentState.currentMeal?.id, currentState.diaryId); - - if (response.statusCode == 200) { - updatedState.mealTimeController = event.time; - emit(updatedState); // Передаем обновленное состояние в emit - } + emit(updatedState); } } @@ -469,7 +461,40 @@ class DiaryEditBloc extends Bloc { print(imageUrl); } - FutureOr _addComment(AddComment event, Emitter emit) {} + FutureOr _addComment( + AddComment event, Emitter emit) async { + if (state is DiaryEditLoadedState) { + var currentState = state as DiaryEditLoadedState; + var updatedState = + currentState.copyWith(commentController: event.comment); + + // Отправляем данные по HTTP маршруту и ждем ответ + var response = await sendCommentData( + currentState.token, event.comment, currentState.diaryId); + + if (response.statusCode == 200) { + emit(updatedState); // Передаем обновленное состояние в emit + } + } + } + + Future sendCommentData( + String? token, String comment, int diaryID) async { + String url = dotenv.env['SERVER_ROOT']! + '/diary/$diaryID/retire/fill'; + final credentials = { + 'comment': comment, + }; + + var response = await http.post(Uri.parse(url), + headers: { + 'Authorization': 'Bearer $token', + }, + body: json.encode(credentials), + encoding: utf8); + + return response; + } + Future uploadImageToServer(String imagePath) async { var request = http.MultipartRequest( 'POST', diff --git a/lib/presentation/diary/diary_edit_screen/diary_edit_screen.dart b/lib/presentation/diary/diary_edit_screen/diary_edit_screen.dart index 70e79daf..e4cb6f56 100644 --- a/lib/presentation/diary/diary_edit_screen/diary_edit_screen.dart +++ b/lib/presentation/diary/diary_edit_screen/diary_edit_screen.dart @@ -359,7 +359,8 @@ class DiaryEditScreen extends StatelessWidget { RawAutocomplete( optionsBuilder: (TextEditingValue textEditingValue) { return _options.where((String option) { - return option.contains(textEditingValue.text.toLowerCase()); + return option.contains( + state.productNameController!.text.toLowerCase()); }); }, fieldViewBuilder: ( BuildContext context,