Merge pull request #1381 from krille-chan/krille/remove-duplicated-navigator-workaround

refactor: Remove duplicated navigator workaround
This commit is contained in:
Krille-chan 2024-10-03 19:47:20 +02:00 committed by GitHub
commit cdece9b7ea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 19 additions and 15 deletions

View file

@ -957,7 +957,7 @@ class ChatListController extends State<ChatList>
isTorBrowser = isTor; isTorBrowser = isTor;
} }
Future<void> dehydrate() => Matrix.of(context).dehydrateAction(); Future<void> dehydrate() => Matrix.of(context).dehydrateAction(context);
} }
enum EditBundleAction { addToBundle, removeFromBundle } enum EditBundleAction { addToBundle, removeFromBundle }

View file

@ -118,7 +118,7 @@ class SettingsSecurityController extends State<SettingsSecurity> {
).show(context); ).show(context);
} }
Future<void> dehydrateAction() => Matrix.of(context).dehydrateAction(); Future<void> dehydrateAction() => Matrix.of(context).dehydrateAction(context);
@override @override
Widget build(BuildContext context) => SettingsSecurityView(this); Widget build(BuildContext context) => SettingsSecurityView(this);

View file

@ -54,14 +54,10 @@ class FluffyChatApp extends StatelessWidget {
clients: clients, clients: clients,
// Need a navigator above the Matrix widget for // Need a navigator above the Matrix widget for
// displaying dialogs // displaying dialogs
child: Navigator( child: Matrix(
onGenerateRoute: (_) => MaterialPageRoute( clients: clients,
builder: (_) => Matrix( store: store,
clients: clients, child: testWidget ?? child,
store: store,
child: testWidget ?? child,
),
),
), ),
), ),
), ),

View file

@ -287,13 +287,16 @@ class MatrixState extends State<Matrix> with WidgetsBindingObserver {
if (!hidPopup && if (!hidPopup &&
{KeyVerificationState.done, KeyVerificationState.error} {KeyVerificationState.done, KeyVerificationState.error}
.contains(request.state)) { .contains(request.state)) {
Navigator.of(context).pop('dialog'); FluffyChatApp.router.pop('dialog');
} }
hidPopup = true; hidPopup = true;
}; };
request.onUpdate = null; request.onUpdate = null;
hidPopup = true; 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) { onLoginStateChanged[name] ??= c.onLoginStateChanged.stream.listen((state) {
final loggedInWithMultipleClients = widget.clients.length > 1; final loggedInWithMultipleClients = widget.clients.length > 1;
@ -304,7 +307,10 @@ class MatrixState extends State<Matrix> with WidgetsBindingObserver {
_cancelSubs(c.clientName); _cancelSubs(c.clientName);
widget.clients.remove(c); widget.clients.remove(c);
ClientManager.removeClientNameFromStore(c.clientName, store); ClientManager.removeClientNameFromStore(c.clientName, store);
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(
FluffyChatApp.router.routerDelegate.navigatorKey.currentContext ??
context,
).showSnackBar(
SnackBar( SnackBar(
content: Text(L10n.of(context)!.oneClientLoggedOut), content: Text(L10n.of(context)!.oneClientLoggedOut),
), ),
@ -362,7 +368,9 @@ class MatrixState extends State<Matrix> with WidgetsBindingObserver {
onFcmError: (errorMsg, {Uri? link}) async { onFcmError: (errorMsg, {Uri? link}) async {
final result = await showOkCancelAlertDialog( final result = await showOkCancelAlertDialog(
barrierDismissible: true, barrierDismissible: true,
context: context, context: FluffyChatApp
.router.routerDelegate.navigatorKey.currentContext ??
context,
title: L10n.of(context)!.pushNotificationsNotAvailable, title: L10n.of(context)!.pushNotificationsNotAvailable,
message: errorMsg, message: errorMsg,
fullyCapitalizedForMaterial: false, fullyCapitalizedForMaterial: false,
@ -483,7 +491,7 @@ class MatrixState extends State<Matrix> with WidgetsBindingObserver {
); );
} }
Future<void> dehydrateAction() async { Future<void> dehydrateAction(BuildContext context) async {
final response = await showOkCancelAlertDialog( final response = await showOkCancelAlertDialog(
context: context, context: context,
isDestructiveAction: true, isDestructiveAction: true,