From b96b93f1c583da3651023c407db929e2846afb72 Mon Sep 17 00:00:00 2001 From: hieubt Date: Sat, 11 Nov 2023 00:29:34 +0700 Subject: [PATCH] TF-1709 Add sort order type (cherry picked from commit 1e7bddac324e33793cbe62e0582eea61349b2649) --- .../model/search/email_sort_order_type.dart | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 lib/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart diff --git a/lib/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart b/lib/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart new file mode 100644 index 000000000..6595603ba --- /dev/null +++ b/lib/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart @@ -0,0 +1,73 @@ +import 'package:flutter/material.dart'; +import 'package:jmap_dart_client/jmap/mail/email/email_comparator.dart'; +import 'package:jmap_dart_client/jmap/mail/email/email_comparator_property.dart'; +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; +import 'package:jmap_dart_client/jmap/core/sort/comparator.dart'; + +enum EmailSortOrderType { + mostRecent, + oldest, + relevance, + senderAscending, + senderDescending, + subjectAscending, + subjectDescending; + + String getTitle(BuildContext context) { + switch (this) { + case EmailSortOrderType.mostRecent: + return AppLocalizations.of(context).mostRecent; + case EmailSortOrderType.oldest: + return AppLocalizations.of(context).oldest; + case EmailSortOrderType.relevance: + return AppLocalizations.of(context).relevance; + case EmailSortOrderType.senderAscending: + return AppLocalizations.of(context).senderAscending; + case EmailSortOrderType.senderDescending: + return AppLocalizations.of(context).senderDescending; + case EmailSortOrderType.subjectAscending: + return AppLocalizations.of(context).subjectAscending; + case EmailSortOrderType.subjectDescending: + return AppLocalizations.of(context).subjectDescending; + } + } + + Set getSortOrder() { + switch (this) { + case EmailSortOrderType.mostRecent: + return {} + ..add(EmailComparator(EmailComparatorProperty.receivedAt) + ..setIsAscending(false)); + case EmailSortOrderType.oldest: + return {} + ..add(EmailComparator(EmailComparatorProperty.receivedAt) + ..setIsAscending(true)); + case EmailSortOrderType.relevance: + return {}; + case EmailSortOrderType.senderAscending: + return {} + ..add(EmailComparator(EmailComparatorProperty.from) + ..setIsAscending(true)); + case EmailSortOrderType.senderDescending: + return {} + ..add(EmailComparator(EmailComparatorProperty.from) + ..setIsAscending(false)); + case EmailSortOrderType.subjectAscending: + return {} + ..add(EmailComparator(EmailComparatorProperty.subject) + ..setIsAscending(true)); + case EmailSortOrderType.subjectDescending: + return {} + ..add(EmailComparator(EmailComparatorProperty.subject) + ..setIsAscending(false)); + } + } + + TextStyle getTextStyle({required bool isInDropdown}) { + return TextStyle( + fontSize: isInDropdown ? 15 : 16, + fontWeight: FontWeight.w400, + color: Colors.black, + ); + } +} \ No newline at end of file