mirror of
https://gitlab.com/veilid/veilidchat.git
synced 2025-05-12 11:12:19 -04:00
checkpoint
This commit is contained in:
parent
56d65442f4
commit
751022e743
26 changed files with 482 additions and 303 deletions
|
@ -8,6 +8,7 @@ import 'package:go_router/go_router.dart';
|
|||
import 'package:veilid_support/veilid_support.dart';
|
||||
|
||||
import '../../../account_manager/account_manager.dart';
|
||||
import '../../../proto/proto.dart' as proto;
|
||||
import '../../../theme/theme.dart';
|
||||
import '../../../tools/tools.dart';
|
||||
import '../../../veilid_processor/veilid_processor.dart';
|
||||
|
@ -37,8 +38,12 @@ class _DrawerMenuState extends State<DrawerMenu> {
|
|||
});
|
||||
}
|
||||
|
||||
void _doEditClick(TypedKey superIdentityRecordKey) {
|
||||
//
|
||||
void _doEditClick(
|
||||
TypedKey superIdentityRecordKey, proto.Profile existingProfile) {
|
||||
singleFuture(this, () async {
|
||||
await GoRouterHelper(context).push('/edit_account',
|
||||
extra: [superIdentityRecordKey, existingProfile]);
|
||||
});
|
||||
}
|
||||
|
||||
Widget _wrapInBox({required Widget child, required Color color}) =>
|
||||
|
@ -127,7 +132,7 @@ class _DrawerMenuState extends State<DrawerMenu> {
|
|||
_doSwitchClick(superIdentityRecordKey);
|
||||
},
|
||||
footerCallback: () {
|
||||
_doEditClick(superIdentityRecordKey);
|
||||
_doEditClick(superIdentityRecordKey, value.profile);
|
||||
}),
|
||||
loading: () => _wrapInBox(
|
||||
child: buildProgressIndicator(),
|
||||
|
|
|
@ -102,6 +102,9 @@ class HomeAccountReadyShellState extends State<HomeAccountReadyShell> {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
// XXX: Should probably eliminate this in favor
|
||||
// of streaming changes into other cubits. Too much rebuilding!
|
||||
// should not need to 'watch' all these cubits
|
||||
final account = context.watch<AccountRecordCubit>().state.asData?.value;
|
||||
if (account == null) {
|
||||
return waitingPage();
|
||||
|
@ -121,28 +124,29 @@ class HomeAccountReadyShellState extends State<HomeAccountReadyShell> {
|
|||
create: (context) => WaitingInvitationsBlocMapCubit(
|
||||
unlockedAccountInfo: widget.unlockedAccountInfo,
|
||||
account: account)
|
||||
..follow(context.watch<ContactInvitationListCubit>())),
|
||||
..follow(context.read<ContactInvitationListCubit>())),
|
||||
// Chat Cubits
|
||||
BlocProvider(
|
||||
create: (context) => ActiveChatCubit(null,
|
||||
routerCubit: context.watch<RouterCubit>())),
|
||||
routerCubit: context.read<RouterCubit>())),
|
||||
BlocProvider(
|
||||
create: (context) => ChatListCubit(
|
||||
unlockedAccountInfo: widget.unlockedAccountInfo,
|
||||
activeChatCubit: context.watch<ActiveChatCubit>(),
|
||||
activeChatCubit: context.read<ActiveChatCubit>(),
|
||||
account: account)),
|
||||
// Conversation Cubits
|
||||
BlocProvider(
|
||||
create: (context) => ActiveConversationsBlocMapCubit(
|
||||
unlockedAccountInfo: widget.unlockedAccountInfo,
|
||||
contactListCubit: context.watch<ContactListCubit>())
|
||||
..follow(context.watch<ChatListCubit>())),
|
||||
contactListCubit: context.read<ContactListCubit>(),
|
||||
accountRecordCubit: context.read<AccountRecordCubit>())
|
||||
..follow(context.read<ChatListCubit>())),
|
||||
BlocProvider(
|
||||
create: (context) => ActiveSingleContactChatBlocMapCubit(
|
||||
unlockedAccountInfo: widget.unlockedAccountInfo,
|
||||
contactListCubit: context.watch<ContactListCubit>(),
|
||||
chatListCubit: context.watch<ChatListCubit>())
|
||||
..follow(context.watch<ActiveConversationsBlocMapCubit>())),
|
||||
contactListCubit: context.read<ContactListCubit>(),
|
||||
chatListCubit: context.read<ChatListCubit>())
|
||||
..follow(context.read<ActiveConversationsBlocMapCubit>())),
|
||||
],
|
||||
child: MultiBlocListener(listeners: [
|
||||
BlocListener<WaitingInvitationsBlocMapCubit,
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import 'dart:math';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_zoom_drawer/flutter_zoom_drawer.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
|
@ -13,12 +14,12 @@ import 'home_account_missing.dart';
|
|||
import 'home_no_active.dart';
|
||||
|
||||
class HomeShell extends StatefulWidget {
|
||||
const HomeShell({required this.accountReadyBuilder, super.key});
|
||||
const HomeShell({required this.child, super.key});
|
||||
|
||||
@override
|
||||
HomeShellState createState() => HomeShellState();
|
||||
|
||||
final Builder accountReadyBuilder;
|
||||
final Widget child;
|
||||
}
|
||||
|
||||
class HomeShellState extends State<HomeShell> {
|
||||
|
@ -58,13 +59,17 @@ class HomeShellState extends State<HomeShell> {
|
|||
case AccountInfoStatus.accountLocked:
|
||||
return const HomeAccountLocked();
|
||||
case AccountInfoStatus.accountReady:
|
||||
return MultiProvider(providers: [
|
||||
Provider<UnlockedAccountInfo>.value(
|
||||
value: accountInfo.unlockedAccountInfo!,
|
||||
),
|
||||
Provider<AccountRecordCubit>.value(value: activeCubit),
|
||||
Provider<ZoomDrawerController>.value(value: _zoomDrawerController),
|
||||
], child: widget.accountReadyBuilder);
|
||||
return MultiBlocProvider(
|
||||
providers: [
|
||||
BlocProvider<AccountRecordCubit>.value(value: activeCubit),
|
||||
],
|
||||
child: MultiProvider(providers: [
|
||||
Provider<UnlockedAccountInfo>.value(
|
||||
value: accountInfo.unlockedAccountInfo!,
|
||||
),
|
||||
Provider<ZoomDrawerController>.value(
|
||||
value: _zoomDrawerController),
|
||||
], child: widget.child));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue