diff --git a/assets/images/img_attach.svg b/assets/images/img_attach.svg
new file mode 100644
index 00000000..9f75ca7c
--- /dev/null
+++ b/assets/images/img_attach.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/images/img_mic.svg b/assets/images/img_mic.svg
new file mode 100644
index 00000000..a7c11027
--- /dev/null
+++ b/assets/images/img_mic.svg
@@ -0,0 +1,3 @@
+
diff --git a/eatvio_app.iml b/eatvio_app.iml
index f66303d5..ed4ab455 100644
--- a/eatvio_app.iml
+++ b/eatvio_app.iml
@@ -1,4 +1,4 @@
-
+
diff --git a/lib/core/utils/image_constant.dart b/lib/core/utils/image_constant.dart
index 8534fec2..8c9c0981 100644
--- a/lib/core/utils/image_constant.dart
+++ b/lib/core/utils/image_constant.dart
@@ -104,6 +104,10 @@ class ImageConstant {
static String imgSupport = '$imagePath/img_nav_support.svg';
+ static String imgMic = '$imagePath/img_mic.svg';
+
+ static String imgAttach = '$imagePath/img_attach.svg';
+
static String imgExit = '$imagePath/img_nav_exit.svg';
//-------------------------------------------------------------
diff --git a/lib/main.dart b/lib/main.dart
index 7b5326dc..3a5a94bd 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -14,6 +14,8 @@ void main() async {
await dotenv.load(fileName: ".env");
await Hive.initFlutter(path);
SystemChrome.setPreferredOrientations([
+ DeviceOrientation.landscapeLeft,
+ DeviceOrientation.landscapeRight,
DeviceOrientation.portraitUp,
]);
await PrefUtils().init();
diff --git a/lib/presentation/chat/chat_screen/bloc/chat_bloc.dart b/lib/presentation/chat/chat_screen/bloc/chat_bloc.dart
index 0f4a2add..52cf81df 100644
--- a/lib/presentation/chat/chat_screen/bloc/chat_bloc.dart
+++ b/lib/presentation/chat/chat_screen/bloc/chat_bloc.dart
@@ -6,6 +6,7 @@ import 'package:http/http.dart' as http;
import 'dart:convert';
import '/core/app_export.dart';
import 'package:eatvio_app/presentation/chat/chat_screen/models/chat_model.dart';
+import 'package:eatvio_app/presentation/chat/chat_screen/models/chat_message_model.dart';
part 'chat_event.dart';
part 'chat_state.dart';
@@ -27,22 +28,26 @@ class ChatBloc extends Bloc {
AppRoutes.authScreen,
);
}
- final int id = 1;
+ final String? chatID = state.chatModelObj?.chatID;
final response = await http.get(
- Uri.parse(dotenv.env['SERVER_ROOT']! + '/chat/$id/show'),
+ Uri.parse(dotenv.env['SERVER_ROOT']! + '/chat/show/$chatID'),
headers: {
'Authorization': 'Bearer $token',
},
);
if (response.statusCode == 200) {
final data = jsonDecode(response.body);
- print(data['chatRooms']);
- if (data is Map && data.containsKey('chatRooms')) {
+ if (data is Map &&
+ data.containsKey('chatRoom') &&
+ data['chatRoom'].containsKey('messages')) {
if (state is ChatLoadedState) {
var currentState = state as ChatLoadedState;
- emit(currentState.copyWith());
+ emit(currentState.copyWith(
+ chatModelObj: currentState.chatModelObj,
+ messages: currentState.messages));
} else {
- emit(ChatLoadedState());
+ emit(ChatLoadedState(
+ messages: fillMessages(data['chatRoom']['messages'])));
}
} else {
// Один или несколько ключевых полей отсутствуют, обрабатываем ошибку
@@ -57,4 +62,18 @@ class ChatBloc extends Bloc {
emit(ChatErrorState('Ошибка при получении данных о чатах: $e'));
}
}
+
+ List fillMessages(List messagesJSON) {
+ List messages = [];
+ for (int i = 0; i < messagesJSON.length; i++) {
+ messages.add(ChatMessageModel(
+ id: messagesJSON[i]['id'],
+ data: messagesJSON[i]['data'],
+ mediaData: messagesJSON[i]['mediaData'] ?? [],
+ updatedAt: messagesJSON[i]['updated_at'],
+ authorId: messagesJSON[i]['author_id']));
+ }
+
+ return messages;
+ }
}
diff --git a/lib/presentation/chat/chat_screen/bloc/chat_event.dart b/lib/presentation/chat/chat_screen/bloc/chat_event.dart
index a3778f98..1fe6df94 100644
--- a/lib/presentation/chat/chat_screen/bloc/chat_event.dart
+++ b/lib/presentation/chat/chat_screen/bloc/chat_event.dart
@@ -14,15 +14,3 @@ class ChatInitialEvent extends ChatEvent {
@override
List