TF-1710 Move all method of PresentationMailbox object to extension to sync
(cherry picked from commit 408fb1840df1f04d51c018992e13ad1011649cbd)
This commit is contained in:
@@ -1,11 +1,16 @@
|
||||
|
||||
import 'package:core/core.dart';
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/utils/app_toast.dart';
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:core/presentation/views/bottom_popup/confirmation_dialog_action_sheet_builder.dart';
|
||||
import 'package:core/presentation/views/dialog/confirmation_dialog_builder.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
@@ -58,7 +63,7 @@ mixin MailboxActionHandlerMixin {
|
||||
..onCancelAction(AppLocalizations.of(context).cancel, popBack)
|
||||
..onConfirmAction(AppLocalizations.of(context).delete, () {
|
||||
popBack();
|
||||
if (mailbox.countEmails > 0) {
|
||||
if (mailbox.countTotalEmails > 0) {
|
||||
dashboardController.emptyTrashFolderAction(trashFolderId: mailbox.id);
|
||||
} else {
|
||||
appToast.showToastWarningMessage(
|
||||
@@ -85,7 +90,7 @@ mixin MailboxActionHandlerMixin {
|
||||
..onCloseButtonAction(popBack)
|
||||
..onConfirmButtonAction(AppLocalizations.of(context).delete, () {
|
||||
popBack();
|
||||
if (mailbox.countEmails > 0) {
|
||||
if (mailbox.countTotalEmails > 0) {
|
||||
dashboardController.emptyTrashFolderAction(trashFolderId: mailbox.id);
|
||||
} else {
|
||||
appToast.showToastWarningMessage(
|
||||
@@ -118,7 +123,7 @@ mixin MailboxActionHandlerMixin {
|
||||
..onCancelAction(AppLocalizations.of(context).cancel, popBack)
|
||||
..onConfirmAction(AppLocalizations.of(context).delete_all, () {
|
||||
popBack();
|
||||
if (mailbox.countEmails > 0) {
|
||||
if (mailbox.countTotalEmails > 0) {
|
||||
dashboardController.emptySpamFolderAction(spamFolderId: mailbox.id);
|
||||
} else {
|
||||
appToast.showToastWarningMessage(
|
||||
@@ -145,7 +150,7 @@ mixin MailboxActionHandlerMixin {
|
||||
..onCloseButtonAction(popBack)
|
||||
..onConfirmButtonAction(AppLocalizations.of(context).delete_all, () {
|
||||
popBack();
|
||||
if (mailbox.countEmails > 0) {
|
||||
if (mailbox.countTotalEmails > 0) {
|
||||
dashboardController.emptySpamFolderAction(spamFolderId: mailbox.id);
|
||||
} else {
|
||||
appToast.showToastWarningMessage(
|
||||
|
||||
+1
-1
@@ -6,8 +6,8 @@ import 'package:core/utils/platform_info.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.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';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/utils/mailbox_method_action_define.dart';
|
||||
|
||||
@@ -19,6 +19,7 @@ import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/extensions/list_attachment_extension.dart';
|
||||
import 'package:model/extensions/list_email_address_extension.dart';
|
||||
import 'package:model/extensions/presentation_email_extension.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/custom_scroll_behavior.dart';
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/navigation_router.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||
|
||||
extension PresentationMailboxExtension on PresentationMailbox {
|
||||
|
||||
String getMailboxIcon(ImagePaths imagePaths) {
|
||||
if (hasRole()) {
|
||||
switch(role!.value) {
|
||||
case PresentationMailbox.inboxRole:
|
||||
return imagePaths.icMailboxInbox;
|
||||
case PresentationMailbox.draftsRole:
|
||||
return imagePaths.icMailboxDrafts;
|
||||
case PresentationMailbox.outboxRole:
|
||||
return imagePaths.icMailboxOutbox;
|
||||
case PresentationMailbox.archiveRole:
|
||||
return imagePaths.icMailboxArchived;
|
||||
case PresentationMailbox.sentRole:
|
||||
return imagePaths.icMailboxSent;
|
||||
case PresentationMailbox.trashRole:
|
||||
return imagePaths.icMailboxTrash;
|
||||
case PresentationMailbox.spamRole:
|
||||
return imagePaths.icMailboxSpam;
|
||||
case PresentationMailbox.templatesRole:
|
||||
return imagePaths.icMailboxTemplate;
|
||||
case 'all_mail':
|
||||
return imagePaths.icMailboxAllMail;
|
||||
default:
|
||||
return imagePaths.icFolderMailbox;
|
||||
}
|
||||
} else if (isChildOfTeamMailboxes) {
|
||||
switch(name!.name.toLowerCase()) {
|
||||
case 'inbox':
|
||||
return imagePaths.icMailboxInbox;
|
||||
case 'outbox':
|
||||
return imagePaths.icMailboxOutbox;
|
||||
case 'drafts':
|
||||
return imagePaths.icMailboxDrafts;
|
||||
case 'archive':
|
||||
return imagePaths.icMailboxArchived;
|
||||
case 'sent':
|
||||
return imagePaths.icMailboxSent;
|
||||
case 'trash':
|
||||
return imagePaths.icMailboxTrash;
|
||||
case 'spam':
|
||||
return imagePaths.icMailboxSpam;
|
||||
case 'templates':
|
||||
return imagePaths.icMailboxTemplate;
|
||||
default:
|
||||
return imagePaths.icFolderMailbox;
|
||||
}
|
||||
} else {
|
||||
return imagePaths.icFolderMailbox;
|
||||
}
|
||||
}
|
||||
|
||||
Uri get mailboxRouteWeb => RouteUtils.generateRouteBrowser(AppRoutes.dashboard, NavigationRouter(mailboxId: id));
|
||||
}
|
||||
@@ -1,7 +1,12 @@
|
||||
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/navigation_router.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||
|
||||
extension PresentationMailboxExtension on PresentationMailbox {
|
||||
|
||||
@@ -28,4 +33,56 @@ extension PresentationMailboxExtension on PresentationMailbox {
|
||||
}
|
||||
return name?.name ?? '';
|
||||
}
|
||||
|
||||
String getMailboxIcon(ImagePaths imagePaths) {
|
||||
if (hasRole()) {
|
||||
switch(role!.value) {
|
||||
case PresentationMailbox.inboxRole:
|
||||
return imagePaths.icMailboxInbox;
|
||||
case PresentationMailbox.draftsRole:
|
||||
return imagePaths.icMailboxDrafts;
|
||||
case PresentationMailbox.outboxRole:
|
||||
return imagePaths.icMailboxOutbox;
|
||||
case PresentationMailbox.archiveRole:
|
||||
return imagePaths.icMailboxArchived;
|
||||
case PresentationMailbox.sentRole:
|
||||
return imagePaths.icMailboxSent;
|
||||
case PresentationMailbox.trashRole:
|
||||
return imagePaths.icMailboxTrash;
|
||||
case PresentationMailbox.spamRole:
|
||||
return imagePaths.icMailboxSpam;
|
||||
case PresentationMailbox.templatesRole:
|
||||
return imagePaths.icMailboxTemplate;
|
||||
case 'all_mail':
|
||||
return imagePaths.icMailboxAllMail;
|
||||
default:
|
||||
return imagePaths.icFolderMailbox;
|
||||
}
|
||||
} else if (isChildOfTeamMailboxes) {
|
||||
switch(name!.name.toLowerCase()) {
|
||||
case 'inbox':
|
||||
return imagePaths.icMailboxInbox;
|
||||
case 'outbox':
|
||||
return imagePaths.icMailboxOutbox;
|
||||
case 'drafts':
|
||||
return imagePaths.icMailboxDrafts;
|
||||
case 'archive':
|
||||
return imagePaths.icMailboxArchived;
|
||||
case 'sent':
|
||||
return imagePaths.icMailboxSent;
|
||||
case 'trash':
|
||||
return imagePaths.icMailboxTrash;
|
||||
case 'spam':
|
||||
return imagePaths.icMailboxSpam;
|
||||
case 'templates':
|
||||
return imagePaths.icMailboxTemplate;
|
||||
default:
|
||||
return imagePaths.icFolderMailbox;
|
||||
}
|
||||
} else {
|
||||
return imagePaths.icFolderMailbox;
|
||||
}
|
||||
}
|
||||
|
||||
Uri get mailboxRouteWeb => RouteUtils.generateRouteBrowser(AppRoutes.dashboard, NavigationRouter(mailboxId: id));
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import 'package:core/utils/platform_info.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/expand_mode.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_mailbox_controller.dart';
|
||||
@@ -39,7 +40,7 @@ mixin MailboxWidgetMixin {
|
||||
MailboxActions.openInNewTab,
|
||||
if (mailbox.isSpam)
|
||||
_mailboxActionForSpam(spamReportEnabled),
|
||||
if (mailbox.getCountUnReadEmails().isNotEmpty)
|
||||
if (mailbox.countUnReadEmailsAsString.isNotEmpty)
|
||||
MailboxActions.markAsRead,
|
||||
if (mailbox.isTrash)
|
||||
MailboxActions.emptyTrash,
|
||||
@@ -52,7 +53,7 @@ mixin MailboxWidgetMixin {
|
||||
return [
|
||||
if (PlatformInfo.isWeb && mailbox.isSubscribedMailbox)
|
||||
MailboxActions.openInNewTab,
|
||||
if (mailbox.getCountUnReadEmails().isNotEmpty)
|
||||
if (mailbox.countUnReadEmailsAsString.isNotEmpty)
|
||||
MailboxActions.markAsRead,
|
||||
MailboxActions.move,
|
||||
MailboxActions.rename,
|
||||
@@ -68,7 +69,7 @@ mixin MailboxWidgetMixin {
|
||||
return [
|
||||
if (PlatformInfo.isWeb && mailbox.isSubscribedMailbox)
|
||||
MailboxActions.openInNewTab,
|
||||
if (mailbox.getCountUnReadEmails().isNotEmpty)
|
||||
if (mailbox.countUnReadEmailsAsString.isNotEmpty)
|
||||
MailboxActions.markAsRead,
|
||||
if (mailbox.isTeamMailboxes)
|
||||
if (mailbox.isSubscribedMailbox)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
|
||||
import 'package:core/core.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/context_menu_item_action.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
@@ -166,7 +167,7 @@ extension MailboxActionsExtension on MailboxActions {
|
||||
case MailboxActions.emptySpam:
|
||||
return ContextMenuItemState.activated;
|
||||
case MailboxActions.markAsRead:
|
||||
return mailbox.getCountUnReadEmails().isNotEmpty
|
||||
return mailbox.countUnReadEmailsAsString.isNotEmpty
|
||||
? ContextMenuItemState.activated
|
||||
: ContextMenuItemState.deactivated;
|
||||
default:
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/expand_mode.dart';
|
||||
import 'package:model/mailbox/mailbox_state.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
|
||||
@@ -10,7 +10,6 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_creator/presentation/mailbox_creator_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_creator/presentation/widgets/app_bar_mailbox_creator_builder.dart';
|
||||
|
||||
+6
-6
@@ -1471,7 +1471,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
bool isEmptyTrashBannerEnabledOnWeb(BuildContext context) {
|
||||
return selectedMailbox.value != null &&
|
||||
selectedMailbox.value!.isTrash &&
|
||||
selectedMailbox.value!.countEmails > 0 &&
|
||||
selectedMailbox.value!.countTotalEmails > 0 &&
|
||||
!searchController.isSearchActive() &&
|
||||
_responsiveUtils.isWebDesktop(context);
|
||||
}
|
||||
@@ -1479,7 +1479,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
bool isEmptyTrashBannerEnabledOnMobile(BuildContext context) {
|
||||
return selectedMailbox.value != null &&
|
||||
selectedMailbox.value!.isTrash &&
|
||||
selectedMailbox.value!.countEmails > 0 &&
|
||||
selectedMailbox.value!.countTotalEmails > 0 &&
|
||||
!searchController.isSearchActive() &&
|
||||
!_responsiveUtils.isWebDesktop(context);
|
||||
}
|
||||
@@ -1992,7 +1992,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
bool isEmptySpamBannerEnabledOnWeb(BuildContext context) {
|
||||
return selectedMailbox.value != null &&
|
||||
selectedMailbox.value!.isSpam &&
|
||||
selectedMailbox.value!.countEmails > 0 &&
|
||||
selectedMailbox.value!.countTotalEmails > 0 &&
|
||||
!searchController.isSearchActive() &&
|
||||
_responsiveUtils.isWebDesktop(context);
|
||||
}
|
||||
@@ -2000,7 +2000,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
bool isEmptySpamBannerEnabledOnMobile(BuildContext context) {
|
||||
return selectedMailbox.value != null &&
|
||||
selectedMailbox.value!.isSpam &&
|
||||
selectedMailbox.value!.countEmails > 0 &&
|
||||
selectedMailbox.value!.countTotalEmails > 0 &&
|
||||
!searchController.isSearchActive() &&
|
||||
!_responsiveUtils.isWebDesktop(context);
|
||||
}
|
||||
@@ -2018,7 +2018,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
..onCancelAction(AppLocalizations.of(context).cancel, popBack)
|
||||
..onConfirmAction(AppLocalizations.of(context).delete_all, () {
|
||||
popBack();
|
||||
if (spamMailbox.countEmails > 0) {
|
||||
if (spamMailbox.countTotalEmails > 0) {
|
||||
emptySpamFolderAction(spamFolderId: spamMailbox.id);
|
||||
} else {
|
||||
_appToast.showToastWarningMessage(
|
||||
@@ -2045,7 +2045,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
..onCloseButtonAction(popBack)
|
||||
..onConfirmButtonAction(AppLocalizations.of(context).delete_all, () {
|
||||
popBack();
|
||||
if (spamMailbox.countEmails > 0) {
|
||||
if (spamMailbox.countTotalEmails > 0) {
|
||||
emptySpamFolderAction(spamFolderId: spamMailbox.id);
|
||||
} else {
|
||||
_appToast.showToastWarningMessage(
|
||||
|
||||
@@ -9,6 +9,7 @@ import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox_filter_condition.dart';
|
||||
import 'package:model/extensions/mailbox_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/model/spam_report_state.dart';
|
||||
@@ -105,7 +106,7 @@ class SpamReportController extends BaseController {
|
||||
|
||||
bool get notShowSpamReportBanner => _presentationSpamMailbox.value == null;
|
||||
|
||||
String get numberOfUnreadSpamEmails => _presentationSpamMailbox.value?.getCountUnReadEmails() ?? '';
|
||||
String get numberOfUnreadSpamEmails => _presentationSpamMailbox.value?.countUnReadEmailsAsString ?? '';
|
||||
|
||||
bool get enableSpamReport => _spamReportState.value == SpamReportState.enabled;
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import 'package:jmap_dart_client/jmap/core/filter/operator/logic_filter_operator
|
||||
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
|
||||
import 'package:model/extensions/email_filter_condition_extension.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||
|
||||
+1
@@ -5,6 +5,7 @@ import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/extensions/presentation_email_extension.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
|
||||
class EmailQuickSearchItemTileWidget extends StatelessWidget {
|
||||
|
||||
+1
@@ -9,6 +9,7 @@ import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.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/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/expand_mode.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/base/base_mailbox_controller.dart';
|
||||
|
||||
+1
-1
@@ -5,8 +5,8 @@ import 'package:core/presentation/views/button/icon_button_web.dart';
|
||||
import 'package:core/utils/direction_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/expand_mode.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/utils/mailbox_method_action_define.dart';
|
||||
|
||||
@@ -11,6 +11,7 @@ import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
|
||||
import 'package:model/email/email_property.dart';
|
||||
import 'package:model/extensions/list_email_extension.dart';
|
||||
import 'package:model/extensions/mailbox_extension.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/data/datasource/mailbox_datasource.dart';
|
||||
import 'package:tmail_ui_user/features/push_notification/data/datasource/fcm_datasource.dart';
|
||||
|
||||
@@ -23,6 +23,7 @@ import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/email/read_actions.dart';
|
||||
import 'package:model/extensions/list_presentation_email_extension.dart';
|
||||
import 'package:model/extensions/presentation_email_extension.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:model/mailbox/select_mode.dart';
|
||||
import 'package:model/user/user_profile.dart';
|
||||
|
||||
@@ -9,8 +9,8 @@ import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:focused_menu_custom/focused_menu.dart';
|
||||
import 'package:focused_menu_custom/modals.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/utils/mailbox_method_action_define.dart';
|
||||
import 'package:tmail_ui_user/features/search/mailbox/presentation/utils/search_mailbox_utils.dart';
|
||||
|
||||
@@ -14,6 +14,7 @@ import 'package:get/get.dart';
|
||||
import 'package:model/email/email_action_type.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/extensions/presentation_email_extension.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:model/mailbox/select_mode.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
|
||||
|
||||
@@ -15,6 +15,7 @@ import 'package:model/email/email_action_type.dart';
|
||||
import 'package:model/email/mark_star_action.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/email/read_actions.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:pointer_interceptor/pointer_interceptor.dart';
|
||||
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
|
||||
|
||||
@@ -7,6 +7,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:model/email/email_action_type.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/extensions/list_presentation_email_extension.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:model/email/email_action_type.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/extensions/presentation_mailbox_extension.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:model/mailbox/select_mode.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
|
||||
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';
|
||||
|
||||
extension ListPresentationMailboxExtension on List<PresentationMailbox> {
|
||||
@@ -14,7 +15,7 @@ extension ListPresentationMailboxExtension on List<PresentationMailbox> {
|
||||
|
||||
bool get isAllDefaultMailboxes => every((mailbox) => mailbox.isDefault);
|
||||
|
||||
bool get isAllUnreadMailboxes => every((mailbox) => mailbox.getCountUnReadEmails().isNotEmpty);
|
||||
bool get isAllUnreadMailboxes => every((mailbox) => mailbox.countUnReadEmailsAsString.isNotEmpty);
|
||||
|
||||
List<MailboxId> get mailboxIds => map((mailbox) => mailbox.id).toList();
|
||||
}
|
||||
@@ -1,8 +1,73 @@
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||
import 'package:model/model.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/mailbox/namespace.dart';
|
||||
import 'package:model/mailbox/mailbox_state.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:model/mailbox/select_mode.dart';
|
||||
|
||||
extension PresentationMailboxExtension on PresentationMailbox {
|
||||
|
||||
bool get isActivated => state == MailboxState.activated;
|
||||
|
||||
bool hasParentId() => parentId != null && parentId!.id.value.isNotEmpty;
|
||||
|
||||
bool hasRole() => role != null && role!.value.isNotEmpty;
|
||||
|
||||
bool get isDefault => hasRole();
|
||||
|
||||
bool get isPersonal => namespace == null || namespace == Namespace('Personal');
|
||||
|
||||
bool get isTeamMailboxes => !isPersonal && !hasParentId();
|
||||
|
||||
bool get isChildOfTeamMailboxes => !isPersonal && hasParentId();
|
||||
|
||||
String get countUnReadEmailsAsString {
|
||||
if (countUnreadEmails <= 0) return '';
|
||||
return countUnreadEmails <= 999 ? '$countUnreadEmails' : '999+';
|
||||
}
|
||||
|
||||
int get countUnreadEmails => unreadEmails?.value.value.toInt() ?? 0;
|
||||
|
||||
int get countTotalEmails => totalEmails?.value.value.toInt() ?? 0;
|
||||
|
||||
bool get isSpam => role == PresentationMailbox.roleSpam;
|
||||
|
||||
bool get isTrash => role == PresentationMailbox.roleTrash;
|
||||
|
||||
bool get isDrafts => role == PresentationMailbox.roleDrafts;
|
||||
|
||||
bool get isTemplates => role == PresentationMailbox.roleTemplates;
|
||||
|
||||
bool get isSent => role == PresentationMailbox.roleSent;
|
||||
|
||||
bool get isOutbox => name == PresentationMailbox.lowerCaseOutboxMailboxName || role == PresentationMailbox.roleOutbox;
|
||||
|
||||
bool get isSubscribedMailbox => isSubscribed != null && isSubscribed?.value == true;
|
||||
|
||||
bool get allowedToDisplayCountOfUnreadEmails => !(isTrash || isSpam || isDrafts || isTemplates || isSent);
|
||||
|
||||
bool get allowedToDisplayCountOfTotalEmails => isTrash || isSpam;
|
||||
|
||||
String get countTotalEmailsAsString {
|
||||
if (countTotalEmails <= 0) return '';
|
||||
return countTotalEmails <= 999 ? '$countTotalEmails' : '999+';
|
||||
}
|
||||
|
||||
String? get emailTeamMailBoxes => namespace?.value.substring(
|
||||
(namespace?.value.indexOf('[') ?? 0) + 1,
|
||||
namespace?.value.indexOf(']'));
|
||||
|
||||
bool get allowedToDisplay => isSubscribedMailbox || isDefault;
|
||||
|
||||
MailboxId? get mailboxId {
|
||||
if (id == PresentationMailbox.unifiedMailbox.id) {
|
||||
return null;
|
||||
} else {
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
||||
bool get pushNotificationDeactivated => isOutbox || isSent || isDrafts || isTrash || isSpam;
|
||||
|
||||
PresentationMailbox toPresentationMailboxWithMailboxPath(String mailboxPath) {
|
||||
return PresentationMailbox(
|
||||
id,
|
||||
|
||||
@@ -68,68 +68,6 @@ class PresentationMailbox with EquatableMixin {
|
||||
}
|
||||
);
|
||||
|
||||
bool get isActivated => state == MailboxState.activated;
|
||||
|
||||
bool hasParentId() => parentId != null && parentId!.id.value.isNotEmpty;
|
||||
|
||||
bool hasRole() => role != null && role!.value.isNotEmpty;
|
||||
|
||||
bool get isDefault => hasRole();
|
||||
|
||||
bool get isPersonal => namespace == null || namespace == Namespace('Personal');
|
||||
|
||||
bool get isTeamMailboxes => !isPersonal && !hasParentId();
|
||||
|
||||
bool get isChildOfTeamMailboxes => !isPersonal && hasParentId();
|
||||
|
||||
String getCountUnReadEmails() {
|
||||
if (unreadEmails == null || unreadEmails!.value.value <= 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return unreadEmails!.value.value <= 999 ? '${unreadEmails!.value.value}' : '999+';
|
||||
}
|
||||
|
||||
int get countEmails => totalEmails?.value.value.toInt() ?? 0;
|
||||
|
||||
bool get isSpam => role == roleSpam;
|
||||
|
||||
bool get isTrash => role == roleTrash;
|
||||
|
||||
bool get isDrafts => role == roleDrafts;
|
||||
|
||||
bool get isTemplates => role == roleTemplates;
|
||||
|
||||
bool get isSent => role == roleSent;
|
||||
|
||||
bool get isOutbox => name == lowerCaseOutboxMailboxName || role == roleOutbox;
|
||||
|
||||
bool get isSubscribedMailbox => isSubscribed != null && isSubscribed?.value == true;
|
||||
|
||||
bool matchCountingRules() {
|
||||
if (isTrash || isDrafts || isTemplates || isSent) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
String? get emailTeamMailBoxes => namespace?.value.substring(
|
||||
(namespace?.value.indexOf('[') ?? 0) + 1,
|
||||
namespace?.value.indexOf(']'));
|
||||
|
||||
bool get allowedToDisplay => isSubscribedMailbox || isDefault;
|
||||
|
||||
MailboxId? get mailboxId {
|
||||
if (id == unifiedMailbox.id) {
|
||||
return null;
|
||||
} else {
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
||||
bool get pushNotificationDeactivated => isOutbox || isSent || isDrafts || isTrash || isSpam;
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
id,
|
||||
@@ -147,5 +85,6 @@ class PresentationMailbox with EquatableMixin {
|
||||
mailboxPath,
|
||||
state,
|
||||
namespace,
|
||||
displayName,
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user