From eafd0b3353fc7645d0686d348c91c840141b4e2e Mon Sep 17 00:00:00 2001 From: rensawamo <106803080+rensawamo@users.noreply.github.com> Date: Mon, 28 Oct 2024 10:09:11 +0900 Subject: [PATCH] fix: crash on delete button press caused by GoRouter (#6629) * fix: crash on delete button press caused by GoRouter * fix: gorouter pop --- .../base/view_page/more_bottom_sheet.dart | 125 +++++++++--------- .../workspace/application/view/view_bloc.dart | 2 + 2 files changed, 67 insertions(+), 60 deletions(-) diff --git a/frontend/appflowy_flutter/lib/mobile/presentation/base/view_page/more_bottom_sheet.dart b/frontend/appflowy_flutter/lib/mobile/presentation/base/view_page/more_bottom_sheet.dart index 5b40461a3a..219cc7a5ae 100644 --- a/frontend/appflowy_flutter/lib/mobile/presentation/base/view_page/more_bottom_sheet.dart +++ b/frontend/appflowy_flutter/lib/mobile/presentation/base/view_page/more_bottom_sheet.dart @@ -9,7 +9,6 @@ import 'package:appflowy/plugins/shared/share/constants.dart'; import 'package:appflowy/plugins/shared/share/publish_name_generator.dart'; import 'package:appflowy/plugins/shared/share/share_bloc.dart'; import 'package:appflowy/startup/startup.dart'; -import 'package:appflowy/util/navigator_context_exntesion.dart'; import 'package:appflowy/workspace/application/favorite/favorite_bloc.dart'; import 'package:appflowy/workspace/application/view/prelude.dart'; import 'package:appflowy/workspace/presentation/widgets/dialogs.dart'; @@ -24,69 +23,75 @@ class MobileViewPageMoreBottomSheet extends StatelessWidget { const MobileViewPageMoreBottomSheet({super.key, required this.view}); final ViewPB view; - @override Widget build(BuildContext context) { - return ViewPageBottomSheet( - view: view, - onAction: (action) async { - switch (action) { - case MobileViewBottomSheetBodyAction.duplicate: - context.read().add(const ViewEvent.duplicate()); - context.pop(); - break; - case MobileViewBottomSheetBodyAction.delete: - context.read().add(const ViewEvent.delete()); - context.popToHome(); - break; - case MobileViewBottomSheetBodyAction.addToFavorites: - case MobileViewBottomSheetBodyAction.removeFromFavorites: - context.read().add(FavoriteEvent.toggle(view)); - context.pop(); - break; - case MobileViewBottomSheetBodyAction.undo: - EditorNotification.undo().post(); - context.pop(); - break; - case MobileViewBottomSheetBodyAction.redo: - EditorNotification.redo().post(); - context.pop(); - break; - case MobileViewBottomSheetBodyAction.helpCenter: - // unimplemented - context.pop(); - break; - case MobileViewBottomSheetBodyAction.publish: - await _publish(context); - if (context.mounted) { - context.pop(); - } - break; - case MobileViewBottomSheetBodyAction.unpublish: - _unpublish(context); - context.pop(); - break; - case MobileViewBottomSheetBodyAction.copyPublishLink: - _copyPublishLink(context); - context.pop(); - break; - case MobileViewBottomSheetBodyAction.visitSite: - _visitPublishedSite(context); - context.pop(); - break; - case MobileViewBottomSheetBodyAction.copyShareLink: - _copyShareLink(context); - context.pop(); - break; - case MobileViewBottomSheetBodyAction.rename: - // no need to implement, rename is handled by the onRename callback. - throw UnimplementedError(); + return BlocListener( + listener: (context, state) { + if (state.successOrFailure.isSuccess && state.isDeleted) { + context.go('/home'); } }, - onRename: (name) { - _onRename(context, name); - context.pop(); - }, + child: ViewPageBottomSheet( + view: view, + onAction: (action) async { + switch (action) { + case MobileViewBottomSheetBodyAction.duplicate: + context.read().add(const ViewEvent.duplicate()); + context.pop(); + break; + case MobileViewBottomSheetBodyAction.delete: + context.read().add(const ViewEvent.delete()); + context.pop(); + break; + case MobileViewBottomSheetBodyAction.addToFavorites: + case MobileViewBottomSheetBodyAction.removeFromFavorites: + context.read().add(FavoriteEvent.toggle(view)); + context.pop(); + break; + case MobileViewBottomSheetBodyAction.undo: + EditorNotification.undo().post(); + context.pop(); + break; + case MobileViewBottomSheetBodyAction.redo: + EditorNotification.redo().post(); + context.pop(); + break; + case MobileViewBottomSheetBodyAction.helpCenter: + // unimplemented + context.pop(); + break; + case MobileViewBottomSheetBodyAction.publish: + await _publish(context); + if (context.mounted) { + context.pop(); + } + break; + case MobileViewBottomSheetBodyAction.unpublish: + _unpublish(context); + context.pop(); + break; + case MobileViewBottomSheetBodyAction.copyPublishLink: + _copyPublishLink(context); + context.pop(); + break; + case MobileViewBottomSheetBodyAction.visitSite: + _visitPublishedSite(context); + context.pop(); + break; + case MobileViewBottomSheetBodyAction.copyShareLink: + _copyShareLink(context); + context.pop(); + break; + case MobileViewBottomSheetBodyAction.rename: + // no need to implement, rename is handled by the onRename callback. + throw UnimplementedError(); + } + }, + onRename: (name) { + _onRename(context, name); + context.pop(); + }, + ), ); } diff --git a/frontend/appflowy_flutter/lib/workspace/application/view/view_bloc.dart b/frontend/appflowy_flutter/lib/workspace/application/view/view_bloc.dart index e0edbff316..88b33a2d13 100644 --- a/frontend/appflowy_flutter/lib/workspace/application/view/view_bloc.dart +++ b/frontend/appflowy_flutter/lib/workspace/application/view/view_bloc.dart @@ -154,6 +154,7 @@ class ViewBloc extends Bloc { (l) { return state.copyWith( successOrFailure: FlowyResult.success(null), + isDeleted: true, ); }, (error) => state.copyWith( @@ -478,6 +479,7 @@ class ViewState with _$ViewState { required bool isEditing, required bool isExpanded, required FlowyResult successOrFailure, + @Default(false) bool isDeleted, @Default(true) bool isLoading, @Default(null) ViewPB? lastCreatedView, }) = _ViewState;