Use common FilterField & EmailReceiveTimeType objects for the entire app

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-07-11 01:31:07 +07:00
committed by Dat H. Pham
parent 84e3c526f7
commit da29ff01e3
17 changed files with 253 additions and 378 deletions
@@ -1,85 +0,0 @@
import 'package:core/core.dart';
import 'package:flutter/cupertino.dart';
import 'package:model/email/prefix_email_address.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
enum AdvancedSearchFilterField {
from,
to,
subject,
hasKeyword,
notKeyword,
mailBox,
date,
sortBy,
hasAttachment;
String getTitle(BuildContext context) {
switch (this) {
case AdvancedSearchFilterField.from:
return AppLocalizations.of(context).from_email_address_prefix;
case AdvancedSearchFilterField.to:
return AppLocalizations.of(context).to_email_address_prefix;
case AdvancedSearchFilterField.subject:
return AppLocalizations.of(context).subject;
case AdvancedSearchFilterField.hasKeyword:
return AppLocalizations.of(context).hasTheWords;
case AdvancedSearchFilterField.notKeyword:
return AppLocalizations.of(context).doesNotHave;
case AdvancedSearchFilterField.mailBox:
return AppLocalizations.of(context).folder;
case AdvancedSearchFilterField.date:
return AppLocalizations.of(context).date;
case AdvancedSearchFilterField.sortBy:
return AppLocalizations.of(context).sortBy;
case AdvancedSearchFilterField.hasAttachment:
return AppLocalizations.of(context).hasAttachment;
}
}
String getHintText(BuildContext context) {
switch (this) {
case AdvancedSearchFilterField.from:
case AdvancedSearchFilterField.to:
return AppLocalizations.of(context).nameOrEmailAddress;
case AdvancedSearchFilterField.subject:
return AppLocalizations.of(context).enterASubject;
case AdvancedSearchFilterField.hasKeyword:
case AdvancedSearchFilterField.notKeyword:
return AppLocalizations.of(context).enterSomeSuggestions;
case AdvancedSearchFilterField.mailBox:
return AppLocalizations.of(context).allFolders;
case AdvancedSearchFilterField.date:
return AppLocalizations.of(context).allTime;
case AdvancedSearchFilterField.sortBy:
return AppLocalizations.of(context).mostRecent;
case AdvancedSearchFilterField.hasAttachment:
return AppLocalizations.of(context).hasAttachment;
}
}
TextStyle getTitleTextStyle() {
return ThemeUtils.defaultTextStyleInterFont.copyWith(
fontSize: 14,
fontWeight: FontWeight.w400,
color: AppColor.colorContentEmail);
}
PrefixEmailAddress getPrefixEmailAddress() {
switch (this) {
case AdvancedSearchFilterField.from:
return PrefixEmailAddress.from;
case AdvancedSearchFilterField.to:
return PrefixEmailAddress.to;
default:
return PrefixEmailAddress.cc;
}
}
TextStyle getHintTextStyle() {
return ThemeUtils.defaultTextStyleInterFont.copyWith(
fontSize: 16,
fontWeight: FontWeight.w400,
color: AppColor.colorHintSearchBar);
}
}
@@ -7,11 +7,39 @@ import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
enum EmailReceiveTimeType {
allTime,
last7Days,
last15Days,
last30Days,
last6Months,
last1Year,
lastYear,
customRange;
static List<EmailReceiveTimeType> get valuesForSearch => [
allTime,
last7Days,
last30Days,
last6Months,
lastYear,
customRange,
];
static List<EmailReceiveTimeType> get valuesForRecoverDeletionDateField => [
last7Days,
last15Days,
last30Days,
last6Months,
last1Year,
];
static List<EmailReceiveTimeType> get valuesForRecoverReceptionDateDateField => [
allTime,
last7Days,
last30Days,
last6Months,
lastYear,
customRange,
];
String getTitle(BuildContext context, {DateTime? startDate, DateTime? endDate}) {
return getTitleByAppLocalizations(
AppLocalizations.of(context),
@@ -32,10 +60,14 @@ enum EmailReceiveTimeType {
return appLocalizations.allTime;
case EmailReceiveTimeType.last7Days:
return appLocalizations.last7Days;
case EmailReceiveTimeType.last15Days:
return appLocalizations.last15Days;
case EmailReceiveTimeType.last30Days:
return appLocalizations.last30Days;
case EmailReceiveTimeType.last6Months:
return appLocalizations.last6Months;
case EmailReceiveTimeType.last1Year:
return appLocalizations.last1Year;
case EmailReceiveTimeType.lastYear:
return appLocalizations.lastYears;
case EmailReceiveTimeType.customRange:
@@ -58,6 +90,10 @@ enum EmailReceiveTimeType {
final today = DateTime.now();
final last7Days = today.subtract(const Duration(days: 7));
return last7Days.toUTCDate();
case EmailReceiveTimeType.last15Days:
final today = DateTime.now();
final last15Days = today.subtract(const Duration(days: 15));
return last15Days.toUTCDate();
case EmailReceiveTimeType.last30Days:
final today = DateTime.now();
final last30Days = today.subtract(const Duration(days: 30));
@@ -66,6 +102,7 @@ enum EmailReceiveTimeType {
final today = DateTime.now();
final last6months = DateTime(today.year, today.month - 6, today.day);
return last6months.toUTCDate();
case EmailReceiveTimeType.last1Year:
case EmailReceiveTimeType.lastYear:
final today = DateTime.now();
final lastYear = DateTime(today.year - 1, today.month, today.day);
@@ -78,8 +115,10 @@ enum EmailReceiveTimeType {
UTCDate? toLatestUTCDate() {
switch(this) {
case EmailReceiveTimeType.last7Days:
case EmailReceiveTimeType.last15Days:
case EmailReceiveTimeType.last30Days:
case EmailReceiveTimeType.last6Months:
case EmailReceiveTimeType.last1Year:
case EmailReceiveTimeType.lastYear:
return DateTime.now().toUTCDate();
default: