TF-3226 Apply minInputLength on autocomplete capability to app
This commit is contained in:
@@ -124,6 +124,9 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
listEmailAddress: controller.listToEmailAddress,
|
listEmailAddress: controller.listToEmailAddress,
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
fromState: controller.fromRecipientState.value,
|
fromState: controller.fromRecipientState.value,
|
||||||
ccState: controller.ccRecipientState.value,
|
ccState: controller.ccRecipientState.value,
|
||||||
bccState: controller.bccRecipientState.value,
|
bccState: controller.bccRecipientState.value,
|
||||||
@@ -150,6 +153,9 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
listEmailAddress: controller.listCcEmailAddress,
|
listEmailAddress: controller.listCcEmailAddress,
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
expandMode: controller.ccAddressExpandMode.value,
|
expandMode: controller.ccAddressExpandMode.value,
|
||||||
controller: controller.ccEmailAddressController,
|
controller: controller.ccEmailAddressController,
|
||||||
focusNode: controller.ccAddressFocusNode,
|
focusNode: controller.ccAddressFocusNode,
|
||||||
@@ -176,6 +182,9 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
listEmailAddress: controller.listBccEmailAddress,
|
listEmailAddress: controller.listBccEmailAddress,
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
expandMode: controller.bccAddressExpandMode.value,
|
expandMode: controller.bccAddressExpandMode.value,
|
||||||
controller: controller.bccEmailAddressController,
|
controller: controller.bccEmailAddressController,
|
||||||
focusNode: controller.bccAddressFocusNode,
|
focusNode: controller.bccAddressFocusNode,
|
||||||
@@ -280,6 +289,9 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
listEmailAddress: controller.listToEmailAddress,
|
listEmailAddress: controller.listToEmailAddress,
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
fromState: controller.fromRecipientState.value,
|
fromState: controller.fromRecipientState.value,
|
||||||
ccState: controller.ccRecipientState.value,
|
ccState: controller.ccRecipientState.value,
|
||||||
bccState: controller.bccRecipientState.value,
|
bccState: controller.bccRecipientState.value,
|
||||||
@@ -305,6 +317,9 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
listEmailAddress: controller.listCcEmailAddress,
|
listEmailAddress: controller.listCcEmailAddress,
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
expandMode: controller.ccAddressExpandMode.value,
|
expandMode: controller.ccAddressExpandMode.value,
|
||||||
controller: controller.ccEmailAddressController,
|
controller: controller.ccEmailAddressController,
|
||||||
focusNode: controller.ccAddressFocusNode,
|
focusNode: controller.ccAddressFocusNode,
|
||||||
@@ -326,6 +341,9 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
listEmailAddress: controller.listBccEmailAddress,
|
listEmailAddress: controller.listBccEmailAddress,
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
expandMode: controller.bccAddressExpandMode.value,
|
expandMode: controller.bccAddressExpandMode.value,
|
||||||
controller: controller.bccEmailAddressController,
|
controller: controller.bccEmailAddressController,
|
||||||
focusNode: controller.bccAddressFocusNode,
|
focusNode: controller.bccAddressFocusNode,
|
||||||
|
|||||||
@@ -89,6 +89,9 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
listEmailAddress: controller.listToEmailAddress,
|
listEmailAddress: controller.listToEmailAddress,
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
fromState: controller.fromRecipientState.value,
|
fromState: controller.fromRecipientState.value,
|
||||||
ccState: controller.ccRecipientState.value,
|
ccState: controller.ccRecipientState.value,
|
||||||
bccState: controller.bccRecipientState.value,
|
bccState: controller.bccRecipientState.value,
|
||||||
@@ -115,6 +118,9 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
listEmailAddress: controller.listCcEmailAddress,
|
listEmailAddress: controller.listCcEmailAddress,
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
expandMode: controller.ccAddressExpandMode.value,
|
expandMode: controller.ccAddressExpandMode.value,
|
||||||
controller: controller.ccEmailAddressController,
|
controller: controller.ccEmailAddressController,
|
||||||
focusNode: controller.ccAddressFocusNode,
|
focusNode: controller.ccAddressFocusNode,
|
||||||
@@ -138,6 +144,9 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
listEmailAddress: controller.listBccEmailAddress,
|
listEmailAddress: controller.listBccEmailAddress,
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
expandMode: controller.bccAddressExpandMode.value,
|
expandMode: controller.bccAddressExpandMode.value,
|
||||||
controller: controller.bccEmailAddressController,
|
controller: controller.bccEmailAddressController,
|
||||||
focusNode: controller.bccAddressFocusNode,
|
focusNode: controller.bccAddressFocusNode,
|
||||||
@@ -328,6 +337,9 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
listEmailAddress: controller.listToEmailAddress,
|
listEmailAddress: controller.listToEmailAddress,
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
fromState: controller.fromRecipientState.value,
|
fromState: controller.fromRecipientState.value,
|
||||||
ccState: controller.ccRecipientState.value,
|
ccState: controller.ccRecipientState.value,
|
||||||
bccState: controller.bccRecipientState.value,
|
bccState: controller.bccRecipientState.value,
|
||||||
@@ -354,6 +366,9 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
listEmailAddress: controller.listCcEmailAddress,
|
listEmailAddress: controller.listCcEmailAddress,
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
expandMode: controller.ccAddressExpandMode.value,
|
expandMode: controller.ccAddressExpandMode.value,
|
||||||
controller: controller.ccEmailAddressController,
|
controller: controller.ccEmailAddressController,
|
||||||
focusNode: controller.ccAddressFocusNode,
|
focusNode: controller.ccAddressFocusNode,
|
||||||
@@ -377,6 +392,9 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
listEmailAddress: controller.listBccEmailAddress,
|
listEmailAddress: controller.listBccEmailAddress,
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
expandMode: controller.bccAddressExpandMode.value,
|
expandMode: controller.bccAddressExpandMode.value,
|
||||||
controller: controller.bccEmailAddressController,
|
controller: controller.bccEmailAddressController,
|
||||||
focusNode: controller.bccAddressFocusNode,
|
focusNode: controller.bccAddressFocusNode,
|
||||||
@@ -600,6 +618,9 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
listEmailAddress: controller.listToEmailAddress,
|
listEmailAddress: controller.listToEmailAddress,
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
fromState: controller.fromRecipientState.value,
|
fromState: controller.fromRecipientState.value,
|
||||||
ccState: controller.ccRecipientState.value,
|
ccState: controller.ccRecipientState.value,
|
||||||
bccState: controller.bccRecipientState.value,
|
bccState: controller.bccRecipientState.value,
|
||||||
@@ -626,6 +647,9 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
listEmailAddress: controller.listCcEmailAddress,
|
listEmailAddress: controller.listCcEmailAddress,
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
expandMode: controller.ccAddressExpandMode.value,
|
expandMode: controller.ccAddressExpandMode.value,
|
||||||
controller: controller.ccEmailAddressController,
|
controller: controller.ccEmailAddressController,
|
||||||
focusNode: controller.ccAddressFocusNode,
|
focusNode: controller.ccAddressFocusNode,
|
||||||
@@ -649,6 +673,9 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
listEmailAddress: controller.listBccEmailAddress,
|
listEmailAddress: controller.listBccEmailAddress,
|
||||||
imagePaths: controller.imagePaths,
|
imagePaths: controller.imagePaths,
|
||||||
maxWidth: constraints.maxWidth,
|
maxWidth: constraints.maxWidth,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
expandMode: controller.bccAddressExpandMode.value,
|
expandMode: controller.bccAddressExpandMode.value,
|
||||||
controller: controller.bccEmailAddressController,
|
controller: controller.bccEmailAddressController,
|
||||||
focusNode: controller.bccAddressFocusNode,
|
focusNode: controller.bccAddressFocusNode,
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ class RecipientComposerWidget extends StatefulWidget {
|
|||||||
final EdgeInsetsGeometry? margin;
|
final EdgeInsetsGeometry? margin;
|
||||||
final OnEnableAllRecipientsInputAction? onEnableAllRecipientsInputAction;
|
final OnEnableAllRecipientsInputAction? onEnableAllRecipientsInputAction;
|
||||||
final bool isTestingForWeb;
|
final bool isTestingForWeb;
|
||||||
|
final int minInputLengthAutocomplete;
|
||||||
|
|
||||||
const RecipientComposerWidget({
|
const RecipientComposerWidget({
|
||||||
super.key,
|
super.key,
|
||||||
@@ -71,6 +72,7 @@ class RecipientComposerWidget extends StatefulWidget {
|
|||||||
required this.listEmailAddress,
|
required this.listEmailAddress,
|
||||||
required this.imagePaths,
|
required this.imagePaths,
|
||||||
required this.maxWidth,
|
required this.maxWidth,
|
||||||
|
this.minInputLengthAutocomplete = AppConfig.defaultMinInputLengthAutocomplete,
|
||||||
@visibleForTesting this.isTestingForWeb = false,
|
@visibleForTesting this.isTestingForWeb = false,
|
||||||
this.ccState = PrefixRecipientState.disabled,
|
this.ccState = PrefixRecipientState.disabled,
|
||||||
this.bccState = PrefixRecipientState.disabled,
|
this.bccState = PrefixRecipientState.disabled,
|
||||||
@@ -410,10 +412,13 @@ class _RecipientComposerWidgetState extends State<RecipientComposerWidget> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final tmailSuggestion = List<SuggestionEmailAddress>.empty(growable: true);
|
final tmailSuggestion = List<SuggestionEmailAddress>.empty(growable: true);
|
||||||
if (processedQuery.length >= AppConfig.limitCharToStartSearch &&
|
if (processedQuery.length >= widget.minInputLengthAutocomplete &&
|
||||||
widget.onSuggestionEmailAddress != null) {
|
widget.onSuggestionEmailAddress != null) {
|
||||||
final listEmailAddress = await widget.onSuggestionEmailAddress!(processedQuery);
|
final listEmailAddress = await widget.onSuggestionEmailAddress!(processedQuery);
|
||||||
final listSuggestionEmailAddress = listEmailAddress.map((emailAddress) => _toSuggestionEmailAddress(emailAddress, _currentListEmailAddress));
|
final listSuggestionEmailAddress = listEmailAddress
|
||||||
|
.map((emailAddress) => _toSuggestionEmailAddress(
|
||||||
|
emailAddress,
|
||||||
|
_currentListEmailAddress));
|
||||||
tmailSuggestion.addAll(listSuggestionEmailAddress);
|
tmailSuggestion.addAll(listSuggestionEmailAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ class ContactController extends BaseController with AutoCompleteResultMixin {
|
|||||||
VoidCallback? onDismissContactView;
|
VoidCallback? onDismissContactView;
|
||||||
StreamSubscription<String>? _deBouncerTimeStreamSubscription;
|
StreamSubscription<String>? _deBouncerTimeStreamSubscription;
|
||||||
|
|
||||||
|
late int _minInputLengthAutocomplete;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onInit() {
|
void onInit() {
|
||||||
super.onInit();
|
super.onInit();
|
||||||
@@ -79,6 +81,7 @@ class ContactController extends BaseController with AutoCompleteResultMixin {
|
|||||||
textInputSearchFocus.requestFocus();
|
textInputSearchFocus.requestFocus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_minInputLengthAutocomplete = _fetchMinInputLengthAutocomplete();
|
||||||
if (PlatformInfo.isMobile) {
|
if (PlatformInfo.isMobile) {
|
||||||
Future.delayed(
|
Future.delayed(
|
||||||
const Duration(milliseconds: 500),
|
const Duration(milliseconds: 500),
|
||||||
@@ -95,6 +98,7 @@ class ContactController extends BaseController with AutoCompleteResultMixin {
|
|||||||
textInputSearchController.dispose();
|
textInputSearchController.dispose();
|
||||||
_deBouncerTimeStreamSubscription?.cancel();
|
_deBouncerTimeStreamSubscription?.cancel();
|
||||||
_deBouncerTime.cancel();
|
_deBouncerTime.cancel();
|
||||||
|
_accountId = null;
|
||||||
super.onClose();
|
super.onClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,7 +119,7 @@ class ContactController extends BaseController with AutoCompleteResultMixin {
|
|||||||
Future<void> _handleDeBounceTimeSearchContact(String value) async {
|
Future<void> _handleDeBounceTimeSearchContact(String value) async {
|
||||||
final queryStringTrimmed = value.trim();
|
final queryStringTrimmed = value.trim();
|
||||||
|
|
||||||
if (queryStringTrimmed.length < AppConfig.limitCharToStartSearch) {
|
if (queryStringTrimmed.length < _minInputLengthAutocomplete) {
|
||||||
searchStatus.value = SearchStatus.INACTIVE;
|
searchStatus.value = SearchStatus.INACTIVE;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -235,4 +239,13 @@ class ContactController extends BaseController with AutoCompleteResultMixin {
|
|||||||
FocusManager.instance.primaryFocus?.unfocus();
|
FocusManager.instance.primaryFocus?.unfocus();
|
||||||
searchStatus.value = SearchStatus.INACTIVE;
|
searchStatus.value = SearchStatus.INACTIVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int _fetchMinInputLengthAutocomplete() {
|
||||||
|
if (contactArguments.value?.session == null || _accountId == null) {
|
||||||
|
return AppConfig.defaultMinInputLengthAutocomplete;
|
||||||
|
}
|
||||||
|
return getMinInputLengthAutocomplete(
|
||||||
|
session: contactArguments.value!.session,
|
||||||
|
accountId: _accountId!);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -27,6 +27,7 @@ import 'package:tmail_ui_user/features/email_recovery/presentation/model/email_r
|
|||||||
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/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';
|
||||||
|
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||||
|
|
||||||
class EmailRecoveryController extends BaseController with DateRangePickerMixin {
|
class EmailRecoveryController extends BaseController with DateRangePickerMixin {
|
||||||
GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor;
|
GetAllAutoCompleteInteractor? _getAllAutoCompleteInteractor;
|
||||||
@@ -87,6 +88,15 @@ class EmailRecoveryController extends BaseController with DateRangePickerMixin {
|
|||||||
super.onReady();
|
super.onReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int get minInputLengthAutocomplete {
|
||||||
|
if (_session == null || _accountId == null) {
|
||||||
|
return AppConfig.defaultMinInputLengthAutocomplete;
|
||||||
|
}
|
||||||
|
return getMinInputLengthAutocomplete(
|
||||||
|
session: _session!,
|
||||||
|
accountId: _accountId!);
|
||||||
|
}
|
||||||
|
|
||||||
void _checkContactPermission() async {
|
void _checkContactPermission() async {
|
||||||
final permissionStatus = await Permission.contacts.status;
|
final permissionStatus = await Permission.contacts.status;
|
||||||
if (permissionStatus.isGranted) {
|
if (permissionStatus.isGranted) {
|
||||||
|
|||||||
+2
@@ -75,6 +75,7 @@ class EmailRecoveryFormDesktopBuilder extends GetWidget<EmailRecoveryController>
|
|||||||
listEmailAddress: controller.listRecipients,
|
listEmailAddress: controller.listRecipients,
|
||||||
responsiveUtils: controller.responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
expandMode: controller.recipientsExpandMode.value,
|
expandMode: controller.recipientsExpandMode.value,
|
||||||
|
minInputLengthAutocomplete: controller.minInputLengthAutocomplete,
|
||||||
textEditingController: controller.recipientsFieldInputController,
|
textEditingController: controller.recipientsFieldInputController,
|
||||||
focusNode: controller.focusManager.recipientsFieldFocusNode,
|
focusNode: controller.focusManager.recipientsFieldFocusNode,
|
||||||
nextFocusNode: controller.listSenders.length != 1
|
nextFocusNode: controller.listSenders.length != 1
|
||||||
@@ -90,6 +91,7 @@ class EmailRecoveryFormDesktopBuilder extends GetWidget<EmailRecoveryController>
|
|||||||
listEmailAddress: controller.listSenders,
|
listEmailAddress: controller.listSenders,
|
||||||
responsiveUtils: controller.responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
expandMode: controller.senderExpandMode.value,
|
expandMode: controller.senderExpandMode.value,
|
||||||
|
minInputLengthAutocomplete: controller.minInputLengthAutocomplete,
|
||||||
textEditingController: controller.senderFieldInputController,
|
textEditingController: controller.senderFieldInputController,
|
||||||
focusNode: controller.focusManager.senderFieldFocusNode,
|
focusNode: controller.focusManager.senderFieldFocusNode,
|
||||||
nextFocusNode: controller.focusManager.attachmentCheckboxFocusNode,
|
nextFocusNode: controller.focusManager.attachmentCheckboxFocusNode,
|
||||||
|
|||||||
+2
@@ -73,6 +73,7 @@ class EmailRecoveryFormMobileBuilder extends GetWidget<EmailRecoveryController>
|
|||||||
focusNode: controller.focusManager.recipientsFieldFocusNode,
|
focusNode: controller.focusManager.recipientsFieldFocusNode,
|
||||||
nextFocusNode: controller.focusManager.senderFieldFocusNode,
|
nextFocusNode: controller.focusManager.senderFieldFocusNode,
|
||||||
expandMode: controller.recipientsExpandMode.value,
|
expandMode: controller.recipientsExpandMode.value,
|
||||||
|
minInputLengthAutocomplete: controller.minInputLengthAutocomplete,
|
||||||
textEditingController: controller.recipientsFieldInputController,
|
textEditingController: controller.recipientsFieldInputController,
|
||||||
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
||||||
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
|
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
|
||||||
@@ -86,6 +87,7 @@ class EmailRecoveryFormMobileBuilder extends GetWidget<EmailRecoveryController>
|
|||||||
focusNode: controller.focusManager.senderFieldFocusNode,
|
focusNode: controller.focusManager.senderFieldFocusNode,
|
||||||
nextFocusNode: controller.focusManager.attachmentCheckboxFocusNode,
|
nextFocusNode: controller.focusManager.attachmentCheckboxFocusNode,
|
||||||
expandMode: controller.senderExpandMode.value,
|
expandMode: controller.senderExpandMode.value,
|
||||||
|
minInputLengthAutocomplete: controller.minInputLengthAutocomplete,
|
||||||
textEditingController: controller.senderFieldInputController,
|
textEditingController: controller.senderFieldInputController,
|
||||||
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
onShowFullListEmailAddressAction: controller.showFullEmailAddress,
|
||||||
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
|
onUpdateListEmailAddressAction: controller.updateListEmailAddress,
|
||||||
|
|||||||
+2
@@ -75,6 +75,7 @@ class EmailRecoveryFormTabletBuilder extends GetWidget<EmailRecoveryController>
|
|||||||
listEmailAddress: controller.listRecipients,
|
listEmailAddress: controller.listRecipients,
|
||||||
responsiveUtils: controller.responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
expandMode: controller.recipientsExpandMode.value,
|
expandMode: controller.recipientsExpandMode.value,
|
||||||
|
minInputLengthAutocomplete: controller.minInputLengthAutocomplete,
|
||||||
textEditingController: controller.recipientsFieldInputController,
|
textEditingController: controller.recipientsFieldInputController,
|
||||||
focusNode: controller.focusManager.recipientsFieldFocusNode,
|
focusNode: controller.focusManager.recipientsFieldFocusNode,
|
||||||
nextFocusNode: controller.focusManager.senderFieldFocusNode,
|
nextFocusNode: controller.focusManager.senderFieldFocusNode,
|
||||||
@@ -88,6 +89,7 @@ class EmailRecoveryFormTabletBuilder extends GetWidget<EmailRecoveryController>
|
|||||||
listEmailAddress: controller.listSenders,
|
listEmailAddress: controller.listSenders,
|
||||||
responsiveUtils: controller.responsiveUtils,
|
responsiveUtils: controller.responsiveUtils,
|
||||||
expandMode: controller.senderExpandMode.value,
|
expandMode: controller.senderExpandMode.value,
|
||||||
|
minInputLengthAutocomplete: controller.minInputLengthAutocomplete,
|
||||||
textEditingController: controller.senderFieldInputController,
|
textEditingController: controller.senderFieldInputController,
|
||||||
focusNode: controller.focusManager.senderFieldFocusNode,
|
focusNode: controller.focusManager.senderFieldFocusNode,
|
||||||
nextFocusNode: controller.focusManager.attachmentCheckboxFocusNode,
|
nextFocusNode: controller.focusManager.attachmentCheckboxFocusNode,
|
||||||
|
|||||||
+3
-1
@@ -40,6 +40,7 @@ class TextInputFieldSuggestionWidget extends StatefulWidget {
|
|||||||
final OnDeleteTagAction? onDeleteTagAction;
|
final OnDeleteTagAction? onDeleteTagAction;
|
||||||
final TextEditingController? textEditingController;
|
final TextEditingController? textEditingController;
|
||||||
final VoidCallback? onCreateAction;
|
final VoidCallback? onCreateAction;
|
||||||
|
final int minInputLengthAutocomplete;
|
||||||
|
|
||||||
const TextInputFieldSuggestionWidget({
|
const TextInputFieldSuggestionWidget({
|
||||||
super.key,
|
super.key,
|
||||||
@@ -47,6 +48,7 @@ class TextInputFieldSuggestionWidget extends StatefulWidget {
|
|||||||
required this.listEmailAddress,
|
required this.listEmailAddress,
|
||||||
required this.responsiveUtils,
|
required this.responsiveUtils,
|
||||||
this.expandMode = ExpandMode.EXPAND,
|
this.expandMode = ExpandMode.EXPAND,
|
||||||
|
this.minInputLengthAutocomplete = AppConfig.defaultMinInputLengthAutocomplete,
|
||||||
this.focusNode,
|
this.focusNode,
|
||||||
this.keyTagEditor,
|
this.keyTagEditor,
|
||||||
this.nextFocusNode,
|
this.nextFocusNode,
|
||||||
@@ -325,7 +327,7 @@ class _TextInputFieldSuggestionWidgetState extends State<TextInputFieldSuggestio
|
|||||||
|
|
||||||
final tmailSuggestion = List<SuggestionEmailAddress>.empty(growable: true);
|
final tmailSuggestion = List<SuggestionEmailAddress>.empty(growable: true);
|
||||||
if (
|
if (
|
||||||
processedQuery.length >= AppConfig.limitCharToStartSearch
|
processedQuery.length >= widget.minInputLengthAutocomplete
|
||||||
&& widget.onSuggestionEmailAddress != null
|
&& widget.onSuggestionEmailAddress != null
|
||||||
) {
|
) {
|
||||||
final listEmailAddress = await widget.onSuggestionEmailAddress!(processedQuery);
|
final listEmailAddress = await widget.onSuggestionEmailAddress!(processedQuery);
|
||||||
|
|||||||
@@ -98,7 +98,6 @@ class AdvancedFilterController extends BaseController {
|
|||||||
_memorySearchFilter = searchFilter;
|
_memorySearchFilter = searchFilter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@visibleForTesting
|
|
||||||
MailboxDashBoardController get mailboxDashBoardController => _mailboxDashBoardController;
|
MailboxDashBoardController get mailboxDashBoardController => _mailboxDashBoardController;
|
||||||
|
|
||||||
void _updateMemorySearchFilter({
|
void _updateMemorySearchFilter({
|
||||||
|
|||||||
+14
@@ -160,6 +160,7 @@ import 'package:tmail_ui_user/main/routes/navigation_router.dart';
|
|||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||||
import 'package:tmail_ui_user/main/universal_import/html_stub.dart' as html;
|
import 'package:tmail_ui_user/main/universal_import/html_stub.dart' as html;
|
||||||
|
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||||
import 'package:tmail_ui_user/main/utils/email_receive_manager.dart';
|
import 'package:tmail_ui_user/main/utils/email_receive_manager.dart';
|
||||||
import 'package:tmail_ui_user/main/utils/ios_notification_manager.dart';
|
import 'package:tmail_ui_user/main/utils/ios_notification_manager.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
import 'package:uuid/uuid.dart';
|
||||||
@@ -2556,6 +2557,10 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
|
|||||||
return <EmailAddress>[];
|
return <EmailAddress>[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (query.length < minInputLengthAutocomplete) {
|
||||||
|
return <EmailAddress>[];
|
||||||
|
}
|
||||||
|
|
||||||
final listEmailAddress = await _getAutoCompleteInteractor!
|
final listEmailAddress = await _getAutoCompleteInteractor!
|
||||||
.execute(AutoCompletePattern(word: query, accountId: accountId.value!, limit: 2))
|
.execute(AutoCompletePattern(word: query, accountId: accountId.value!, limit: 2))
|
||||||
.then((value) => value.fold(
|
.then((value) => value.fold(
|
||||||
@@ -2908,6 +2913,15 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
|
|||||||
dispatchAction(ClearSearchFilterAppliedAction());
|
dispatchAction(ClearSearchFilterAppliedAction());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int get minInputLengthAutocomplete {
|
||||||
|
if (sessionCurrent == null || accountId.value == null) {
|
||||||
|
return AppConfig.defaultMinInputLengthAutocomplete;
|
||||||
|
}
|
||||||
|
return getMinInputLengthAutocomplete(
|
||||||
|
session: sessionCurrent!,
|
||||||
|
accountId: accountId.value!);
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
if (PlatformInfo.isWeb) {
|
if (PlatformInfo.isWeb) {
|
||||||
|
|||||||
+6
@@ -31,6 +31,9 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
field: AdvancedSearchFilterField.from,
|
field: AdvancedSearchFilterField.from,
|
||||||
listEmailAddress: controller.listFromEmailAddress,
|
listEmailAddress: controller.listFromEmailAddress,
|
||||||
expandMode: controller.fromAddressExpandMode.value,
|
expandMode: controller.fromAddressExpandMode.value,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
controller: controller.fromEmailAddressController,
|
controller: controller.fromEmailAddressController,
|
||||||
focusNode: controller.focusManager.fromFieldFocusNode,
|
focusNode: controller.focusManager.fromFieldFocusNode,
|
||||||
nextFocusNode: controller.focusManager.toFieldFocusNode,
|
nextFocusNode: controller.focusManager.toFieldFocusNode,
|
||||||
@@ -45,6 +48,9 @@ class AdvancedSearchInputForm extends GetWidget<AdvancedFilterController>
|
|||||||
field: AdvancedSearchFilterField.to,
|
field: AdvancedSearchFilterField.to,
|
||||||
listEmailAddress: controller.listToEmailAddress,
|
listEmailAddress: controller.listToEmailAddress,
|
||||||
expandMode: controller.toAddressExpandMode.value,
|
expandMode: controller.toAddressExpandMode.value,
|
||||||
|
minInputLengthAutocomplete: controller
|
||||||
|
.mailboxDashBoardController
|
||||||
|
.minInputLengthAutocomplete,
|
||||||
controller: controller.toEmailAddressController,
|
controller: controller.toEmailAddressController,
|
||||||
focusNode: controller.focusManager.toFieldFocusNode,
|
focusNode: controller.focusManager.toFieldFocusNode,
|
||||||
nextFocusNode: controller.focusManager.subjectFieldFocusNode,
|
nextFocusNode: controller.focusManager.subjectFieldFocusNode,
|
||||||
|
|||||||
+3
-1
@@ -45,12 +45,14 @@ class TextFieldAutocompleteEmailAddressWeb extends StatefulWidget {
|
|||||||
final OnRemoveDraggableEmailAddressAction? onRemoveDraggableEmailAddressAction;
|
final OnRemoveDraggableEmailAddressAction? onRemoveDraggableEmailAddressAction;
|
||||||
final TextEditingController? controller;
|
final TextEditingController? controller;
|
||||||
final VoidCallback? onSearchAction;
|
final VoidCallback? onSearchAction;
|
||||||
|
final int minInputLengthAutocomplete;
|
||||||
|
|
||||||
const TextFieldAutocompleteEmailAddressWeb({
|
const TextFieldAutocompleteEmailAddressWeb({
|
||||||
Key? key,
|
Key? key,
|
||||||
required this.field,
|
required this.field,
|
||||||
required this.listEmailAddress,
|
required this.listEmailAddress,
|
||||||
this.expandMode = ExpandMode.EXPAND,
|
this.expandMode = ExpandMode.EXPAND,
|
||||||
|
this.minInputLengthAutocomplete = AppConfig.defaultMinInputLengthAutocomplete,
|
||||||
this.focusNode,
|
this.focusNode,
|
||||||
this.keyTagEditor,
|
this.keyTagEditor,
|
||||||
this.nextFocusNode,
|
this.nextFocusNode,
|
||||||
@@ -242,7 +244,7 @@ class _TextFieldAutocompleteEmailAddressWebState extends State<TextFieldAutocomp
|
|||||||
}
|
}
|
||||||
|
|
||||||
final tmailSuggestion = List<SuggestionEmailAddress>.empty(growable: true);
|
final tmailSuggestion = List<SuggestionEmailAddress>.empty(growable: true);
|
||||||
if (processedQuery.length >= AppConfig.limitCharToStartSearch &&
|
if (processedQuery.length >= widget.minInputLengthAutocomplete &&
|
||||||
widget.onSuggestionEmailAddress != null) {
|
widget.onSuggestionEmailAddress != null) {
|
||||||
final listEmailAddress = await widget.onSuggestionEmailAddress!(processedQuery);
|
final listEmailAddress = await widget.onSuggestionEmailAddress!(processedQuery);
|
||||||
final listSuggestionEmailAddress = listEmailAddress.map((emailAddress) => _toSuggestionEmailAddress(emailAddress, _currentListEmailAddress));
|
final listSuggestionEmailAddress = listEmailAddress.map((emailAddress) => _toSuggestionEmailAddress(emailAddress, _currentListEmailAddress));
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/qu
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/search_filters/search_filter_button.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/search_filters/search_filter_button.dart';
|
||||||
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
|
||||||
|
|
||||||
class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
||||||
final _searchController = Get.find<search.SearchController>();
|
final _searchController = Get.find<search.SearchController>();
|
||||||
@@ -67,7 +66,7 @@ class SearchInputFormWidget extends StatelessWidget with AppLoaderMixin {
|
|||||||
child: QuickSearchInputForm<PresentationEmail, EmailAddress, RecentSearch>(
|
child: QuickSearchInputForm<PresentationEmail, EmailAddress, RecentSearch>(
|
||||||
maxHeight: 52,
|
maxHeight: 52,
|
||||||
suggestionsBoxVerticalOffset: 0.0,
|
suggestionsBoxVerticalOffset: 0.0,
|
||||||
minInputLengthAutocomplete: AppConfig.limitCharToStartSearch,
|
minInputLengthAutocomplete: _dashBoardController.minInputLengthAutocomplete,
|
||||||
textFieldConfiguration: _createConfiguration(context),
|
textFieldConfiguration: _createConfiguration(context),
|
||||||
suggestionsBoxDecoration: const QuickSearchSuggestionsBoxDecoration(
|
suggestionsBoxDecoration: const QuickSearchSuggestionsBoxDecoration(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
|
|||||||
@@ -127,6 +127,7 @@ class ForwardView extends GetWidget<ForwardController> with AppLoaderMixin {
|
|||||||
return AutocompleteContactTextFieldWithTags(
|
return AutocompleteContactTextFieldWithTags(
|
||||||
listEmailAddress: controller.recipientController.listRecipients,
|
listEmailAddress: controller.recipientController.listRecipients,
|
||||||
internalDomain: controller.accountDashBoardController.sessionCurrent?.internalDomain ?? '',
|
internalDomain: controller.accountDashBoardController.sessionCurrent?.internalDomain ?? '',
|
||||||
|
minInputLengthAutocomplete: controller.accountDashBoardController.minInputLengthAutocomplete,
|
||||||
controller: controller.recipientController.inputRecipientController,
|
controller: controller.recipientController.inputRecipientController,
|
||||||
onSuggestionCallback: controller.recipientController.getAutoCompleteSuggestion,
|
onSuggestionCallback: controller.recipientController.getAutoCompleteSuggestion,
|
||||||
hasAddContactButton: true,
|
hasAddContactButton: true,
|
||||||
|
|||||||
+6
-1
@@ -39,6 +39,7 @@ class AutocompleteContactTextFieldWithTags extends StatefulWidget {
|
|||||||
final OnAddListContactCallbackAction? onAddContactCallback;
|
final OnAddListContactCallbackAction? onAddContactCallback;
|
||||||
final OnExceptionAddListContactCallbackAction? onExceptionCallback;
|
final OnExceptionAddListContactCallbackAction? onExceptionCallback;
|
||||||
final String internalDomain;
|
final String internalDomain;
|
||||||
|
final int minInputLengthAutocomplete;
|
||||||
|
|
||||||
const AutocompleteContactTextFieldWithTags({
|
const AutocompleteContactTextFieldWithTags({
|
||||||
Key? key,
|
Key? key,
|
||||||
@@ -46,6 +47,7 @@ class AutocompleteContactTextFieldWithTags extends StatefulWidget {
|
|||||||
required this.internalDomain,
|
required this.internalDomain,
|
||||||
this.controller,
|
this.controller,
|
||||||
this.hasAddContactButton = false,
|
this.hasAddContactButton = false,
|
||||||
|
this.minInputLengthAutocomplete = AppConfig.defaultMinInputLengthAutocomplete,
|
||||||
this.onSuggestionCallback,
|
this.onSuggestionCallback,
|
||||||
this.onAddContactCallback,
|
this.onAddContactCallback,
|
||||||
this.onExceptionCallback,
|
this.onExceptionCallback,
|
||||||
@@ -206,7 +208,10 @@ class _AutocompleteContactTextFieldWithTagsState extends State<AutocompleteConta
|
|||||||
}
|
}
|
||||||
|
|
||||||
final teamMailSuggestion = List<SuggestionEmailAddress>.empty(growable: true);
|
final teamMailSuggestion = List<SuggestionEmailAddress>.empty(growable: true);
|
||||||
if (processedQuery.isNotEmpty && widget.onSuggestionCallback != null) {
|
if (processedQuery.isNotEmpty
|
||||||
|
&& processedQuery.length >= widget.minInputLengthAutocomplete
|
||||||
|
&& widget.onSuggestionCallback != null
|
||||||
|
) {
|
||||||
final addedEmailAddresses = await widget.onSuggestionCallback!(processedQuery);
|
final addedEmailAddresses = await widget.onSuggestionCallback!(processedQuery);
|
||||||
final listSuggestionEmailAddress = addedEmailAddresses
|
final listSuggestionEmailAddress = addedEmailAddresses
|
||||||
.map((emailAddress) => _toSuggestionEmailAddress(emailAddress, listEmailAddress))
|
.map((emailAddress) => _toSuggestionEmailAddress(emailAddress, listEmailAddress))
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
|||||||
import 'package:tmail_ui_user/main/routes/navigation_router.dart';
|
import 'package:tmail_ui_user/main/routes/navigation_router.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||||
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||||
|
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||||
|
|
||||||
class ManageAccountDashBoardController extends ReloadableController with UserSettingPopupMenuMixin {
|
class ManageAccountDashBoardController extends ReloadableController with UserSettingPopupMenuMixin {
|
||||||
|
|
||||||
@@ -372,6 +373,15 @@ class ManageAccountDashBoardController extends ReloadableController with UserSet
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int get minInputLengthAutocomplete {
|
||||||
|
if (sessionCurrent == null || accountId.value == null) {
|
||||||
|
return AppConfig.defaultMinInputLengthAutocomplete;
|
||||||
|
}
|
||||||
|
return getMinInputLengthAutocomplete(
|
||||||
|
session: sessionCurrent!,
|
||||||
|
accountId: accountId.value!);
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
BackButtonInterceptor.removeByName(AppRoutes.settings);
|
BackButtonInterceptor.removeByName(AppRoutes.settings);
|
||||||
|
|||||||
@@ -64,6 +64,8 @@ import 'package:tmail_ui_user/features/upload/domain/usecases/local_image_picker
|
|||||||
import 'package:tmail_ui_user/features/upload/presentation/controller/upload_controller.dart';
|
import 'package:tmail_ui_user/features/upload/presentation/controller/upload_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/upload/presentation/model/upload_file_state.dart';
|
import 'package:tmail_ui_user/features/upload/presentation/model/upload_file_state.dart';
|
||||||
import 'package:tmail_ui_user/main/bindings/network/binding_tag.dart';
|
import 'package:tmail_ui_user/main/bindings/network/binding_tag.dart';
|
||||||
|
import 'package:tmail_ui_user/main/exceptions/cache_exception_thrower.dart';
|
||||||
|
import 'package:tmail_ui_user/main/utils/app_config.dart';
|
||||||
import 'package:tmail_ui_user/main/utils/toast_manager.dart';
|
import 'package:tmail_ui_user/main/utils/toast_manager.dart';
|
||||||
import 'package:uuid/uuid.dart';
|
import 'package:uuid/uuid.dart';
|
||||||
|
|
||||||
@@ -120,6 +122,9 @@ class MockMailboxDashBoardController extends Mock implements MailboxDashBoardCon
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
String get baseDownloadUrl => '';
|
String get baseDownloadUrl => '';
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get minInputLengthAutocomplete => AppConfig.defaultMinInputLengthAutocomplete;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GenerateNiceMocks([
|
@GenerateNiceMocks([
|
||||||
@@ -156,6 +161,7 @@ class MockMailboxDashBoardController extends Mock implements MailboxDashBoardCon
|
|||||||
MockSpec<NetworkConnectionController>(fallbackGenerators: fallbackGenerators),
|
MockSpec<NetworkConnectionController>(fallbackGenerators: fallbackGenerators),
|
||||||
MockSpec<BeforeReconnectManager>(),
|
MockSpec<BeforeReconnectManager>(),
|
||||||
MockSpec<RichTextMobileTabletController>(fallbackGenerators: fallbackGenerators),
|
MockSpec<RichTextMobileTabletController>(fallbackGenerators: fallbackGenerators),
|
||||||
|
MockSpec<CacheExceptionThrower>(),
|
||||||
|
|
||||||
// Additional misc dependencies mock specs
|
// Additional misc dependencies mock specs
|
||||||
MockSpec<HtmlEditorApi>(),
|
MockSpec<HtmlEditorApi>(),
|
||||||
@@ -198,6 +204,7 @@ void main() {
|
|||||||
final mockBeforeReconnectManager = MockBeforeReconnectManager();
|
final mockBeforeReconnectManager = MockBeforeReconnectManager();
|
||||||
final mockRichTextMobileTabletController = MockRichTextMobileTabletController();
|
final mockRichTextMobileTabletController = MockRichTextMobileTabletController();
|
||||||
final mockRichTextWebController = MockRichTextWebController();
|
final mockRichTextWebController = MockRichTextWebController();
|
||||||
|
final mockCacheExceptionThrower = MockCacheExceptionThrower();
|
||||||
|
|
||||||
// Declaration misc dependencies
|
// Declaration misc dependencies
|
||||||
late MockHtmlEditorApi mockHtmlEditorApi;
|
late MockHtmlEditorApi mockHtmlEditorApi;
|
||||||
@@ -240,6 +247,7 @@ void main() {
|
|||||||
Get.put<NetworkConnectionController>(mockNetworkConnectionController);
|
Get.put<NetworkConnectionController>(mockNetworkConnectionController);
|
||||||
Get.put<BeforeReconnectManager>(mockBeforeReconnectManager);
|
Get.put<BeforeReconnectManager>(mockBeforeReconnectManager);
|
||||||
Get.put<RichTextMobileTabletController>(mockRichTextMobileTabletController);
|
Get.put<RichTextMobileTabletController>(mockRichTextMobileTabletController);
|
||||||
|
Get.put<CacheExceptionThrower>(mockCacheExceptionThrower);
|
||||||
|
|
||||||
// Mock composer controller
|
// Mock composer controller
|
||||||
mockLocalFilePickerInteractor = MockLocalFilePickerInteractor();
|
mockLocalFilePickerInteractor = MockLocalFilePickerInteractor();
|
||||||
@@ -254,7 +262,7 @@ void main() {
|
|||||||
mockGetAlwaysReadReceiptSettingInteractor = MockGetAlwaysReadReceiptSettingInteractor();
|
mockGetAlwaysReadReceiptSettingInteractor = MockGetAlwaysReadReceiptSettingInteractor();
|
||||||
mockCreateNewAndSendEmailInteractor = MockCreateNewAndSendEmailInteractor();
|
mockCreateNewAndSendEmailInteractor = MockCreateNewAndSendEmailInteractor();
|
||||||
mockCreateNewAndSaveEmailToDraftsInteractor = MockCreateNewAndSaveEmailToDraftsInteractor();
|
mockCreateNewAndSaveEmailToDraftsInteractor = MockCreateNewAndSaveEmailToDraftsInteractor();
|
||||||
|
|
||||||
composerController = ComposerController(
|
composerController = ComposerController(
|
||||||
mockLocalFilePickerInteractor,
|
mockLocalFilePickerInteractor,
|
||||||
mockLocalImagePickerInteractor,
|
mockLocalImagePickerInteractor,
|
||||||
|
|||||||
Reference in New Issue
Block a user