import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/views/button/tmail_button_widget.dart'; import 'package:core/presentation/views/text/text_field_builder.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:get/get.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/label_mailbox_item_widget.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_item_widget.dart'; import 'package:tmail_ui_user/features/mailbox_creator/presentation/mailbox_creator_view.dart'; import 'package:tmail_ui_user/features/quotas/presentation/quotas_controller.dart'; import 'package:tmail_ui_user/features/search/mailbox/presentation/search_mailbox_view.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import '../base/core_robot.dart'; import '../exceptions/mailbox/null_inbox_unread_count_exception.dart'; import '../exceptions/mailbox/null_quota_exception.dart'; class MailboxMenuRobot extends CoreRobot { MailboxMenuRobot(super.$); Future openAppGrid() async { await $(#toggle_app_grid_button).tap(); } Future openFolderByName(String name) async { final mailboxItem = $(MailboxItemWidget).$(LabelMailboxItemWidget).$(name); await $.scrollUntilVisible(finder: mailboxItem); await mailboxItem.tap(); } Future openSetting() async { await $(#user_avatar).tap(); } Future longPressMailboxWithName(String name) async { await $(name).longPress(); await $.pumpAndSettle(); } Future tapCreateNewSubFolder() async { await $(AppLocalizations().newSubfolder).tap(); } Future enterNewFolderName(String name) async { await $(MailboxCreatorView) .$(TextFieldBuilder) .enterText(name); } Future confirmCreateNewFolder() async { await $(MailboxCreatorView) .$(AppLocalizations().createFolder) .tap(); } Future expandMailboxWithName(String name) async { await $(MailboxItemWidget) .which((widget) { return widget.mailboxNode.item.name?.name.toLowerCase() == name.toLowerCase(); }) .$(#expand_mailbox_button) .tap(); } Future openMailboxSearch() async { await $(TMailButtonWidget) .which((widget) { return widget.icon == ImagePaths().icSearchBar; }) .tap(); } Future searchMailbox(String query) async { await $(SearchMailboxView).$(TextFieldBuilder).enterText(query); await $.pumpAndSettle(); } Future tapHideMailbox() async { await $(AppLocalizations().hideFolder).tap(); } Future closeMenu() async { await native.swipe(from: const Offset(0.9, 0.5), to: const Offset(0, 0.5)); } int getCurrentInboxCount() { final inboxCount = Get.find() .selectedMailbox .value ?.unreadEmails ?.value .value .toInt(); if (inboxCount == null) { throw const NullInboxUnreadCountException(); } return inboxCount; } Future tapSignOut() async { await $.scrollUntilVisible(finder: $(AppLocalizations().sign_out)); await $(AppLocalizations().sign_out).tap(); } Future confirmSignOut() async { await $(AppLocalizations().yesLogout).tap(); } int getUsedQuota() { final usedQuota = getBinding()?.octetsQuota.value?.used?.value.toInt(); if (usedQuota == null) throw NullQuotaException(); return usedQuota; } Future refreshQuota() async { getBinding()?.reloadQuota(); await $.pumpAndSettle(duration: const Duration(seconds: 2)); } Future tapRecoverDeletedMessages() async { await $(AppLocalizations().recoverDeletedMessages).tap(); } Future tapConfirmRecoverDeletedMessages() async { if (await native.isPermissionDialogVisible(timeout: const Duration(seconds: 2))) { await native.grantPermissionWhenInUse(); } await $(AppLocalizations().restore).tap(); await $.pumpAndSettle(); } Future tapRenameMailbox() async { await $(AppLocalizations().renameFolder).tap(); } Future enterRenameSubFolderName(String name) async { await $(#rename_mailbox_dialog) .$(TextField) .enterText(name); await $.pumpAndSettle(duration: const Duration(seconds: 1)); } Future confirmRenameSubFolder() async { await $(#rename_mailbox_dialog) .$(AppLocalizations().rename.toUpperCase()) .tap(); } Future tapMoveMailbox() async { await $(AppLocalizations().moveFolder).tap(); } Future tapMailboxWithName(String name) async { await $(name).tap(); await $.pumpAndSettle(duration: const Duration(seconds: 2)); } Future tapDeleteMailbox() async { await $(AppLocalizations().deleteFolder).tap(); } Future confirmDeleteMailbox() async { await $(AppLocalizations().delete).tap(); await $.pumpAndSettle(duration: const Duration(seconds: 2)); } Future tapAddNewFolderButton() async { await $(#add_new_folder_button).tap(); } Future tapMarkAsRead() async { await $(AppLocalizations().mark_as_read).tap(); await $.pumpAndSettle(); } Future tapMoveFolderContentAction(String mailboxName) async { await $(AppLocalizations().moveFolderContent).tap(); await $.pumpAndTrySettle(); await $(mailboxName).tap(); await $.pumpAndTrySettle(); } }