TF-421 Support delete permanently selection email in mailbox Draft

This commit is contained in:
dab246
2022-09-08 15:51:53 +07:00
committed by Dat H. Pham
parent 811b29e353
commit e1c8439fe4
9 changed files with 70 additions and 24 deletions
@@ -21,12 +21,14 @@ extension DeleteActionTypeExtension on DeleteActionType {
}
}
String getContentDialog(BuildContext context, {int? count}) {
String getContentDialog(BuildContext context, {int? count, String? mailboxName}) {
switch(this) {
case DeleteActionType.all:
return AppLocalizations.of(context).empty_trash_dialog_message;
case DeleteActionType.multiple:
return AppLocalizations.of(context).delete_multiple_messages_dialog(count ?? 0);
return AppLocalizations.of(context).delete_multiple_messages_dialog(
count ?? 0,
mailboxName ?? '');
case DeleteActionType.single:
return AppLocalizations.of(context).delete_single_message_dialog;
}
@@ -928,7 +928,11 @@ class ThreadController extends BaseController {
moveSelectedMultipleEmailToTrash(selectionEmail);
break;
case EmailActionType.deletePermanently:
deleteSelectionEmailsPermanently(context, DeleteActionType.multiple, selectedEmails: selectionEmail);
deleteSelectionEmailsPermanently(
context,
DeleteActionType.multiple,
selectedEmails: selectionEmail,
presentationMailbox: currentMailbox);
break;
case EmailActionType.moveToSpam:
moveSelectedMultipleEmailToSpam(selectionEmail);
@@ -1144,10 +1148,20 @@ class ThreadController extends BaseController {
bool get isMailboxTrash => mailboxDashBoardController.selectedMailbox.value?.role == PresentationMailbox.roleTrash;
void deleteSelectionEmailsPermanently(BuildContext context, DeleteActionType actionType, {List<PresentationEmail>? selectedEmails}) {
void deleteSelectionEmailsPermanently(
BuildContext context,
DeleteActionType actionType,
{
List<PresentationEmail>? selectedEmails,
PresentationMailbox? presentationMailbox
}
) {
if (_responsiveUtils.isMobile(context)) {
(ConfirmationDialogActionSheetBuilder(context)
..messageText(actionType.getContentDialog(context, count: selectedEmails?.length))
..messageText(actionType.getContentDialog(
context,
count: selectedEmails?.length,
mailboxName: presentationMailbox?.name?.name))
..onCancelAction(AppLocalizations.of(context).cancel, () => popBack())
..onConfirmAction(actionType.getConfirmActionName(context), () => _deleteSelectionEmailsPermanentlyAction(actionType)))
.show();
@@ -1158,7 +1172,10 @@ class ThreadController extends BaseController {
builder: (BuildContext context) => PointerInterceptor(child: (ConfirmDialogBuilder(_imagePaths)
..key(const Key('confirm_dialog_delete_emails_permanently'))
..title(actionType.getTitleDialog(context))
..content(actionType.getContentDialog(context, count: selectedEmails?.length))
..content(actionType.getContentDialog(
context,
count: selectedEmails?.length,
mailboxName: presentationMailbox?.name?.name))
..addIcon(SvgPicture.asset(_imagePaths.icRemoveDialog, fit: BoxFit.fill))
..colorConfirmButton(AppColor.colorConfirmActionDialog)
..styleTextConfirmButton(const TextStyle(fontSize: 17, fontWeight: FontWeight.w500, color: AppColor.colorActionDeleteConfirmDialog))
@@ -190,21 +190,25 @@ class AppBarThreadWidgetBuilder {
iconPadding: const EdgeInsets.all(5),
splashRadius: 15,
icon: SvgPicture.asset(
_imagePaths.icDeleteComposer,
width: 18,
height: 18,
color: AppColor.textFieldErrorBorderColor,
canDeletePermanently ? _imagePaths.icDeleteComposer : _imagePaths.icDelete,
color: canDeletePermanently ? AppColor.colorDeletePermanentlyButton : AppColor.primaryColor,
width: 20,
height: 20,
fit: BoxFit.fill),
tooltip: _currentMailbox?.role != PresentationMailbox.roleTrash
? AppLocalizations.of(_context).move_to_trash
: AppLocalizations.of(_context).delete_permanently,
onTap: () => _currentMailbox?.isTrash == true
tooltip: canDeletePermanently
? AppLocalizations.of(_context).delete_permanently
: AppLocalizations.of(_context).move_to_trash,
onTap: () => canDeletePermanently
? _onEmailSelectionAction?.call(EmailActionType.deletePermanently, _listSelectionEmail)
: _onEmailSelectionAction?.call(EmailActionType.moveToTrash, _listSelectionEmail)),
const SizedBox(width: 10),
]);
}
bool get canDeletePermanently {
return _currentMailbox?.isTrash == true || _currentMailbox?.isDrafts == true;
}
Widget _buildBodyAppBarForMobile() {
return Row(children: [
Expanded(child: Stack(