TF-1118 Remove EmailForwardCreator not used
This commit is contained in:
@@ -8,9 +8,6 @@ import 'package:tmail_ui_user/features/contact/presentation/model/contact_argume
|
|||||||
import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_bindings.dart';
|
import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_view.dart';
|
import 'package:tmail_ui_user/features/destination_picker/presentation/destination_picker_view.dart';
|
||||||
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
|
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_picker_arguments.dart';
|
||||||
import 'package:tmail_ui_user/features/emails_forward_creator/presentation/emails_forward_creator_binding.dart';
|
|
||||||
import 'package:tmail_ui_user/features/emails_forward_creator/presentation/emails_forward_creator_view.dart';
|
|
||||||
import 'package:tmail_ui_user/features/emails_forward_creator/presentation/model/email_forward_creator_arguments.dart';
|
|
||||||
import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_bindings.dart';
|
import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_view.dart';
|
import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_view.dart';
|
||||||
import 'package:tmail_ui_user/features/identity_creator/presentation/model/identity_creator_arguments.dart';
|
import 'package:tmail_ui_user/features/identity_creator/presentation/model/identity_creator_arguments.dart';
|
||||||
@@ -168,34 +165,4 @@ mixin ViewAsDialogActionMixin {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void showDialogEmailForwardCreator({
|
|
||||||
required BuildContext context,
|
|
||||||
required EmailForwardCreatorArguments arguments,
|
|
||||||
required Function(List<EmailAddress>) onAddEmailForward
|
|
||||||
}) {
|
|
||||||
EmailsForwardCreatorBindings().dependencies();
|
|
||||||
|
|
||||||
showGeneralDialog(
|
|
||||||
context: context,
|
|
||||||
barrierDismissible: true,
|
|
||||||
barrierLabel: '',
|
|
||||||
barrierColor: Colors.black.withAlpha(24),
|
|
||||||
pageBuilder: (context, animation, secondaryAnimation) {
|
|
||||||
return EmailsForwardCreatorView.fromArguments(
|
|
||||||
arguments,
|
|
||||||
onDismissCallback: () {
|
|
||||||
EmailsForwardCreatorBindings().dispose();
|
|
||||||
popBack();
|
|
||||||
},
|
|
||||||
onAddEmailForwardCallback: (listEmailAddress) {
|
|
||||||
EmailsForwardCreatorBindings().dispose();
|
|
||||||
popBack();
|
|
||||||
|
|
||||||
if (listEmailAddress.isNotEmpty) {
|
|
||||||
onAddEmailForward.call(listEmailAddress);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
import 'package:get/get.dart';
|
|
||||||
import 'package:tmail_ui_user/features/emails_forward_creator/presentation/emails_forward_creator_controller.dart';
|
|
||||||
|
|
||||||
class EmailsForwardCreatorBindings extends Bindings {
|
|
||||||
|
|
||||||
@override
|
|
||||||
void dependencies() {
|
|
||||||
Get.lazyPut(() => EmailsForwardCreatorController());
|
|
||||||
}
|
|
||||||
|
|
||||||
void dispose() {
|
|
||||||
Get.delete<EmailsForwardCreatorController>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-152
@@ -1,152 +0,0 @@
|
|||||||
|
|
||||||
import 'package:core/utils/app_logger.dart';
|
|
||||||
import 'package:core/utils/build_utils.dart';
|
|
||||||
import 'package:flutter/cupertino.dart';
|
|
||||||
import 'package:get/get.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/mail/email/email_address.dart';
|
|
||||||
import 'package:model/model.dart';
|
|
||||||
import 'package:tmail_ui_user/features/base/base_controller.dart';
|
|
||||||
import 'package:tmail_ui_user/features/composer/domain/model/contact_suggestion_source.dart';
|
|
||||||
import 'package:tmail_ui_user/features/composer/domain/state/get_autocomplete_state.dart';
|
|
||||||
import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_interactor.dart';
|
|
||||||
import 'package:tmail_ui_user/features/composer/domain/usecases/get_autocomplete_with_device_contact_interactor.dart';
|
|
||||||
import 'package:tmail_ui_user/features/emails_forward_creator/presentation/model/email_forward_creator_arguments.dart';
|
|
||||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
|
||||||
|
|
||||||
typedef OnAddEmailForwardCallback = Function(List<EmailAddress> listEmailAddress);
|
|
||||||
|
|
||||||
class EmailsForwardCreatorController extends BaseController {
|
|
||||||
|
|
||||||
final ContactSuggestionSource _contactSuggestionSource = ContactSuggestionSource.tMailContact;
|
|
||||||
|
|
||||||
GetAutoCompleteWithDeviceContactInteractor? _getAutoCompleteWithDeviceContactInteractor;
|
|
||||||
GetAutoCompleteInteractor? _getAutoCompleteInteractor;
|
|
||||||
|
|
||||||
final listEmailForwards = RxSet<EmailAddress>();
|
|
||||||
|
|
||||||
TextEditingController? inputEmailForwardController;
|
|
||||||
|
|
||||||
EmailForwardCreatorArguments? arguments;
|
|
||||||
OnAddEmailForwardCallback? onAddEmailForwardCallback;
|
|
||||||
VoidCallback? onDismissForwardCreatorCallback;
|
|
||||||
AccountId? _accountId;
|
|
||||||
Session? _session;
|
|
||||||
|
|
||||||
@override
|
|
||||||
void onInit() {
|
|
||||||
super.onInit();
|
|
||||||
inputEmailForwardController = TextEditingController();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void onReady() {
|
|
||||||
super.onReady();
|
|
||||||
if (arguments != null) {
|
|
||||||
_accountId = arguments!.accountId;
|
|
||||||
_session = arguments!.session;
|
|
||||||
injectAutoCompleteBindings(_session, _accountId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void onClose() {
|
|
||||||
_disposeWidget();
|
|
||||||
super.onClose();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void onDone() {}
|
|
||||||
|
|
||||||
@override
|
|
||||||
void injectAutoCompleteBindings(Session? session, AccountId? accountId) {
|
|
||||||
try {
|
|
||||||
super.injectAutoCompleteBindings(session, accountId);
|
|
||||||
_getAutoCompleteWithDeviceContactInteractor = Get.find<GetAutoCompleteWithDeviceContactInteractor>();
|
|
||||||
_getAutoCompleteInteractor = Get.find<GetAutoCompleteInteractor>();
|
|
||||||
} catch (e) {
|
|
||||||
logError('EmailsForwardCreatorController::injectAutoCompleteBindings(): $e');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<List<EmailAddress>> getAutoCompleteSuggestion(String word) async {
|
|
||||||
try {
|
|
||||||
_getAutoCompleteWithDeviceContactInteractor = Get.find<GetAutoCompleteWithDeviceContactInteractor>();
|
|
||||||
_getAutoCompleteInteractor = Get.find<GetAutoCompleteInteractor>();
|
|
||||||
} catch (e) {
|
|
||||||
logError('EmailsForwardCreatorController::getAutoCompleteSuggestion(): Exception $e');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_contactSuggestionSource == ContactSuggestionSource.all) {
|
|
||||||
if (_getAutoCompleteWithDeviceContactInteractor == null || _getAutoCompleteInteractor == null) {
|
|
||||||
return <EmailAddress>[];
|
|
||||||
} else {
|
|
||||||
return await _getAutoCompleteWithDeviceContactInteractor!
|
|
||||||
.execute(AutoCompletePattern(word: word, accountId: _accountId))
|
|
||||||
.then((value) => value.fold(
|
|
||||||
(failure) => <EmailAddress>[],
|
|
||||||
(success) => success is GetAutoCompleteSuccess
|
|
||||||
? success.listEmailAddress
|
|
||||||
: <EmailAddress>[]));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (_getAutoCompleteInteractor == null) {
|
|
||||||
return <EmailAddress>[];
|
|
||||||
} else {
|
|
||||||
return await _getAutoCompleteInteractor!
|
|
||||||
.execute(AutoCompletePattern(word: word, accountId: _accountId))
|
|
||||||
.then((value) => value.fold(
|
|
||||||
(failure) => <EmailAddress>[],
|
|
||||||
(success) => success is GetAutoCompleteSuccess
|
|
||||||
? success.listEmailAddress
|
|
||||||
: <EmailAddress>[]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void addToListEmailForwards(EmailAddress emailAddress) {
|
|
||||||
if (emailAddress.email != null && emailAddress.email!.isNotEmpty) {
|
|
||||||
listEmailForwards.add(emailAddress);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void clearAll() {
|
|
||||||
inputEmailForwardController?.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
void _disposeWidget() {
|
|
||||||
inputEmailForwardController?.dispose();
|
|
||||||
inputEmailForwardController = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
void closeView(BuildContext context) {
|
|
||||||
FocusScope.of(context).unfocus();
|
|
||||||
|
|
||||||
if (BuildUtils.isWeb) {
|
|
||||||
_disposeWidget();
|
|
||||||
onDismissForwardCreatorCallback?.call();
|
|
||||||
} else {
|
|
||||||
popBack();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void addEmailForwards(BuildContext context) {
|
|
||||||
FocusScope.of(context).unfocus();
|
|
||||||
|
|
||||||
final emailInput = inputEmailForwardController?.text.trim();
|
|
||||||
if (emailInput?.isNotEmpty == true && emailInput?.isEmail == true) {
|
|
||||||
listEmailForwards.add(EmailAddress(null, emailInput));
|
|
||||||
}
|
|
||||||
|
|
||||||
final newListEmailForwardNeedAdded = listEmailForwards.toList();
|
|
||||||
log('EmailsForwardCreatorController::addEmailForwards(): newListEmailForwardNeedAdded: $newListEmailForwardNeedAdded');
|
|
||||||
|
|
||||||
if (BuildUtils.isWeb) {
|
|
||||||
_disposeWidget();
|
|
||||||
onAddEmailForwardCallback?.call(newListEmailForwardNeedAdded);
|
|
||||||
} else {
|
|
||||||
popBack(result: newListEmailForwardNeedAdded);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,198 +0,0 @@
|
|||||||
import 'package:core/core.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
|
||||||
import 'package:get/get.dart';
|
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
|
||||||
import 'package:model/model.dart';
|
|
||||||
import 'package:tmail_ui_user/features/emails_forward_creator/presentation/emails_forward_creator_controller.dart';
|
|
||||||
import 'package:tmail_ui_user/features/emails_forward_creator/presentation/model/email_forward_creator_arguments.dart';
|
|
||||||
import 'package:tmail_ui_user/features/emails_forward_creator/presentation/widgets/email_forward_creator_item_widget.dart';
|
|
||||||
import 'package:tmail_ui_user/features/emails_forward_creator/presentation/widgets/emails_forward_input_with_drop_list_field_builder.dart';
|
|
||||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
|
||||||
|
|
||||||
class EmailsForwardCreatorView extends GetWidget<EmailsForwardCreatorController> {
|
|
||||||
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
|
|
||||||
@override
|
|
||||||
final controller = Get.find<EmailsForwardCreatorController>();
|
|
||||||
|
|
||||||
EmailsForwardCreatorView({Key? key}) : super(key: key) {
|
|
||||||
controller.arguments = Get.arguments;
|
|
||||||
}
|
|
||||||
|
|
||||||
EmailsForwardCreatorView.fromArguments(
|
|
||||||
EmailForwardCreatorArguments arguments, {
|
|
||||||
Key? key,
|
|
||||||
OnAddEmailForwardCallback? onAddEmailForwardCallback,
|
|
||||||
VoidCallback? onDismissCallback
|
|
||||||
}) : super(key: key) {
|
|
||||||
controller.arguments = arguments;
|
|
||||||
controller.onAddEmailForwardCallback = onAddEmailForwardCallback;
|
|
||||||
controller.onDismissForwardCreatorCallback = onDismissCallback;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return ResponsiveWidget(
|
|
||||||
responsiveUtils: _responsiveUtils,
|
|
||||||
mobile: Scaffold(
|
|
||||||
backgroundColor: BuildUtils.isWeb
|
|
||||||
? Colors.black.withAlpha(24)
|
|
||||||
: Colors.black38,
|
|
||||||
body: GestureDetector(
|
|
||||||
onTap: () => FocusScope.of(context).unfocus(),
|
|
||||||
child: SafeArea(
|
|
||||||
bottom: false,
|
|
||||||
left: false,
|
|
||||||
right: false,
|
|
||||||
child: Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
borderRadius: BorderRadius.only(
|
|
||||||
topLeft: Radius.circular(16),
|
|
||||||
topRight: Radius.circular(16)),
|
|
||||||
color: Colors.white),
|
|
||||||
margin: const EdgeInsets.only(top: BuildUtils.isWeb ? 70 : 0),
|
|
||||||
child: ClipRRect(
|
|
||||||
borderRadius: const BorderRadius.only(
|
|
||||||
topLeft: Radius.circular(16),
|
|
||||||
topRight: Radius.circular(16)),
|
|
||||||
child: SafeArea(child: _buildEmailForwardCreatorList(context))
|
|
||||||
)
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
),
|
|
||||||
tablet: Scaffold(
|
|
||||||
backgroundColor: Colors.black.withAlpha(24),
|
|
||||||
body: GestureDetector(
|
|
||||||
onTap: () => FocusScope.of(context).unfocus(),
|
|
||||||
child: Align(alignment: Alignment.bottomCenter, child: Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
color: Colors.white,
|
|
||||||
borderRadius: BorderRadius.only(
|
|
||||||
topLeft: Radius.circular(16),
|
|
||||||
topRight: Radius.circular(16),
|
|
||||||
)),
|
|
||||||
width: double.infinity,
|
|
||||||
height: _responsiveUtils.getSizeScreenHeight(context) * 0.7,
|
|
||||||
child: ClipRRect(
|
|
||||||
borderRadius: const BorderRadius.only(
|
|
||||||
topLeft: Radius.circular(16),
|
|
||||||
topRight: Radius.circular(16)),
|
|
||||||
child: _buildEmailForwardCreatorList(context)
|
|
||||||
)
|
|
||||||
)),
|
|
||||||
)
|
|
||||||
),
|
|
||||||
desktop: Scaffold(
|
|
||||||
backgroundColor: Colors.black.withAlpha(24),
|
|
||||||
body: GestureDetector(
|
|
||||||
onTap: () => FocusScope.of(context).unfocus(),
|
|
||||||
child: Center(child: Card(
|
|
||||||
color: Colors.transparent,
|
|
||||||
shape: const RoundedRectangleBorder(
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(16))),
|
|
||||||
child: Container(
|
|
||||||
decoration: const BoxDecoration(
|
|
||||||
color: Colors.white,
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(16))),
|
|
||||||
width: _responsiveUtils.getSizeScreenWidth(context) * 0.6,
|
|
||||||
height: _responsiveUtils.getSizeScreenHeight(context) * 0.7,
|
|
||||||
child: ClipRRect(
|
|
||||||
borderRadius: const BorderRadius.all(Radius.circular(16)),
|
|
||||||
child: _buildEmailForwardCreatorList(context)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)),
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget _buildEmailForwardCreatorList(BuildContext context) {
|
|
||||||
return Stack(
|
|
||||||
children: [
|
|
||||||
Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
|
||||||
Container(
|
|
||||||
padding: const EdgeInsets.only(top: 16),
|
|
||||||
alignment: Alignment.center,
|
|
||||||
child: Text(
|
|
||||||
AppLocalizations.of(context).addRecipients,
|
|
||||||
style: const TextStyle(
|
|
||||||
fontWeight: FontWeight.bold,
|
|
||||||
fontSize: 20,
|
|
||||||
color: Colors.black))),
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.all(16),
|
|
||||||
child: (EmailsForwardInputWithDropListFieldBuilder(
|
|
||||||
AppLocalizations.of(context).recipientsLabel,
|
|
||||||
controller.inputEmailForwardController)
|
|
||||||
..addOnSelectedSuggestionAction((newEmailAddress) {
|
|
||||||
controller.addToListEmailForwards(newEmailAddress);
|
|
||||||
controller.clearAll();
|
|
||||||
})
|
|
||||||
..addOnSummitedCallbackAction((pattern) {
|
|
||||||
if (pattern != null && pattern.trim().isNotEmpty && pattern.isEmail == true) {
|
|
||||||
controller.addToListEmailForwards(EmailAddress(null, pattern.trim()));
|
|
||||||
controller.clearAll();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
..addOnSuggestionCallbackAction(controller.getAutoCompleteSuggestion)).build(),
|
|
||||||
),
|
|
||||||
Expanded(
|
|
||||||
child: Obx(() => ListView.builder(
|
|
||||||
itemCount: controller.listEmailForwards.length,
|
|
||||||
itemBuilder: (BuildContext context, int index) {
|
|
||||||
final item = controller.listEmailForwards.toList()[index];
|
|
||||||
return EmailForwardCreatorItemWidget(
|
|
||||||
emailForward: item.emailAddress,
|
|
||||||
onDelete: () {
|
|
||||||
controller.listEmailForwards.remove(item);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
},
|
|
||||||
)),
|
|
||||||
),
|
|
||||||
Padding(
|
|
||||||
padding: const EdgeInsets.all(16),
|
|
||||||
child: _buildButtonAddNewEmailsForward(context),
|
|
||||||
),
|
|
||||||
]),
|
|
||||||
Positioned(top: 8, right: 8,
|
|
||||||
child: buildIconWeb(
|
|
||||||
icon: SvgPicture.asset(
|
|
||||||
_imagePaths.icCloseMailbox,
|
|
||||||
fit: BoxFit.fill),
|
|
||||||
tooltip: AppLocalizations.of(context).close,
|
|
||||||
onTap: () => controller.closeView(context)))
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget _buildButtonAddNewEmailsForward(BuildContext context) {
|
|
||||||
return (ButtonBuilder(_imagePaths.icAddEmailForward)
|
|
||||||
..key(const Key('button_add_emails_forward_creator'))
|
|
||||||
..decoration(BoxDecoration(
|
|
||||||
borderRadius: BorderRadius.circular(10),
|
|
||||||
color: AppColor.colorTextButton))
|
|
||||||
..paddingIcon(const EdgeInsets.only(right: 8))
|
|
||||||
..iconColor(Colors.white)
|
|
||||||
..size(20)
|
|
||||||
..radiusSplash(10)
|
|
||||||
..padding(const EdgeInsets.symmetric(vertical: 12))
|
|
||||||
..textStyle(const TextStyle(
|
|
||||||
fontSize: 17,
|
|
||||||
color: Colors.white,
|
|
||||||
fontWeight: FontWeight.w500,
|
|
||||||
))
|
|
||||||
..onPressActionClick(() => controller.addEmailForwards(context))
|
|
||||||
..text(
|
|
||||||
AppLocalizations.of(context).addRecipients,
|
|
||||||
isVertical: false,
|
|
||||||
))
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
-14
@@ -1,14 +0,0 @@
|
|||||||
|
|
||||||
import 'package:equatable/equatable.dart';
|
|
||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
|
||||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
|
||||||
|
|
||||||
class EmailForwardCreatorArguments with EquatableMixin {
|
|
||||||
final AccountId accountId;
|
|
||||||
final Session? session;
|
|
||||||
|
|
||||||
EmailForwardCreatorArguments(this.accountId, this.session);
|
|
||||||
|
|
||||||
@override
|
|
||||||
List<Object?> get props => [accountId, session];
|
|
||||||
}
|
|
||||||
-48
@@ -1,48 +0,0 @@
|
|||||||
import 'package:core/core.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
|
||||||
import 'package:get/get.dart';
|
|
||||||
|
|
||||||
class EmailForwardCreatorItemWidget extends StatelessWidget {
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
|
||||||
final VoidCallback onDelete;
|
|
||||||
final String emailForward;
|
|
||||||
|
|
||||||
EmailForwardCreatorItemWidget({
|
|
||||||
Key? key,
|
|
||||||
required this.emailForward,
|
|
||||||
required this.onDelete,
|
|
||||||
}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Container(
|
|
||||||
padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 16),
|
|
||||||
color: Colors.white,
|
|
||||||
child: Row(crossAxisAlignment: CrossAxisAlignment.center, children: [
|
|
||||||
CircleAvatar(
|
|
||||||
backgroundColor: AppColor.colorTextButton,
|
|
||||||
radius: 16,
|
|
||||||
child: Text(emailForward[0].toUpperCase(),
|
|
||||||
style: const TextStyle(
|
|
||||||
color: Colors.white,
|
|
||||||
fontSize: 12,
|
|
||||||
fontWeight: FontWeight.w500))),
|
|
||||||
const SizedBox(width: 10),
|
|
||||||
Expanded(child: Text(emailForward,
|
|
||||||
overflow: CommonTextStyle.defaultTextOverFlow,
|
|
||||||
softWrap: CommonTextStyle.defaultSoftWrap,
|
|
||||||
style: const TextStyle(
|
|
||||||
fontSize: 16,
|
|
||||||
fontWeight: FontWeight.w400,
|
|
||||||
color: Colors.black))),
|
|
||||||
buildIconWeb(
|
|
||||||
icon: SvgPicture.asset(
|
|
||||||
_imagePaths.icDeleteEmailAddress,
|
|
||||||
fit: BoxFit.fill,
|
|
||||||
),
|
|
||||||
onTap: onDelete),
|
|
||||||
]),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-37
@@ -1,37 +0,0 @@
|
|||||||
|
|
||||||
import 'package:core/core.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
|
|
||||||
class EmailsForwardInputDecorationBuilder extends InputDecorationBuilder {
|
|
||||||
|
|
||||||
@override
|
|
||||||
InputDecoration build() {
|
|
||||||
return InputDecoration(
|
|
||||||
enabledBorder: enabledBorder ?? const OutlineInputBorder(
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(10)),
|
|
||||||
borderSide: BorderSide(width: 1, color: AppColor.colorInputBorderCreateMailbox)),
|
|
||||||
focusedBorder: enabledBorder ?? const OutlineInputBorder(
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(10)),
|
|
||||||
borderSide: BorderSide(width: 1, color: AppColor.colorTextButton)),
|
|
||||||
errorBorder: errorBorder ?? const OutlineInputBorder(
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(10)),
|
|
||||||
borderSide: BorderSide(width: 1, color: AppColor.colorInputBorderErrorVerifyName)),
|
|
||||||
focusedErrorBorder: errorBorder ?? const OutlineInputBorder(
|
|
||||||
borderRadius: BorderRadius.all(Radius.circular(10)),
|
|
||||||
borderSide: BorderSide(width: 1, color: AppColor.colorInputBorderErrorVerifyName)),
|
|
||||||
prefixText: prefixText,
|
|
||||||
labelText: labelText,
|
|
||||||
floatingLabelBehavior: FloatingLabelBehavior.never,
|
|
||||||
labelStyle: labelStyle ?? const TextStyle(color: Colors.black, fontSize: 16),
|
|
||||||
hintText: hintText,
|
|
||||||
isDense: true,
|
|
||||||
hintStyle: hintStyle ?? const TextStyle(color: AppColor.colorHintInputCreateMailbox, fontSize: 16),
|
|
||||||
contentPadding: contentPadding ?? const EdgeInsets.symmetric(horizontal: 12, vertical: 12),
|
|
||||||
errorText: errorText,
|
|
||||||
errorStyle: errorTextStyle ?? const TextStyle(color: AppColor.colorInputBorderErrorVerifyName, fontSize: 13),
|
|
||||||
filled: true,
|
|
||||||
fillColor: errorText?.isNotEmpty == true
|
|
||||||
? AppColor.colorInputBackgroundErrorVerifyName
|
|
||||||
: AppColor.colorInputBackgroundCreateMailbox);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-90
@@ -1,90 +0,0 @@
|
|||||||
|
|
||||||
import 'package:core/core.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter_typeahead/flutter_typeahead.dart';
|
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
|
||||||
import 'package:tmail_ui_user/features/emails_forward_creator/presentation/widgets/emails_forward_input_decoration_builder.dart';
|
|
||||||
|
|
||||||
typedef OnSelectedSuggestionAction = Function(EmailAddress emailAddress);
|
|
||||||
typedef OnSuggestionCallbackAction = Function(String pattern);
|
|
||||||
typedef OnSummitedCallbackAction = Function(String? pattern);
|
|
||||||
|
|
||||||
class EmailsForwardInputWithDropListFieldBuilder {
|
|
||||||
|
|
||||||
final String hintText;
|
|
||||||
final TextEditingController? editingController;
|
|
||||||
|
|
||||||
OnSelectedSuggestionAction? _onSelectedSuggestionAction;
|
|
||||||
OnSuggestionCallbackAction? _onSuggestionCallbackAction;
|
|
||||||
OnSummitedCallbackAction? _onSummitedCallbackAction;
|
|
||||||
|
|
||||||
EmailsForwardInputWithDropListFieldBuilder(
|
|
||||||
this.hintText,
|
|
||||||
this.editingController,
|
|
||||||
);
|
|
||||||
|
|
||||||
void addOnSelectedSuggestionAction(OnSelectedSuggestionAction action) {
|
|
||||||
_onSelectedSuggestionAction = action;
|
|
||||||
}
|
|
||||||
|
|
||||||
void addOnSuggestionCallbackAction(OnSuggestionCallbackAction action) {
|
|
||||||
_onSuggestionCallbackAction = action;
|
|
||||||
}
|
|
||||||
|
|
||||||
void addOnSummitedCallbackAction(OnSummitedCallbackAction action) {
|
|
||||||
_onSummitedCallbackAction = action;
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget build() {
|
|
||||||
return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
|
||||||
const SizedBox(height: 8),
|
|
||||||
TypeAheadFormField<EmailAddress>(
|
|
||||||
textFieldConfiguration: TextFieldConfiguration(
|
|
||||||
controller: editingController,
|
|
||||||
onSubmitted: (pattern) {
|
|
||||||
if (_onSummitedCallbackAction != null) {
|
|
||||||
_onSummitedCallbackAction!(pattern);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
textInputAction: TextInputAction.done,
|
|
||||||
decoration: (EmailsForwardInputDecorationBuilder()
|
|
||||||
..setContentPadding(const EdgeInsets.symmetric(
|
|
||||||
vertical: BuildUtils.isWeb ? 16 : 12,
|
|
||||||
horizontal: 12))
|
|
||||||
..setHintText(hintText))
|
|
||||||
.build()
|
|
||||||
),
|
|
||||||
debounceDuration: const Duration(milliseconds: 500),
|
|
||||||
suggestionsCallback: (pattern) async {
|
|
||||||
if (_onSuggestionCallbackAction != null) {
|
|
||||||
return _onSuggestionCallbackAction!(pattern);
|
|
||||||
} else {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
},
|
|
||||||
itemBuilder: (BuildContext context, emailAddress) {
|
|
||||||
return Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 14),
|
|
||||||
child: Text(emailAddress.email ?? '',
|
|
||||||
style: const TextStyle(
|
|
||||||
fontSize: 14,
|
|
||||||
fontWeight: FontWeight.normal,
|
|
||||||
color: Colors.black)),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
onSuggestionSelected: (emailSelected) {
|
|
||||||
if (_onSelectedSuggestionAction != null) {
|
|
||||||
_onSelectedSuggestionAction!(emailSelected);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
suggestionsBoxDecoration: SuggestionsBoxDecoration(
|
|
||||||
borderRadius: BorderRadius.circular(14)
|
|
||||||
),
|
|
||||||
noItemsFoundBuilder: (context) => const SizedBox(),
|
|
||||||
hideOnEmpty: true,
|
|
||||||
hideOnError: true,
|
|
||||||
hideOnLoading: true,
|
|
||||||
)
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -10,8 +10,6 @@ import 'package:tmail_ui_user/features/home/presentation/home_bindings.dart';
|
|||||||
import 'package:tmail_ui_user/features/home/presentation/home_view.dart';
|
import 'package:tmail_ui_user/features/home/presentation/home_view.dart';
|
||||||
import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_bindings.dart';
|
import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_view.dart' deferred as identity_creator;
|
import 'package:tmail_ui_user/features/identity_creator/presentation/identity_creator_view.dart' deferred as identity_creator;
|
||||||
import 'package:tmail_ui_user/features/emails_forward_creator/presentation/emails_forward_creator_binding.dart';
|
|
||||||
import 'package:tmail_ui_user/features/emails_forward_creator/presentation/emails_forward_creator_view.dart' deferred as emails_forward_creator;
|
|
||||||
import 'package:tmail_ui_user/features/contact/presentation/contact_view.dart' deferred as contact_view;
|
import 'package:tmail_ui_user/features/contact/presentation/contact_view.dart' deferred as contact_view;
|
||||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/rules_filter_creator_bindings.dart';
|
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/rules_filter_creator_bindings.dart';
|
||||||
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/rules_filter_creator_view.dart' deferred as rules_filter_creator;
|
import 'package:tmail_ui_user/features/rules_filter_creator/presentation/rules_filter_creator_view.dart' deferred as rules_filter_creator;
|
||||||
@@ -99,14 +97,7 @@ class AppPages {
|
|||||||
page: () => DeferredWidget(
|
page: () => DeferredWidget(
|
||||||
rules_filter_creator.loadLibrary,
|
rules_filter_creator.loadLibrary,
|
||||||
() => rules_filter_creator.RuleFilterCreatorView()),
|
() => rules_filter_creator.RuleFilterCreatorView()),
|
||||||
binding: RulesFilterCreatorBindings()),
|
binding: RulesFilterCreatorBindings())
|
||||||
GetPage(
|
|
||||||
name: AppRoutes.emailsForwardCreator,
|
|
||||||
opaque: false,
|
|
||||||
page: () => DeferredWidget(
|
|
||||||
emails_forward_creator.loadLibrary,
|
|
||||||
() => emails_forward_creator.EmailsForwardCreatorView()),
|
|
||||||
binding: EmailsForwardCreatorBindings()),
|
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user