Use common FilterField & EmailReceiveTimeType objects for the entire app
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -1,99 +0,0 @@
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/utils/theme_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tmail_ui_user/features/email_recovery/presentation/model/email_recovery_time_type.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
enum EmailRecoveryField {
|
||||
deletionDate,
|
||||
receptionDate,
|
||||
subject,
|
||||
recipients,
|
||||
sender;
|
||||
|
||||
String getTitle(BuildContext context) {
|
||||
switch (this) {
|
||||
case EmailRecoveryField.deletionDate:
|
||||
return AppLocalizations.of(context).deletionDate;
|
||||
case EmailRecoveryField.receptionDate:
|
||||
return AppLocalizations.of(context).receptionDate;
|
||||
case EmailRecoveryField.subject:
|
||||
return AppLocalizations.of(context).subject;
|
||||
case EmailRecoveryField.recipients:
|
||||
return AppLocalizations.of(context).headerRecipients;
|
||||
case EmailRecoveryField.sender:
|
||||
return AppLocalizations.of(context).sender;
|
||||
}
|
||||
}
|
||||
|
||||
String getHintText(BuildContext context) {
|
||||
switch (this) {
|
||||
case EmailRecoveryField.deletionDate:
|
||||
return AppLocalizations.of(context).last7Days;
|
||||
case EmailRecoveryField.receptionDate:
|
||||
return AppLocalizations.of(context).allTime;
|
||||
case EmailRecoveryField.subject:
|
||||
return AppLocalizations.of(context).enterSomeSuggestions;
|
||||
case EmailRecoveryField.recipients:
|
||||
return AppLocalizations.of(context).addRecipientButton;
|
||||
case EmailRecoveryField.sender:
|
||||
return AppLocalizations.of(context).addSender;
|
||||
}
|
||||
}
|
||||
|
||||
List<EmailRecoveryTimeType> getSupportedTimeTypes(DateTime restorationHorizon) {
|
||||
switch (this) {
|
||||
case EmailRecoveryField.deletionDate:
|
||||
final supportedTypes = [
|
||||
EmailRecoveryTimeType.last7Days,
|
||||
EmailRecoveryTimeType.last15Days,
|
||||
EmailRecoveryTimeType.last30Days,
|
||||
EmailRecoveryTimeType.last6Months,
|
||||
EmailRecoveryTimeType.last1Year,
|
||||
].where((type) => restorationHorizon
|
||||
.subtract(const Duration(seconds: 2)) // to allow "15 days" if restorationHorizon is exactly 15
|
||||
.isBefore(type.toOldestUTCDate()!.value)).toList();
|
||||
|
||||
return [...supportedTypes, EmailRecoveryTimeType.customRange];
|
||||
case EmailRecoveryField.receptionDate:
|
||||
return [
|
||||
EmailRecoveryTimeType.allTime,
|
||||
EmailRecoveryTimeType.last7Days,
|
||||
EmailRecoveryTimeType.last30Days,
|
||||
EmailRecoveryTimeType.last6Months,
|
||||
EmailRecoveryTimeType.lastYear,
|
||||
EmailRecoveryTimeType.customRange,
|
||||
];
|
||||
default:
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
TextStyle getTitleTextStyle() {
|
||||
return ThemeUtils.defaultTextStyleInterFont.copyWith(
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: AppColor.colorContentEmail,
|
||||
);
|
||||
}
|
||||
|
||||
TextStyle getHintTextStyle() {
|
||||
final Color color;
|
||||
switch (this) {
|
||||
case EmailRecoveryField.deletionDate:
|
||||
case EmailRecoveryField.receptionDate:
|
||||
color = Colors.black;
|
||||
break;
|
||||
case EmailRecoveryField.subject:
|
||||
case EmailRecoveryField.recipients:
|
||||
case EmailRecoveryField.sender:
|
||||
color = AppColor.colorHintSearchBar;
|
||||
break;
|
||||
}
|
||||
return ThemeUtils.defaultTextStyleInterFont.copyWith(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: color,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,105 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/datetime_extension.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
||||
|
||||
enum EmailRecoveryTimeType {
|
||||
allTime,
|
||||
last7Days,
|
||||
last15Days,
|
||||
last30Days,
|
||||
last6Months,
|
||||
last1Year,
|
||||
lastYear,
|
||||
customRange;
|
||||
|
||||
String getTitle(BuildContext context, {DateTime? startDate, DateTime? endDate}) {
|
||||
switch(this) {
|
||||
case EmailRecoveryTimeType.allTime:
|
||||
return AppLocalizations.of(context).allTime;
|
||||
case EmailRecoveryTimeType.last7Days:
|
||||
return AppLocalizations.of(context).last7Days;
|
||||
case EmailRecoveryTimeType.last15Days:
|
||||
return AppLocalizations.of(context).last15Days;
|
||||
case EmailRecoveryTimeType.last30Days:
|
||||
return AppLocalizations.of(context).last30Days;
|
||||
case EmailRecoveryTimeType.last6Months:
|
||||
return AppLocalizations.of(context).last6Months;
|
||||
case EmailRecoveryTimeType.last1Year:
|
||||
return AppLocalizations.of(context).last1Year;
|
||||
case EmailRecoveryTimeType.lastYear:
|
||||
return AppLocalizations.of(context).lastYears;
|
||||
case EmailRecoveryTimeType.customRange:
|
||||
if (startDate != null && endDate != null) {
|
||||
final startDateString = startDate.formatDate(pattern: 'yyyy-dd-MM');
|
||||
final endDateString = endDate.formatDate(pattern: 'yyyy-dd-MM');
|
||||
return AppLocalizations.of(context).dateRangeAdvancedSearchFilter(
|
||||
startDateString,
|
||||
endDateString
|
||||
);
|
||||
} else {
|
||||
return AppLocalizations.of(context).customRange;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
UTCDate? toOldestUTCDate() {
|
||||
switch(this) {
|
||||
case EmailRecoveryTimeType.last7Days:
|
||||
final today = DateTime.now();
|
||||
final last7Days = today.subtract(const Duration(days: 7));
|
||||
return last7Days.toUTCDate();
|
||||
case EmailRecoveryTimeType.last15Days:
|
||||
final today = DateTime.now();
|
||||
final last15Days = today.subtract(const Duration(days: 15));
|
||||
return last15Days.toUTCDate();
|
||||
case EmailRecoveryTimeType.last30Days:
|
||||
final today = DateTime.now();
|
||||
final last30Days = today.subtract(const Duration(days: 30));
|
||||
return last30Days.toUTCDate();
|
||||
case EmailRecoveryTimeType.last6Months:
|
||||
final today = DateTime.now();
|
||||
final last6months = DateTime(today.year, today.month - 6, today.day);
|
||||
return last6months.toUTCDate();
|
||||
case EmailRecoveryTimeType.last1Year:
|
||||
case EmailRecoveryTimeType.lastYear:
|
||||
final today = DateTime.now();
|
||||
final lastYear = DateTime(today.year - 1, today.month, today.day);
|
||||
return lastYear.toUTCDate();
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
UTCDate? toLatestUTCDate() {
|
||||
switch(this) {
|
||||
case EmailRecoveryTimeType.last7Days:
|
||||
case EmailRecoveryTimeType.last15Days:
|
||||
case EmailRecoveryTimeType.last30Days:
|
||||
case EmailRecoveryTimeType.last6Months:
|
||||
case EmailRecoveryTimeType.last1Year:
|
||||
case EmailRecoveryTimeType.lastYear:
|
||||
final today = DateTime.now();
|
||||
return today.toUTCDate();
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
UTCDate? getAfterDate(UTCDate? startDate) {
|
||||
if (startDate != null) {
|
||||
return startDate;
|
||||
} else {
|
||||
return toOldestUTCDate();
|
||||
}
|
||||
}
|
||||
|
||||
UTCDate? getBeforeDate(UTCDate? endDate) {
|
||||
if (endDate != null) {
|
||||
return endDate;
|
||||
} else {
|
||||
return toLatestUTCDate();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user