diff --git a/integration_test/scenarios/labels/display_folder_info_when_open_mail_from_tag_scenario.dart b/integration_test/scenarios/labels/display_folder_info_when_open_mail_from_tag_scenario.dart new file mode 100644 index 000000000..27894389b --- /dev/null +++ b/integration_test/scenarios/labels/display_folder_info_when_open_mail_from_tag_scenario.dart @@ -0,0 +1,57 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:labels/labels.dart'; +import 'package:model/mailbox/presentation_mailbox.dart'; +import 'package:tmail_ui_user/features/mailbox/presentation/widgets/labels/label_list_view.dart'; +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; + +import '../../base/base_test_scenario.dart'; +import '../../mixin/provisioning_label_scenario_mixin.dart'; +import '../../robots/label_robot.dart'; +import '../../robots/thread_robot.dart'; + +class DisplayFolderInfoWhenOpenMailFromTagScenario extends BaseTestScenario + with ProvisioningLabelScenarioMixin { + const DisplayFolderInfoWhenOpenMailFromTagScenario(super.$); + + @override + Future runTestLogic() async { + const emailUser = String.fromEnvironment('BASIC_AUTH_EMAIL'); + if (emailUser.isEmpty) { + fail('Missing --dart-define=BASIC_AUTH_EMAIL for this integration scenario'); + } + + final threadRobot = ThreadRobot($); + final labelRobot = LabelRobot($); + + final labels = await provisionLabelsByDisplayNames( + ['Tag 1'], + ); + await $.pumpAndSettle(); + expect(labels, isNotEmpty, reason: 'Provisioning label "Tag 1" failed'); + final newLabel = labels.first; + + await provisionEmail( + buildEmailsForLabel( + label: newLabel, + toEmail: emailUser, + count: 2, + ), + requestReadReceipt: false, + folderLocationRole: PresentationMailbox.roleTrash, + ); + await $.pumpAndSettle(duration: const Duration(seconds: 2)); + + await threadRobot.openMailbox(); + await _expectLabelListViewVisible(); + + await labelRobot.openLabelByName(newLabel.safeDisplayName); + await _expectFolderInfoDisplayed(); + } + + Future _expectLabelListViewVisible() => + expectViewVisible($(LabelListView)); + + Future _expectFolderInfoDisplayed() async { + await expectViewVisible($(AppLocalizations().trashMailboxDisplayName)); + } +} diff --git a/integration_test/tests/labels/display_folder_info_when_open_mail_from_tag_test.dart b/integration_test/tests/labels/display_folder_info_when_open_mail_from_tag_test.dart new file mode 100644 index 000000000..389d8a2ef --- /dev/null +++ b/integration_test/tests/labels/display_folder_info_when_open_mail_from_tag_test.dart @@ -0,0 +1,9 @@ +import '../../base/test_base.dart'; +import '../../scenarios/labels/display_folder_info_when_open_mail_from_tag_scenario.dart'; + +void main() { + TestBase().runPatrolTest( + description: 'Should display folder info when open mail list from tag', + scenarioBuilder: ($) => DisplayFolderInfoWhenOpenMailFromTagScenario($), + ); +} diff --git a/lib/features/mailbox/presentation/base_mailbox_view.dart b/lib/features/mailbox/presentation/base_mailbox_view.dart index ac93efb92..ea48cee61 100644 --- a/lib/features/mailbox/presentation/base_mailbox_view.dart +++ b/lib/features/mailbox/presentation/base_mailbox_view.dart @@ -15,6 +15,7 @@ import 'package:tmail_ui_user/features/labels/presentation/models/label_action_t import 'package:tmail_ui_user/features/mailbox/presentation/extensions/handle_label_action_type_extension.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/extensions/handle_mailbox_action_extension.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/extensions/open_app_grid_extension.dart'; +import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/extensions/toggle_expand_folders_extension.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/mailbox_controller.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_categories.dart'; @@ -406,8 +407,8 @@ abstract class BaseMailboxView extends GetWidget final selectedMailbox = dashboardController.selectedMailbox.value; Id? labelIdSelected; - if (selectedMailbox is PresentationLabelMailbox) { - labelIdSelected = selectedMailbox.id.id; + if (selectedMailbox?.isLabelMailbox == true) { + labelIdSelected = selectedMailbox?.labelId; } if (isLabelAvailable) { diff --git a/lib/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart b/lib/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart index e8c0af208..3c2466c61 100644 --- a/lib/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart +++ b/lib/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart @@ -17,7 +17,7 @@ import 'package:tmail_ui_user/main/routes/route_utils.dart'; extension PresentationMailboxExtension on PresentationMailbox { String getDisplayName(BuildContext context) { - if (this is PresentationLabelMailbox) { + if (isLabelMailbox) { return (this as PresentationLabelMailbox).label.safeDisplayName; } @@ -52,7 +52,7 @@ extension PresentationMailboxExtension on PresentationMailbox { } String getDisplayNameWithoutContext(AppLocalizations appLocalizations) { - if (this is PresentationLabelMailbox) { + if (isLabelMailbox) { return (this as PresentationLabelMailbox).label.safeDisplayName; } diff --git a/lib/features/search/email/presentation/search_email_view.dart b/lib/features/search/email/presentation/search_email_view.dart index 980efe8f1..8cbf9fab8 100644 --- a/lib/features/search/email/presentation/search_email_view.dart +++ b/lib/features/search/email/presentation/search_email_view.dart @@ -20,6 +20,7 @@ import 'package:tmail_ui_user/features/base/widget/keyboard/keyboard_handler_wra import 'package:tmail_ui_user/features/base/widget/popup_menu/popup_menu_item_action_widget.dart'; import 'package:tmail_ui_user/features/base/widget/scrollbar_list_view.dart'; import 'package:tmail_ui_user/features/email/presentation/extensions/presentation_email_extension.dart'; +import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/recent_search.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/handle_ai_needs_action_extension.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/extensions/labels/handle_logic_label_extension.dart'; @@ -770,6 +771,9 @@ class SearchEmailView extends GetWidget final listLabels = dashboardController.labelController.labels; + final isLabelMailboxOpened = + dashboardController.selectedMailbox.value?.isLabelMailbox == true; + List