TF-4392 [Team Mailbox] Hide Recover deleted messages and Archive message in team mailbox

This commit is contained in:
dab246
2026-04-01 14:48:54 +07:00
committed by Dat H. Pham
parent a4bea6524b
commit 7cc9cd82fa
16 changed files with 165 additions and 529 deletions
@@ -56,7 +56,8 @@ extension ListPresentationEmailExtension on List<PresentationEmail> {
) {
return any((email) {
final mailboxContain = email.findMailboxContain(mapMailbox);
return mailboxContain?.isArchive != true;
return mailboxContain?.isArchive != true &&
mailboxContain?.isChildOfTeamMailboxes != true;
});
}
@@ -40,18 +40,29 @@ extension PresentationMailboxExtension on PresentationMailbox {
bool get isVirtualFolder => isFavorite || isActionRequired;
bool get isTrash {
if (isPersonal) {
return role == PresentationMailbox.roleTrash;
} else {
return isTrashTeamMailbox;
}
bool get isTrash => isTrashPersonal || isTrashTeamMailbox;
bool get isTrashPersonal =>
isPersonal && role == PresentationMailbox.roleTrash;
bool _isTeamMailboxWithRole(String role) =>
isChildOfTeamMailboxes &&
name?.name.toLowerCase() == role.toLowerCase();
/// Stricter version of [_isTeamMailboxWithRole] that additionally checks
/// the parent is a team-root node (no parentId), ensuring only first-level
/// system folders match — not nested user subfolders like Team/Project/Trash.
bool isFirstLevelTeamSystemFolder(
Map<MailboxId, PresentationMailbox> mailboxMap,
String role,
) {
if (!_isTeamMailboxWithRole(role)) return false;
final parent = parentId != null ? mailboxMap[parentId] : null;
return parent?.isTeamMailboxes == true;
}
bool get isTrashTeamMailbox {
return isChildOfTeamMailboxes &&
name?.name.toLowerCase() == PresentationMailbox.trashRole.toLowerCase();
}
bool get isTrashTeamMailbox =>
_isTeamMailboxWithRole(PresentationMailbox.trashRole);
bool get isDrafts {
if (isPersonal) {
@@ -61,11 +72,8 @@ extension PresentationMailboxExtension on PresentationMailbox {
}
}
bool get isDraftsTeamMailbox {
return isChildOfTeamMailboxes &&
name?.name.toLowerCase() ==
PresentationMailbox.draftsRole.toLowerCase();
}
bool get isDraftsTeamMailbox =>
_isTeamMailboxWithRole(PresentationMailbox.draftsRole);
bool get isTemplates {
if (isPersonal) {
@@ -75,11 +83,8 @@ extension PresentationMailboxExtension on PresentationMailbox {
}
}
bool get isTemplatesTeamMailbox {
return isChildOfTeamMailboxes &&
name?.name.toLowerCase() ==
PresentationMailbox.templatesRole.toLowerCase();
}
bool get isTemplatesTeamMailbox =>
_isTeamMailboxWithRole(PresentationMailbox.templatesRole);
bool get isSent => role == PresentationMailbox.roleSent;