feat(chat): fix chat first message, add pick images from gallery

This commit is contained in:
mso7nueh
2025-06-23 19:46:23 +03:00
parent 85d67ba9c4
commit 75fa9ebc5c
10 changed files with 347 additions and 34 deletions

View File

@@ -5,6 +5,7 @@ import 'package:eatvio_app/core/image_compressing/image_compress_utility.dart';
import 'package:eatvio_app/core/utils/toasts.dart';
import 'package:eatvio_app/features/chat/repositories/chat_repository.dart';
import 'package:eatvio_app/features/consultant/become_consultant/repositories/consultant_repository.dart';
import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart';
import 'package:eatvio_app/features/feed/models/feed_blog_post_model.dart';
import 'package:eatvio_app/features/profile/presentation/bloc/profile_cubit/profile_state.dart';
import 'package:eatvio_app/features/profile/repositories/profile_repository.dart';
@@ -107,18 +108,14 @@ class ProfileCubit extends Cubit<ProfileState> {
}
getChatRoomIdBySlug({
required String slug,
required Author author,
}) async {
try {
final chatIdOrError = await chatRepository.getChatByUserSlug(slug);
final chatIdOrError = await chatRepository.getChatByUserSlug(author.authorSlug);
if (chatIdOrError == '404') {
await chatRepository.sendFirstChatMessageForCreateChatRoom(slug);
final chatIdOrError = await chatRepository.getChatByUserSlug(slug);
AppRouter.navigatorKey.currentContext?.pushNamed(
'chatScreen',
extra: {
'chatId': chatIdOrError,
},
'emptyChatScreen',
extra: author,
);
} else if (chatIdOrError == 'error') {
showErrorToast('Ошибка создания чата');

View File

@@ -1232,7 +1232,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
children: [
const SizedBox(width: 16),
GestureDetector(
onTap: () async => await profileCubit.getChatRoomIdBySlug(slug: widget.author!.authorSlug),
onTap: () async => await profileCubit.getChatRoomIdBySlug(author: widget.author!),
child: Container(
alignment: Alignment.center,
padding: const EdgeInsets.all(8),

View File

@@ -1,5 +1,6 @@
import 'package:eatvio_app/core/locator_service.dart';
import 'package:eatvio_app/core/theme/theme_helper.dart';
import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart';
import 'package:eatvio_app/features/profile/presentation/bloc/profile_cubit/profile_cubit.dart';
import 'package:eatvio_app/features/profile/presentation/bloc/sub_cubit/sub_cubit.dart';
import 'package:flutter/material.dart';
@@ -11,11 +12,15 @@ enum SubActionType { sendMessage, subscribe }
class SubActionButtonWidget extends StatefulWidget {
final SubActionType subActionType;
final String slug;
final String name;
final String porfileIcon;
const SubActionButtonWidget({
super.key,
required this.subActionType,
required this.slug,
required this.name,
required this.porfileIcon,
});
@override
@@ -64,7 +69,14 @@ class _SubActionButtonWidgetState extends State<SubActionButtonWidget> {
GoRouter.of(context).pushNamed(
'chatScreen',
extra: {
'chatId': await sl<ProfileCubit>().getChatRoomIdBySlug(slug: widget.slug),
'chatId': await sl<ProfileCubit>().getChatRoomIdBySlug(
author: Author(
authorSlug: widget.slug,
authorName: widget.name,
authorProfileIcon: widget.porfileIcon,
authorIsMe: false,
),
),
},
);
},

View File

@@ -70,6 +70,8 @@ class _SubWidgetState extends State<SubWidget> {
SubActionButtonWidget(
subActionType: widget.subModel.isEntitySubscribedByMe ? SubActionType.sendMessage : SubActionType.subscribe,
slug: widget.subModel.slug,
name: widget.subModel.name,
porfileIcon: widget.subModel.profilePhotoUrl,
),
],
),