From 8f37ab64df7347974fe7f75162f95b6839e84a42 Mon Sep 17 00:00:00 2001 From: HuyNguyen Date: Sat, 26 Aug 2023 13:40:29 +0700 Subject: [PATCH] TW-492: Implement when system back after forward msg --- lib/config/go_routes/go_router.dart | 10 ++++++++-- lib/pages/chat/chat.dart | 8 +++++++- lib/pages/forward/forward.dart | 2 +- lib/widgets/fluffy_chat_app.dart | 6 ++++-- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/lib/config/go_routes/go_router.dart b/lib/config/go_routes/go_router.dart index 532d88dbe9..53c495790d 100644 --- a/lib/config/go_routes/go_router.dart +++ b/lib/config/go_routes/go_router.dart @@ -9,6 +9,7 @@ import 'package:fluffychat/pages/chat_draft/draft_chat.dart'; import 'package:fluffychat/pages/chat_encryption_settings/chat_encryption_settings.dart'; import 'package:fluffychat/pages/homeserver_picker/homeserver_picker.dart'; import 'package:fluffychat/pages/story/story_page.dart'; +import 'package:fluffychat/presentation/model/forward/forward_argument.dart'; import 'package:fluffychat/utils/responsive/responsive_utils.dart'; import 'package:fluffychat/widgets/layouts/adaptive_layout/adaptive_scaffold.dart'; import 'package:fluffychat/widgets/layouts/adaptive_layout/adaptive_scaffold_route.dart'; @@ -217,11 +218,16 @@ abstract class AppRoutes { ), GoRoute( path: 'forward', + redirect: (context, state) { + if (state.extra is ForwardArgument) return '/rooms/forward'; + + return '${state.fullPath?.replaceAll('forward', '')}'; + }, pageBuilder: (context, state) { - final extra = state.extra as String?; + final extra = state.extra as ForwardArgument; return defaultPageBuilder( context, - Forward(sendFromRoomId: extra ?? ''), + Forward(sendFromRoomId: extra.fromRoomId), ); }, ), diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 8c2c6e6c42..71937fa8a7 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -20,6 +20,7 @@ import 'package:fluffychat/pages/chat/recording_dialog.dart'; import 'package:fluffychat/presentation/mixins/common_media_picker_mixin.dart'; import 'package:fluffychat/presentation/mixins/media_picker_mixin.dart'; import 'package:fluffychat/presentation/mixins/send_files_mixin.dart'; +import 'package:fluffychat/presentation/model/forward/forward_argument.dart'; import 'package:fluffychat/utils/adaptive_bottom_sheet.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/ios_badge_client_extension.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; @@ -824,7 +825,12 @@ class ChatController extends State ); } setState(() => selectedEvents.clear()); - context.go('/rooms/forward', extra: roomId); + context.go( + '/rooms/forward', + extra: ForwardArgument( + fromRoomId: roomId ?? '', + ), + ); } void sendAgainAction() { diff --git a/lib/pages/forward/forward.dart b/lib/pages/forward/forward.dart index 25e6ccf9cb..d85c79b605 100644 --- a/lib/pages/forward/forward.dart +++ b/lib/pages/forward/forward.dart @@ -34,7 +34,7 @@ class ForwardController extends State { Timeline? timeline; - String? get roomId => GoRouterState.of(context).pathParameters['roomid']; + String? get roomId => widget.sendFromRoomId; final AutoScrollController forwardListController = AutoScrollController(); diff --git a/lib/widgets/fluffy_chat_app.dart b/lib/widgets/fluffy_chat_app.dart index f0f06a59c8..113854fce9 100644 --- a/lib/widgets/fluffy_chat_app.dart +++ b/lib/widgets/fluffy_chat_app.dart @@ -30,8 +30,10 @@ class FluffyChatApp extends StatefulWidget { // Router must be outside of build method so that hot reload does not reset // the current path. - static final GoRouter router = - GoRouter(routes: AppRoutes.routes, debugLogDiagnostics: true); + static final GoRouter router = GoRouter( + routes: AppRoutes.routes, + debugLogDiagnostics: true, + ); @override FluffyChatAppState createState() => FluffyChatAppState();