TF-3219 display limits of email recovery in a yellow banner and filter out invalid suggestions

This commit is contained in:
Florent Azavant
2024-11-14 15:13:56 +01:00
committed by Dat H. Pham
parent 2fcb5f03d0
commit 68e9fc2f16
15 changed files with 270 additions and 13 deletions
@@ -0,0 +1,42 @@
import 'package:duration/duration.dart';
import 'package:email_recovery/email_recovery/capability_deleted_messages_vault.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:model/extensions/session_extension.dart';
extension SessionExtension on Session {
String getRestorationHorizonAsString() {
String restorationHorizon = 'restorationHorizon';
String defaultHorizon = "15 days";
return (getCapabilityProperties(accountId, capabilityDeletedMessagesVault)
?.props[0] as Map<String, dynamic>?)
?[restorationHorizon]
?? defaultHorizon;
}
Duration getRestorationHorizonAsDuration() {
try {
String horizonWithCorrectFormat = getRestorationHorizonAsString()
.replaceAll(" days", "d")
.replaceAll(" day", "d")
.replaceAll(" hours", "h")
.replaceAll(" hour", "h")
.replaceAll(" minutes", "m")
.replaceAll(" minute", "m")
.replaceAll(" seconds", "s")
.replaceAll(" second", "s")
.replaceAll(" milliseconds", "ms")
.replaceAll(" millisecond", "ms");
return parseDuration(horizonWithCorrectFormat, separator: ' ');
} catch (e) {
return const Duration(days: 15);
}
}
DateTime getRestorationHorizonAsDateTime() {
return DateTime.now().subtract(getRestorationHorizonAsDuration());
}
}