TF-4392 [Team Mailbox] Empty the team mailbox trash
This commit is contained in:
@@ -68,10 +68,7 @@ mixin MailboxActionHandlerMixin {
|
|||||||
..onConfirmAction(AppLocalizations.of(context).delete, () {
|
..onConfirmAction(AppLocalizations.of(context).delete, () {
|
||||||
popBack();
|
popBack();
|
||||||
if (mailbox.countTotalEmails > 0) {
|
if (mailbox.countTotalEmails > 0) {
|
||||||
dashboardController.emptyTrashFolderAction(
|
dashboardController.emptyTrashFolderAction(trashMailbox: mailbox);
|
||||||
trashFolderId: mailbox.id,
|
|
||||||
totalEmails: mailbox.countTotalEmails
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
appToast.showToastWarningMessage(
|
appToast.showToastWarningMessage(
|
||||||
context,
|
context,
|
||||||
@@ -92,10 +89,7 @@ mixin MailboxActionHandlerMixin {
|
|||||||
onConfirmAction: () {
|
onConfirmAction: () {
|
||||||
popBack();
|
popBack();
|
||||||
if (mailbox.countTotalEmails > 0) {
|
if (mailbox.countTotalEmails > 0) {
|
||||||
dashboardController.emptyTrashFolderAction(
|
dashboardController.emptyTrashFolderAction(trashMailbox: mailbox);
|
||||||
trashFolderId: mailbox.id,
|
|
||||||
totalEmails: mailbox.countTotalEmails
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
appToast.showToastWarningMessage(
|
appToast.showToastWarningMessage(
|
||||||
context,
|
context,
|
||||||
|
|||||||
@@ -1600,8 +1600,7 @@ class MailboxController extends BaseMailboxController
|
|||||||
log('MailboxController::emptyMailboxAction:presentationMailbox: ${presentationMailbox.name}');
|
log('MailboxController::emptyMailboxAction:presentationMailbox: ${presentationMailbox.name}');
|
||||||
if (presentationMailbox.isTrash) {
|
if (presentationMailbox.isTrash) {
|
||||||
mailboxDashBoardController.emptyTrashFolderAction(
|
mailboxDashBoardController.emptyTrashFolderAction(
|
||||||
trashFolderId: presentationMailbox.id,
|
trashMailbox: presentationMailbox,
|
||||||
totalEmails: presentationMailbox.countTotalEmails
|
|
||||||
);
|
);
|
||||||
} else if (presentationMailbox.isSpam) {
|
} else if (presentationMailbox.isSpam) {
|
||||||
mailboxDashBoardController.emptySpamFolderAction(
|
mailboxDashBoardController.emptySpamFolderAction(
|
||||||
|
|||||||
@@ -93,7 +93,9 @@ mixin MailboxWidgetMixin {
|
|||||||
if (mailbox.isSubscribedMailbox)
|
if (mailbox.isSubscribedMailbox)
|
||||||
MailboxActions.disableMailbox
|
MailboxActions.disableMailbox
|
||||||
else
|
else
|
||||||
MailboxActions.enableMailbox
|
MailboxActions.enableMailbox,
|
||||||
|
if (mailbox.isTrash && mailbox.myRights?.mayRemoveItems == true)
|
||||||
|
MailboxActions.emptyTrash,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+16
-15
@@ -1841,41 +1841,40 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
|
|
||||||
void emptyTrashFolderAction({
|
void emptyTrashFolderAction({
|
||||||
Function? onCancelSelectionEmail,
|
Function? onCancelSelectionEmail,
|
||||||
MailboxId? trashFolderId,
|
PresentationMailbox? trashMailbox,
|
||||||
int totalEmails = 0,
|
|
||||||
}) {
|
}) {
|
||||||
onCancelSelectionEmail?.call();
|
onCancelSelectionEmail?.call();
|
||||||
|
|
||||||
final trashMailboxId = trashFolderId ?? mapDefaultMailboxIdByRole[PresentationMailbox.roleTrash];
|
final trashFolder = trashMailbox
|
||||||
|
?? (selectedMailbox.value?.isTrash == true ? selectedMailbox.value : null)
|
||||||
|
?? mapMailboxById[mapDefaultMailboxIdByRole[PresentationMailbox.roleTrash]];
|
||||||
final accountId = this.accountId.value;
|
final accountId = this.accountId.value;
|
||||||
|
final session = sessionCurrent;
|
||||||
|
|
||||||
if (accountId == null || sessionCurrent == null) {
|
if (accountId == null || session == null) {
|
||||||
consumeState(Stream.value(Left(EmptyTrashFolderFailure(NotFoundSessionException()))));
|
consumeState(Stream.value(Left(EmptyTrashFolderFailure(NotFoundSessionException()))));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trashMailboxId == null) {
|
if (trashFolder == null) {
|
||||||
consumeState(Stream.value(Left(EmptyTrashFolderFailure(NotFoundMailboxException()))));
|
consumeState(Stream.value(Left(EmptyTrashFolderFailure(NotFoundMailboxException()))));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CapabilityIdentifier.jmapMailboxClear.isSupported(sessionCurrent!, accountId)) {
|
if (CapabilityIdentifier.jmapMailboxClear.isSupported(session, accountId) &&
|
||||||
|
trashFolder.isTrashTeamMailbox != true) {
|
||||||
clearMailbox(
|
clearMailbox(
|
||||||
sessionCurrent!,
|
session,
|
||||||
accountId,
|
accountId,
|
||||||
trashMailboxId,
|
trashFolder.id,
|
||||||
PresentationMailbox.roleTrash,
|
PresentationMailbox.roleTrash,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
final totalEmailsInTrash = totalEmails == 0
|
|
||||||
? mapMailboxById[trashMailboxId]?.countTotalEmails ?? 0
|
|
||||||
: totalEmails;
|
|
||||||
|
|
||||||
consumeState(_emptyTrashFolderInteractor.execute(
|
consumeState(_emptyTrashFolderInteractor.execute(
|
||||||
sessionCurrent!,
|
session,
|
||||||
accountId,
|
accountId,
|
||||||
trashMailboxId,
|
trashFolder.id,
|
||||||
totalEmailsInTrash,
|
trashFolder.countTotalEmails,
|
||||||
progressStateController,
|
progressStateController,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
@@ -2406,6 +2405,7 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
) {
|
) {
|
||||||
return mailbox != null &&
|
return mailbox != null &&
|
||||||
mailbox.isTrash &&
|
mailbox.isTrash &&
|
||||||
|
mailbox.myRights?.mayRemoveItems == true &&
|
||||||
mailbox.countTotalEmails > 0 &&
|
mailbox.countTotalEmails > 0 &&
|
||||||
!searchController.isSearchActive() &&
|
!searchController.isSearchActive() &&
|
||||||
responsiveUtils.isWebDesktop(context);
|
responsiveUtils.isWebDesktop(context);
|
||||||
@@ -2417,6 +2417,7 @@ class MailboxDashBoardController extends ReloadableController
|
|||||||
) {
|
) {
|
||||||
return mailbox != null &&
|
return mailbox != null &&
|
||||||
mailbox.isTrash &&
|
mailbox.isTrash &&
|
||||||
|
mailbox.myRights?.mayRemoveItems == true &&
|
||||||
mailbox.countTotalEmails > 0 &&
|
mailbox.countTotalEmails > 0 &&
|
||||||
!searchController.isSearchActive() &&
|
!searchController.isSearchActive() &&
|
||||||
!responsiveUtils.isWebDesktop(context);
|
!responsiveUtils.isWebDesktop(context);
|
||||||
|
|||||||
@@ -44,12 +44,15 @@ extension PresentationMailboxExtension on PresentationMailbox {
|
|||||||
if (isPersonal) {
|
if (isPersonal) {
|
||||||
return role == PresentationMailbox.roleTrash;
|
return role == PresentationMailbox.roleTrash;
|
||||||
} else {
|
} else {
|
||||||
return isChildOfTeamMailboxes &&
|
return isTrashTeamMailbox;
|
||||||
name?.name.toLowerCase() ==
|
|
||||||
PresentationMailbox.trashRole.toLowerCase();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool get isTrashTeamMailbox {
|
||||||
|
return isChildOfTeamMailboxes &&
|
||||||
|
name?.name.toLowerCase() == PresentationMailbox.trashRole.toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
bool get isDrafts => role == PresentationMailbox.roleDrafts;
|
bool get isDrafts => role == PresentationMailbox.roleDrafts;
|
||||||
|
|
||||||
bool get isTemplates => role == PresentationMailbox.roleTemplates;
|
bool get isTemplates => role == PresentationMailbox.roleTemplates;
|
||||||
|
|||||||
Reference in New Issue
Block a user