TF-2101 Add email_recovery_time_type enum
(cherry picked from commit a11e33c33208d07d7c18115cec9ec48fe0799a0d)
This commit is contained in:
@@ -0,0 +1,97 @@
|
|||||||
|
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,
|
||||||
|
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.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.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.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