TF-2101 Handle open recover_deleted_messages

(cherry picked from commit a58beb7a293471f39b080805c652c9d6f73dfe20)
This commit is contained in:
hieubt
2023-12-20 23:50:02 +07:00
committed by Dat H. Pham
parent 61e3067c57
commit bf0030e7d7
7 changed files with 43 additions and 12 deletions
@@ -1038,6 +1038,9 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
case MailboxActions.newSubfolder: case MailboxActions.newSubfolder:
goToCreateNewMailboxView(context, parentMailbox: mailbox); goToCreateNewMailboxView(context, parentMailbox: mailbox);
break; break;
case MailboxActions.recoverDeletedMessages:
mailboxDashBoardController.gotoEmailRecovery();
break;
default: default:
break; break;
} }
@@ -2426,6 +2426,18 @@ class MailboxDashBoardController extends ReloadableController {
} }
} }
void gotoEmailRecovery() async {
closeMailboxMenuDrawer();
if (PlatformInfo.isWeb) {
await DialogRouter.pushGeneralDialog(
routeName: AppRoutes.emailRecovery,
arguments: {},
);
} else {
await push(AppRoutes.emailRecovery);
}
}
@override @override
void onClose() { void onClose() {
_emailReceiveManager.closeEmailReceiveManagerStream(); _emailReceiveManager.closeEmailReceiveManagerStream();
@@ -441,17 +441,15 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
Obx(() { Obx(() {
final mailboxSelected = controller.selectedMailbox.value; final mailboxSelected = controller.selectedMailbox.value;
if (mailboxSelected != null && mailboxSelected.role == PresentationMailbox.roleTrash) { if (mailboxSelected != null && mailboxSelected.role == PresentationMailbox.roleTrash) {
return Row( return Padding(
children: [ padding: const EdgeInsetsDirectional.only(start: 16),
const SizedBox(width: 16), child: TMailButtonWidget.fromIcon(
TMailButtonWidget.fromIcon( key: const Key('recover_deleted_messages_button'),
key: const Key('recover_deleted_messages_button'), icon: controller.imagePaths.icRecoverDeletedMessages,
icon: controller.imagePaths.icRecoverDeletedMessages, borderRadius: 10,
borderRadius: 10, iconSize: 16,
iconSize: 16, onTapActionCallback: () => controller.gotoEmailRecovery(),
onTapActionCallback: () => controller.gotoEmailRecovery(), ),
)
],
); );
} else { } else {
return const SizedBox.shrink(); return const SizedBox.shrink();
@@ -3768,7 +3768,7 @@ class AppLocalizations {
String get bannerProgressingRecoveryMessage { String get bannerProgressingRecoveryMessage {
return Intl.message( return Intl.message(
'The recovery is in progress. You can continue using TeamMail', 'The recovery is in progress. You can continue using TwakeMail',
name: 'bannerProgressingRecoveryMessage', name: 'bannerProgressingRecoveryMessage',
); );
} }
+10
View File
@@ -8,6 +8,7 @@ import 'package:tmail_ui_user/features/composer/presentation/composer_view.dart'
import 'package:tmail_ui_user/features/contact/presentation/contact_bindings.dart'; import 'package:tmail_ui_user/features/contact/presentation/contact_bindings.dart';
import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_bindings.dart'; import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_bindings.dart';
import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_view.dart' deferred as destination_picker; import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_view.dart' deferred as destination_picker;
import 'package:tmail_ui_user/features/email_recovery/presentation/email_recovery_bindings.dart';
import 'package:tmail_ui_user/features/home/presentation/home_bindings.dart'; import 'package:tmail_ui_user/features/home/presentation/home_bindings.dart';
import 'package:tmail_ui_user/features/home/presentation/home_view.dart'; import 'package:tmail_ui_user/features/home/presentation/home_view.dart';
import 'package:tmail_ui_user/features/contact/presentation/contact_view.dart' deferred as contact_view; import 'package:tmail_ui_user/features/contact/presentation/contact_view.dart' deferred as contact_view;
@@ -32,6 +33,7 @@ import 'package:tmail_ui_user/main/pages/deferred_widget.dart';
import 'package:tmail_ui_user/main/routes/app_routes.dart'; import 'package:tmail_ui_user/main/routes/app_routes.dart';
import 'package:tmail_ui_user/features/search/mailbox/presentation/search_mailbox_view.dart' deferred as search_mailbox_view; import 'package:tmail_ui_user/features/search/mailbox/presentation/search_mailbox_view.dart' deferred as search_mailbox_view;
import 'package:tmail_ui_user/features/mailto/presentation/mailto_url_view.dart' deferred as mailto_url_view; import 'package:tmail_ui_user/features/mailto/presentation/mailto_url_view.dart' deferred as mailto_url_view;
import 'package:tmail_ui_user/features/email_recovery/presentation/email_recovery_view.dart' deferred as email_recovery;
class AppPages { class AppPages {
static final pages = [ static final pages = [
@@ -125,6 +127,14 @@ class AppPages {
() => identity_creator.IdentityCreatorView() () => identity_creator.IdentityCreatorView()
), ),
binding: IdentityCreatorBindings()), binding: IdentityCreatorBindings()),
GetPage(
name: AppRoutes.emailRecovery,
opaque: false,
page: () => DeferredWidget(
email_recovery.loadLibrary,
() => email_recovery.EmailRecoveryView()
),
binding: EmailRecoveryBindings()),
] ]
]; ];
+1
View File
@@ -14,4 +14,5 @@ abstract class AppRoutes {
static const unknownRoutePage = '/notfound'; static const unknownRoutePage = '/notfound';
static const searchMailbox = '/search_mailbox'; static const searchMailbox = '/search_mailbox';
static const mailtoURL = '/mailto'; static const mailtoURL = '/mailto';
static const emailRecovery = '/email_recovery';
} }
+7
View File
@@ -6,6 +6,8 @@ import 'package:tmail_ui_user/features/contact/presentation/contact_bindings.dar
import 'package:tmail_ui_user/features/contact/presentation/contact_view.dart'; import 'package:tmail_ui_user/features/contact/presentation/contact_view.dart';
import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_bindings.dart'; import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_bindings.dart';
import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_view.dart'; import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_view.dart';
import 'package:tmail_ui_user/features/email_recovery/presentation/email_recovery_bindings.dart';
import 'package:tmail_ui_user/features/email_recovery/presentation/email_recovery_view.dart';
import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_bindings.dart'; import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_bindings.dart';
import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_view.dart'; import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_view.dart';
import 'package:tmail_ui_user/features/mailbox_creator/presentation/mailbox_creator_bindings.dart'; import 'package:tmail_ui_user/features/mailbox_creator/presentation/mailbox_creator_bindings.dart';
@@ -46,6 +48,9 @@ class DialogRouter {
case AppRoutes.contact: case AppRoutes.contact:
ContactBindings().dependencies(); ContactBindings().dependencies();
break; break;
case AppRoutes.emailRecovery:
EmailRecoveryBindings().dependencies();
break;
} }
} }
@@ -62,6 +67,8 @@ class DialogRouter {
return DestinationPickerView(); return DestinationPickerView();
case AppRoutes.contact: case AppRoutes.contact:
return const ContactView(); return const ContactView();
case AppRoutes.emailRecovery:
return EmailRecoveryView();
default: default:
return const SizedBox.shrink(); return const SizedBox.shrink();
} }