TF-4392 [Team Mailbox] Move email to trash on delete in Email List View
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/namespace.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
|
||||
mixin HandleTeamMailboxMixin {
|
||||
MailboxTree? get _teamMailboxesTree =>
|
||||
getBinding<MailboxController>()?.teamMailboxesTree.value;
|
||||
|
||||
MailboxNode? _findTeamMailboxNodeByNamespaceOnFirstLevel(
|
||||
Namespace namespace,
|
||||
) {
|
||||
return _teamMailboxesTree?.findNodeOnFirstLevel(
|
||||
(node) => node.item.namespace == namespace,
|
||||
);
|
||||
}
|
||||
|
||||
PresentationMailbox? _findDefaultMailboxInTeamMailbox({
|
||||
required Namespace namespace,
|
||||
required String mailboxName,
|
||||
}) {
|
||||
final teamMailboxNode =
|
||||
_findTeamMailboxNodeByNamespaceOnFirstLevel(namespace);
|
||||
if (teamMailboxNode == null) return null;
|
||||
|
||||
final mailboxNode = teamMailboxNode.findNodeOnFirstLevel(
|
||||
(node) =>
|
||||
node.mailboxNameAsString.toLowerCase() == mailboxName.toLowerCase(),
|
||||
);
|
||||
if (mailboxNode == null) return null;
|
||||
|
||||
return mailboxNode.item;
|
||||
}
|
||||
|
||||
MailboxId? findDefaultMailboxIdInTeamMailbox({
|
||||
required Namespace namespace,
|
||||
required String mailboxName,
|
||||
}) {
|
||||
final teamMailbox = _findDefaultMailboxInTeamMailbox(
|
||||
namespace: namespace,
|
||||
mailboxName: mailboxName,
|
||||
);
|
||||
return teamMailbox?.id;
|
||||
}
|
||||
|
||||
String? getTeamMailboxNodePathWithSeparator({
|
||||
required MailboxId mailboxId,
|
||||
String pathSeparator = '/',
|
||||
}) {
|
||||
return _teamMailboxesTree?.getNodePath(mailboxId, pathSeparator);
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
@@ -6,6 +7,7 @@ import 'package:model/mailbox/expand_mode.dart';
|
||||
import 'package:model/mailbox/mailbox_state.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:model/mailbox/select_mode.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_tree.dart';
|
||||
|
||||
class MailboxNode with EquatableMixin {
|
||||
static final PresentationMailbox _root = PresentationMailbox(MailboxId(Id('root')));
|
||||
@@ -172,4 +174,7 @@ extension MailboxNodeExtension on MailboxNode {
|
||||
|
||||
return item.sortOrder!.value.value.compareTo(other.item.sortOrder!.value.value);
|
||||
}
|
||||
|
||||
MailboxNode? findNodeOnFirstLevel(NodeQuery nodeQuery) =>
|
||||
childrenItems?.firstWhereOrNull(nodeQuery);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user