TF-2101 Update email_recovery controller to handle restore
(cherry picked from commit 1e6834686534f108e8e09704d047aaf8c1986408)
This commit is contained in:
@@ -1,12 +1,15 @@
|
|||||||
import 'package:core/presentation/utils/keyboard_utils.dart';
|
import 'package:core/presentation/utils/keyboard_utils.dart';
|
||||||
import 'package:core/utils/app_logger.dart';
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:core/utils/platform_info.dart';
|
import 'package:core/utils/platform_info.dart';
|
||||||
|
import 'package:email_recovery/email_recovery/email_recovery_action.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||||
import 'package:model/autocomplete/auto_complete_pattern.dart';
|
import 'package:model/autocomplete/auto_complete_pattern.dart';
|
||||||
|
import 'package:model/extensions/email_address_extension.dart';
|
||||||
import 'package:model/mailbox/expand_mode.dart';
|
import 'package:model/mailbox/expand_mode.dart';
|
||||||
import 'package:permission_handler/permission_handler.dart';
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
import 'package:super_tag_editor/tag_editor.dart';
|
import 'package:super_tag_editor/tag_editor.dart';
|
||||||
@@ -22,6 +25,7 @@ import 'package:tmail_ui_user/features/email_recovery/presentation/controller/in
|
|||||||
import 'package:tmail_ui_user/features/email_recovery/presentation/model/email_recovery_arguments.dart';
|
import 'package:tmail_ui_user/features/email_recovery/presentation/model/email_recovery_arguments.dart';
|
||||||
import 'package:tmail_ui_user/features/email_recovery/presentation/model/email_recovery_field.dart';
|
import 'package:tmail_ui_user/features/email_recovery/presentation/model/email_recovery_field.dart';
|
||||||
import 'package:tmail_ui_user/features/email_recovery/presentation/model/email_recovery_time_type.dart';
|
import 'package:tmail_ui_user/features/email_recovery/presentation/model/email_recovery_time_type.dart';
|
||||||
|
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/datetime_extension.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
|
|
||||||
class EmailRecoveryController extends BaseController with DateRangePickerMixin {
|
class EmailRecoveryController extends BaseController with DateRangePickerMixin {
|
||||||
@@ -35,6 +39,7 @@ class EmailRecoveryController extends BaseController with DateRangePickerMixin {
|
|||||||
final endDeletionDate = Rxn<DateTime>();
|
final endDeletionDate = Rxn<DateTime>();
|
||||||
final startReceptionDate = Rxn<DateTime>();
|
final startReceptionDate = Rxn<DateTime>();
|
||||||
final endReceptionDate = Rxn<DateTime>();
|
final endReceptionDate = Rxn<DateTime>();
|
||||||
|
final hasAttachment = false.obs;
|
||||||
final recipientsExpandMode = ExpandMode.EXPAND.obs;
|
final recipientsExpandMode = ExpandMode.EXPAND.obs;
|
||||||
final senderExpandMode = ExpandMode.EXPAND.obs;
|
final senderExpandMode = ExpandMode.EXPAND.obs;
|
||||||
|
|
||||||
@@ -210,6 +215,10 @@ class EmailRecoveryController extends BaseController with DateRangePickerMixin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void onChangeHasAttachment(bool? value) {
|
||||||
|
hasAttachment.value = value ?? false;
|
||||||
|
}
|
||||||
|
|
||||||
Future<List<EmailAddress>> getAutoCompleteSuggestion(String word) async {
|
Future<List<EmailAddress>> getAutoCompleteSuggestion(String word) async {
|
||||||
log('EmailRecoveryController::getAutoCompleteSuggestion(): $word | $_contactSuggestionSource');
|
log('EmailRecoveryController::getAutoCompleteSuggestion(): $word | $_contactSuggestionSource');
|
||||||
_getAllAutoCompleteInteractor = getBinding<GetAllAutoCompleteInteractor>();
|
_getAllAutoCompleteInteractor = getBinding<GetAllAutoCompleteInteractor>();
|
||||||
@@ -285,6 +294,45 @@ class EmailRecoveryController extends BaseController with DateRangePickerMixin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void onRestore(BuildContext context) {
|
||||||
|
KeyboardUtils.hideKeyboard(context);
|
||||||
|
|
||||||
|
final UTCDate? deletedBefore;
|
||||||
|
final UTCDate? deletedAfter;
|
||||||
|
final UTCDate? receivedBefore;
|
||||||
|
final UTCDate? receivedAfter;
|
||||||
|
if (deletionDateFieldSelected.value == EmailRecoveryTimeType.customRange) {
|
||||||
|
deletedBefore = endDeletionDate.value?.toUTCDate();
|
||||||
|
deletedAfter = startDeletionDate.value?.toUTCDate();
|
||||||
|
receivedBefore = endReceptionDate.value?.toUTCDate();
|
||||||
|
receivedAfter = startReceptionDate.value?.toUTCDate();
|
||||||
|
} else {
|
||||||
|
deletedBefore = DateTime.now().toUTCDate();
|
||||||
|
deletedAfter = deletionDateFieldSelected.value.toOldestUTCDate();
|
||||||
|
receivedBefore = DateTime.now().toUTCDate();
|
||||||
|
receivedAfter = receptionDateFieldSelected.value.toOldestUTCDate();
|
||||||
|
}
|
||||||
|
|
||||||
|
final emailRecoveryAction = EmailRecoveryAction(
|
||||||
|
deletedBefore: deletedBefore,
|
||||||
|
deletedAfter: deletedAfter,
|
||||||
|
receivedBefore: receivedBefore,
|
||||||
|
receivedAfter: receivedAfter,
|
||||||
|
hasAttachment: hasAttachment.value,
|
||||||
|
subject: subjectFieldInputController.text,
|
||||||
|
recipients: listRecipients.isNotEmpty ?
|
||||||
|
listRecipients.map((emailAddress) => emailAddress.emailAddress).toList()
|
||||||
|
: null,
|
||||||
|
sender: listSenders.isNotEmpty ?
|
||||||
|
listSenders.first.emailAddress
|
||||||
|
: null
|
||||||
|
);
|
||||||
|
|
||||||
|
log('EmailRecoveryController::onRestore(): emailRecoveryAction: $emailRecoveryAction');
|
||||||
|
|
||||||
|
popBack(result: emailRecoveryAction);
|
||||||
|
}
|
||||||
|
|
||||||
void closeView(BuildContext context) {
|
void closeView(BuildContext context) {
|
||||||
KeyboardUtils.hideKeyboard(context);
|
KeyboardUtils.hideKeyboard(context);
|
||||||
popBack();
|
popBack();
|
||||||
|
|||||||
Reference in New Issue
Block a user