everything but chat

This commit is contained in:
Christien Rioux 2024-01-30 19:47:22 -05:00
parent ba73123702
commit 2e4deb2038
6 changed files with 23 additions and 65 deletions

View File

@ -1,46 +1,18 @@
import 'dart:async';
import 'package:awesome_extensions/awesome_extensions.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_chat_types/flutter_chat_types.dart' as types;
import 'package:flutter_chat_ui/flutter_chat_ui.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../old_to_refactor/proto/proto.dart' as proto;
import '../../old_to_refactor/providers/account.dart';
import '../../old_to_refactor/providers/chat.dart';
import '../../contacts/models/conversation.dart';
import '../../old_to_refactor/tools/tools.dart';
import '../../old_to_refactor/veilid_init.dart';
import '../../old_to_refactor/veilid_support/veilid_support.dart';
class ChatComponent extends ConsumerStatefulWidget {
const ChatComponent(
{required this.activeAccountInfo,
required this.activeChat,
required this.activeChatContact,
super.key});
final ActiveAccountInfo activeAccountInfo;
final TypedKey activeChat;
final proto.Contact activeChatContact;
class ChatComponent extends StatefulWidget {
const ChatComponent({super.key});
@override
ChatComponentState createState() => ChatComponentState();
@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
properties
..add(DiagnosticsProperty<ActiveAccountInfo>(
'activeAccountInfo', activeAccountInfo))
..add(DiagnosticsProperty<TypedKey>('activeChat', activeChat))
..add(DiagnosticsProperty<proto.Contact>(
'activeChatContact', activeChatContact));
}
}
class ChatComponentState extends ConsumerState<ChatComponent> {
class ChatComponentState extends State<ChatComponent> {
final _unfocusNode = FocusNode();
late final types.User _localUser;
late final types.User _remoteUser;

View File

@ -0,0 +1,3 @@
export 'chat_single_contact_item_widget.dart';
export 'chat_single_contact_list_widget.dart';
export 'empty_chat_list_widget.dart';

View File

@ -7,6 +7,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_translate/flutter_translate.dart';
import '../../account_manager/account_manager.dart';
import '../../contacts/contacts.dart';
import '../../tools/tools.dart';
import '../contact_invitation.dart';
@ -69,6 +70,7 @@ class InviteDialogState extends State<InviteDialog> {
Future<void> _onAccept() async {
final navigator = Navigator.of(context);
final activeAccountInfo = context.read<ActiveAccountInfo>();
final contactList = context.read<ContactListCubit>();
setState(() {
_isAccepting = true;
@ -83,9 +85,8 @@ class InviteDialogState extends State<InviteDialog> {
activeAccountInfo.localAccount.identityMaster.identityPublicKey ==
acceptedContact.remoteIdentity.identityPublicKey;
if (!isSelf) {
await createContact(
activeAccountInfo: activeAccountInfo,
profile: acceptedContact.remoteProfile,
await contactList.createContact(
remoteProfile: acceptedContact.remoteProfile,
remoteIdentity: acceptedContact.remoteIdentity,
remoteConversationRecordKey:
acceptedContact.remoteConversationRecordKey,

View File

@ -5,6 +5,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:flutter_translate/flutter_translate.dart';
import '../../chat_list/chat_list.dart';
import '../../layout/layout.dart';
import '../../proto/proto.dart' as proto;
import '../../theme/theme.dart';
import '../contacts.dart';
@ -70,23 +71,14 @@ class ContactItemWidget extends StatelessWidget {
// component is not dragged.
child: ListTile(
onTap: () async {
final activeAccountInfo =
await ref.read(fetchActiveAccountProvider.future);
if (activeAccountInfo != null) {
// Start a chat
await getOrCreateChatSingleContact(
activeAccountInfo: activeAccountInfo,
remoteConversationRecordKey: remoteConversationKey);
ref
..invalidate(fetchContactListProvider)
..invalidate(fetchChatListProvider);
// Click over to chats
if (context.mounted) {
await MainPager.of(context)?.pageController.animateToPage(
1,
duration: 250.ms,
curve: Curves.easeInOut);
}
// Start a chat
final chatListCubit = context.read<ChatListCubit>();
await chatListCubit.getOrCreateChatSingleContact(
remoteConversationRecordKey: remoteConversationKey);
// Click over to chats
if (context.mounted) {
await MainPager.of(context)?.pageController.animateToPage(1,
duration: 250.ms, curve: Curves.easeInOut);
}
// // ignore: use_build_context_synchronously

View File

@ -1,10 +1,7 @@
import 'package:awesome_extensions/awesome_extensions.dart';
import 'package:fast_immutable_collections/fast_immutable_collections.dart';
import 'package:flutter/material.dart';
import '../../../../proto/proto.dart' as proto;
import '../../../account_manager/account_manager.dart';
import '../../../tools/tools.dart';
import '../../../../chat_list/chat_list.dart';
class ChatsPage extends StatefulWidget {
const ChatsPage({super.key});
@ -30,16 +27,8 @@ class ChatsPageState extends State<ChatsPage> {
@override
// ignore: prefer_expression_function_bodies
Widget build(BuildContext context) {
final contactList = ref.watch(fetchContactListProvider).asData?.value ??
const IListConst([]);
final chatList =
ref.watch(fetchChatListProvider).asData?.value ?? const IListConst([]);
return Column(children: <Widget>[
if (chatList.isNotEmpty)
ChatSingleContactListWidget(
contactList: contactList, chatList: chatList)
.expanded(),
if (chatList.isEmpty) const EmptyChatListWidget().expanded(),
const ChatSingleContactListWidget().expanded(),
]);
}
}

View File

@ -1,3 +1,4 @@
export 'default_app_bar.dart';
export 'home/home.dart';
export 'home/home_account_ready/main_pager/main_pager.dart';
export 'index.dart';