From 0db38451337e17a04f78a3976faccfdad318c5c6 Mon Sep 17 00:00:00 2001 From: dab246 Date: Thu, 12 Feb 2026 10:12:17 +0700 Subject: [PATCH] TF-4329 Fix rogue mailbox set request for favorite --- lib/features/mailbox/presentation/mailbox_controller.dart | 5 ++++- .../mailbox/presentation/search_mailbox_controller.dart | 6 +++++- .../lib/extensions/list_presentation_mailbox_extension.dart | 5 ++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/features/mailbox/presentation/mailbox_controller.dart b/lib/features/mailbox/presentation/mailbox_controller.dart index 4cb7ef4ee..a74ee5ad9 100644 --- a/lib/features/mailbox/presentation/mailbox_controller.dart +++ b/lib/features/mailbox/presentation/mailbox_controller.dart @@ -891,7 +891,10 @@ class MailboxController extends BaseMailboxController void goToCreateNewMailboxView(BuildContext context, {PresentationMailbox? parentMailbox}) async { if (session != null && accountId != null) { - final arguments = MailboxCreatorArguments(allMailboxes, parentMailbox); + final arguments = MailboxCreatorArguments( + allMailboxes.withoutVirtualMailbox, + parentMailbox, + ); final result = PlatformInfo.isWeb ? await DialogRouter().pushGeneralDialog(routeName: AppRoutes.mailboxCreator, arguments: arguments) diff --git a/lib/features/search/mailbox/presentation/search_mailbox_controller.dart b/lib/features/search/mailbox/presentation/search_mailbox_controller.dart index d1c15396e..f9b5ee6a6 100644 --- a/lib/features/search/mailbox/presentation/search_mailbox_controller.dart +++ b/lib/features/search/mailbox/presentation/search_mailbox_controller.dart @@ -15,6 +15,7 @@ import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/core/state.dart' as jmap; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; import 'package:model/email/presentation_email.dart'; +import 'package:model/extensions/list_presentation_mailbox_extension.dart'; import 'package:model/extensions/presentation_email_extension.dart'; import 'package:model/mailbox/presentation_mailbox.dart'; import 'package:tmail_ui_user/features/base/base_mailbox_controller.dart'; @@ -824,7 +825,10 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa void goToCreateNewMailboxView(BuildContext context, {PresentationMailbox? parentMailbox}) async { if (session != null && accountId != null) { - final arguments = MailboxCreatorArguments(allMailboxes, parentMailbox); + final arguments = MailboxCreatorArguments( + allMailboxes.withoutVirtualMailbox, + parentMailbox, + ); final result = PlatformInfo.isWeb ? await DialogRouter().pushGeneralDialog(routeName: AppRoutes.mailboxCreator, arguments: arguments) diff --git a/model/lib/extensions/list_presentation_mailbox_extension.dart b/model/lib/extensions/list_presentation_mailbox_extension.dart index 1ca05f5b9..d0fbbfb07 100644 --- a/model/lib/extensions/list_presentation_mailbox_extension.dart +++ b/model/lib/extensions/list_presentation_mailbox_extension.dart @@ -1,4 +1,4 @@ - +import 'package:collection/collection.dart'; import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart'; import 'package:model/extensions/presentation_mailbox_extension.dart'; import 'package:model/mailbox/presentation_mailbox.dart'; @@ -18,4 +18,7 @@ extension ListPresentationMailboxExtension on List { bool get isAllUnreadMailboxes => every((mailbox) => mailbox.countUnReadEmailsAsString.isNotEmpty); List get mailboxIds => map((mailbox) => mailbox.id).toList(); + + List get withoutVirtualMailbox => + whereNot((mailbox) => mailbox.isVirtualFolder).toList(); } \ No newline at end of file