TF-2101 Handle restore deleted messages

(cherry picked from commit e675f98a6c85d9c4a90efc686e6ff72d23b4c678)
This commit is contained in:
hieubt
2023-12-21 16:56:06 +07:00
committed by Dat H. Pham
parent 4f6b500fa0
commit 71dc206ccd
30 changed files with 457 additions and 99 deletions
@@ -297,10 +297,10 @@ 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;
UTCDate? deletedBefore;
UTCDate? deletedAfter;
UTCDate? receivedBefore;
UTCDate? receivedAfter;
if (deletionDateFieldSelected.value == EmailRecoveryTimeType.customRange) {
deletedBefore = endDeletionDate.value?.toUTCDate();
deletedAfter = startDeletionDate.value?.toUTCDate();
@@ -343,6 +343,9 @@ class EmailRecoveryController extends BaseController with DateRangePickerMixin {
focusManager.subjectFieldFocusNode.removeListener(_onSubjectFieldFocusChanged);
focusManager.recipientsFieldFocusNode.removeListener(_onRecipientsFieldFocusChanged);
focusManager.senderFieldFocusNode.removeListener(_onSenderFieldFocusChanged);
subjectFieldInputController.dispose();
recipientsFieldInputController.dispose();
senderFieldInputController.dispose();
focusManager.dispose();
super.dispose();
}
@@ -109,7 +109,6 @@ class EmailRecoveryFormDesktopBuilder extends GetWidget<EmailRecoveryController>
Obx(() => CheckBoxHasAttachmentWidget(
hasAttachmentValue: controller.hasAttachment.value,
currentFocusNode: controller.focusManager.attachmentCheckboxFocusNode,
nextFocusNode: controller.focusManager.createButtonFocusNode,
onChanged: (value) => controller.onChangeHasAttachment(value),
)),
SizedBox(width: controller.responsiveUtils.getDeviceWidth(context) * 0.04),
@@ -94,7 +94,6 @@ class EmailRecoveryFormMobileBuilder extends GetWidget<EmailRecoveryController>
Obx(() => CheckBoxHasAttachmentWidget(
hasAttachmentValue: controller.hasAttachment.value,
currentFocusNode: controller.focusManager.attachmentCheckboxFocusNode,
nextFocusNode: controller.focusManager.deletionDateFieldFocusNode,
onChanged: (value) => controller.onChangeHasAttachment(value),
))
],
@@ -107,7 +107,6 @@ class EmailRecoveryFormTabletBuilder extends GetWidget<EmailRecoveryController>
Obx(() => CheckBoxHasAttachmentWidget(
hasAttachmentValue: controller.hasAttachment.value,
currentFocusNode: controller.focusManager.attachmentCheckboxFocusNode,
nextFocusNode: controller.focusManager.deletionDateFieldFocusNode,
onChanged: (value) => controller.onChangeHasAttachment(value),
)),
SizedBox(width: controller.responsiveUtils.getDeviceWidth(context) * 0.04),
@@ -1,5 +1,5 @@
import 'package:core/core.dart';
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/extensions/string_extension.dart';
import 'package:flutter/material.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:model/model.dart';
@@ -15,7 +15,7 @@ import 'package:tmail_ui_user/features/email_recovery/presentation/styles/text_i
import 'package:tmail_ui_user/features/email_recovery/presentation/widgets/text_input_field/suggestion_item_widget.dart';
import 'package:tmail_ui_user/features/email_recovery/presentation/widgets/text_input_field/suggestion_tag_item_widget.dart';
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/suggesstion_email_address.dart';
import 'package:tmail_ui_user/main/utils/app_constants.dart';
import 'package:tmail_ui_user/main/utils/app_config.dart';
typedef OnSuggestionEmailAddress = Future<List<EmailAddress>> Function(String word);
typedef OnUpdateListEmailAddressAction = void Function(EmailRecoveryField field, List<EmailAddress> newDate);
@@ -325,7 +325,7 @@ class _TextInputFieldSuggestionWidgetState extends State<TextInputFieldSuggestio
final tmailSuggestion = List<SuggestionEmailAddress>.empty(growable: true);
if (
processedQuery.length >= AppConstants.limitCharToStartSearch
processedQuery.length >= AppConfig.limitCharToStartSearch
&& widget.onSuggestionEmailAddress != null
) {
final listEmailAddress = await widget.onSuggestionEmailAddress!(processedQuery);