TF-239 Delete single email permanently

This commit is contained in:
dab246
2022-04-05 11:45:50 +07:00
committed by Dat H. Pham
parent 6445e3076f
commit a89c5db744
15 changed files with 171 additions and 20 deletions
@@ -5,6 +5,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
@@ -36,6 +37,7 @@ import 'package:tmail_ui_user/features/email/presentation/widgets/email_address_
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/mailbox_dashboard_controller.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_action.dart';
import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_type.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/app_routes.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
@@ -442,6 +444,9 @@ class EmailController extends BaseController {
case EmailActionType.moveToTrash:
moveToTrashAction(context, presentationEmail);
break;
case EmailActionType.deletePermanently:
deleteEmailPermanently(context, presentationEmail);
break;
default:
break;
}
@@ -513,6 +518,37 @@ class EmailController extends BaseController {
}
}
void deleteEmailPermanently(BuildContext context, PresentationEmail email) {
if (responsiveUtils.isMobile(context)) {
(ConfirmationDialogActionSheetBuilder(context)
..messageText(DeleteActionType.single.getContentDialog(context))
..onCancelAction(AppLocalizations.of(context).cancel, () => popBack())
..onConfirmAction(DeleteActionType.single.getConfirmActionName(context), () => _deleteEmailPermanentlyAction(context, email)))
.show();
} else {
showDialog(
context: context,
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(imagePaths)
..key(Key('confirm_dialog_delete_email_permanently'))
..title(DeleteActionType.single.getTitleDialog(context))
..content(DeleteActionType.single.getContentDialog(context))
..addIcon(SvgPicture.asset(imagePaths.icRemoveDialog, fit: BoxFit.fill))
..colorConfirmButton(AppColor.colorConfirmActionDialog)
..styleTextConfirmButton(TextStyle(fontSize: 17, fontWeight: FontWeight.w500, color: AppColor.colorActionDeleteConfirmDialog))
..onCloseButtonAction(() => popBack())
..onConfirmButtonAction(DeleteActionType.single.getConfirmActionName(context), () => _deleteEmailPermanentlyAction(context, email))
..onCancelButtonAction(AppLocalizations.of(context).cancel, () => popBack()))
.build()));
}
}
void _deleteEmailPermanentlyAction(BuildContext context, PresentationEmail email) {
popBack();
backToThreadView(context);
mailboxDashBoardController.deleteEmailPermanently(email);
}
void closeMoreMenu() {
popBack();
}
@@ -113,15 +113,18 @@ class AppBarMailWidgetBuilder {
_onEmailActionClick?.call(_presentationEmail!, _presentationEmail!.isFlaggedEmail() ? EmailActionType.markAsUnStar : EmailActionType.markAsStar);
}
}),
if (_currentMailbox?.role != PresentationMailbox.roleTrash)
buildIconWeb(
icon: SvgPicture.asset(_imagePaths.icDeleteEmail, fit: BoxFit.fill),
tooltip: AppLocalizations.of(_context).move_to_trash,
onTap: () {
if (_presentationEmail != null) {
_onEmailActionClick?.call(_presentationEmail!, EmailActionType.moveToTrash);
}
}),
buildIconWeb(
icon: SvgPicture.asset(_imagePaths.icDeleteEmail, fit: BoxFit.fill),
tooltip: _currentMailbox?.role != PresentationMailbox.roleTrash
? AppLocalizations.of(_context).move_to_trash
: AppLocalizations.of(_context).delete_permanently,
onTap: () {
if (_currentMailbox?.role != PresentationMailbox.roleTrash) {
_onEmailActionClick?.call(_presentationEmail!, EmailActionType.moveToTrash);
} else {
_onEmailActionClick?.call(_presentationEmail!, EmailActionType.deletePermanently);
}
}),
Padding(
padding: EdgeInsets.only(left: 10, right: 16),
child: buildIconWebHasPosition(