From ae52fcf9ecd5695bca1d3a96e6db156c6ebdc4e4 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Thu, 3 Oct 2024 19:29:56 +0200 Subject: [PATCH] refactor: Remove duplicated navigator workaround --- lib/pages/chat_list/chat_list.dart | 2 +- .../settings_security/settings_security.dart | 2 +- lib/widgets/fluffy_chat_app.dart | 12 ++++-------- lib/widgets/matrix.dart | 18 +++++++++++++----- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index 5c631eb0e..581a62b3a 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -957,7 +957,7 @@ class ChatListController extends State isTorBrowser = isTor; } - Future dehydrate() => Matrix.of(context).dehydrateAction(); + Future dehydrate() => Matrix.of(context).dehydrateAction(context); } enum EditBundleAction { addToBundle, removeFromBundle } diff --git a/lib/pages/settings_security/settings_security.dart b/lib/pages/settings_security/settings_security.dart index 69069d693..a4c1c4a6d 100644 --- a/lib/pages/settings_security/settings_security.dart +++ b/lib/pages/settings_security/settings_security.dart @@ -118,7 +118,7 @@ class SettingsSecurityController extends State { ).show(context); } - Future dehydrateAction() => Matrix.of(context).dehydrateAction(); + Future dehydrateAction() => Matrix.of(context).dehydrateAction(context); @override Widget build(BuildContext context) => SettingsSecurityView(this); diff --git a/lib/widgets/fluffy_chat_app.dart b/lib/widgets/fluffy_chat_app.dart index d9d2f042a..dfab1a6c3 100644 --- a/lib/widgets/fluffy_chat_app.dart +++ b/lib/widgets/fluffy_chat_app.dart @@ -54,14 +54,10 @@ class FluffyChatApp extends StatelessWidget { clients: clients, // Need a navigator above the Matrix widget for // displaying dialogs - child: Navigator( - onGenerateRoute: (_) => MaterialPageRoute( - builder: (_) => Matrix( - clients: clients, - store: store, - child: testWidget ?? child, - ), - ), + child: Matrix( + clients: clients, + store: store, + child: testWidget ?? child, ), ), ), diff --git a/lib/widgets/matrix.dart b/lib/widgets/matrix.dart index 4de23a2f5..aa3cc2c4c 100644 --- a/lib/widgets/matrix.dart +++ b/lib/widgets/matrix.dart @@ -287,13 +287,16 @@ class MatrixState extends State with WidgetsBindingObserver { if (!hidPopup && {KeyVerificationState.done, KeyVerificationState.error} .contains(request.state)) { - Navigator.of(context).pop('dialog'); + FluffyChatApp.router.pop('dialog'); } hidPopup = true; }; request.onUpdate = null; hidPopup = true; - await KeyVerificationDialog(request: request).show(context); + await KeyVerificationDialog(request: request).show( + FluffyChatApp.router.routerDelegate.navigatorKey.currentContext ?? + context, + ); }); onLoginStateChanged[name] ??= c.onLoginStateChanged.stream.listen((state) { final loggedInWithMultipleClients = widget.clients.length > 1; @@ -304,7 +307,10 @@ class MatrixState extends State with WidgetsBindingObserver { _cancelSubs(c.clientName); widget.clients.remove(c); ClientManager.removeClientNameFromStore(c.clientName, store); - ScaffoldMessenger.of(context).showSnackBar( + ScaffoldMessenger.of( + FluffyChatApp.router.routerDelegate.navigatorKey.currentContext ?? + context, + ).showSnackBar( SnackBar( content: Text(L10n.of(context)!.oneClientLoggedOut), ), @@ -362,7 +368,9 @@ class MatrixState extends State with WidgetsBindingObserver { onFcmError: (errorMsg, {Uri? link}) async { final result = await showOkCancelAlertDialog( barrierDismissible: true, - context: context, + context: FluffyChatApp + .router.routerDelegate.navigatorKey.currentContext ?? + context, title: L10n.of(context)!.pushNotificationsNotAvailable, message: errorMsg, fullyCapitalizedForMaterial: false, @@ -483,7 +491,7 @@ class MatrixState extends State with WidgetsBindingObserver { ); } - Future dehydrateAction() async { + Future dehydrateAction(BuildContext context) async { final response = await showOkCancelAlertDialog( context: context, isDestructiveAction: true,