diff --git a/assets/images/ic_add_email_forwards.svg b/assets/images/ic_add_email_forwards.svg new file mode 100644 index 000000000..438743207 --- /dev/null +++ b/assets/images/ic_add_email_forwards.svg @@ -0,0 +1,3 @@ + + + diff --git a/core/lib/presentation/resources/image_paths.dart b/core/lib/presentation/resources/image_paths.dart index 54d16e23d..8a3931e56 100644 --- a/core/lib/presentation/resources/image_paths.dart +++ b/core/lib/presentation/resources/image_paths.dart @@ -159,6 +159,7 @@ class ImagePaths { String get icSwitchOff => _getImagePath('ic_switch_off.svg'); String get icClock => _getImagePath('ic_clock.svg'); String get icCalendar => _getImagePath('ic_calendar.svg'); + String get icAddEmailForward => _getImagePath('ic_add_email_forwards.svg'); String _getImagePath(String imageName) { return AssetsPaths.images + imageName; diff --git a/lib/features/manage_account/presentation/forward/forward_controller.dart b/lib/features/manage_account/presentation/forward/forward_controller.dart index 9a5212d80..df333fc6b 100644 --- a/lib/features/manage_account/presentation/forward/forward_controller.dart +++ b/lib/features/manage_account/presentation/forward/forward_controller.dart @@ -20,6 +20,7 @@ import 'package:tmail_ui_user/features/manage_account/presentation/extensions/tm import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/model/recipient_forward.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; +import 'package:tmail_ui_user/main/routes/app_routes.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; class ForwardController extends BaseController { @@ -211,4 +212,22 @@ class ForwardController extends BaseController { .map((recipient) => recipient.enableSelection()) .toList(); } + + void goToAddEmailsForward() async { + final accountId = _accountDashBoardController.accountId.value; + if (accountId != null) { + // final newEmailRuleFilter = await push( + // AppRoutes.EMAILS_FORWARD_CREATOR, + // arguments: RulesFilterCreatorArguments(accountId)); + // + // if (newEmailRuleFilter is TMailRule) { + // _createNewRuleFilterAction( + // accountId, + // CreateNewEmailRuleFilterRequest( + // listEmailRule, + // newEmailRuleFilter) + // ); + // } + } + } } \ No newline at end of file diff --git a/lib/features/manage_account/presentation/forward/forward_view.dart b/lib/features/manage_account/presentation/forward/forward_view.dart index 3cb37985e..90166713a 100644 --- a/lib/features/manage_account/presentation/forward/forward_view.dart +++ b/lib/features/manage_account/presentation/forward/forward_view.dart @@ -3,10 +3,12 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:tmail_ui_user/features/base/mixin/app_loader_mixin.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/forward/forward_controller.dart'; +import 'package:tmail_ui_user/features/manage_account/presentation/forward/widgets/forward_header_widget.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/forward/widgets/list_email_forward_widget.dart'; class ForwardView extends GetWidget with AppLoaderMixin { final _responsiveUtils = Get.find(); + final _imagePaths = Get.find(); ForwardView({Key? key}) : super(key: key); @@ -22,6 +24,12 @@ class ForwardView extends GetWidget with AppLoaderMixin { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + ForwardHeaderWidget( + imagePaths: _imagePaths, + responsiveUtils: _responsiveUtils, + addEmailForward: () => controller.goToAddEmailsForward(), + ), + SizedBox(height: _responsiveUtils.isWebDesktop(context) ? 24 : 16), _buildLoadingView(), Expanded(child: ListEmailForwardsWidget()) ], diff --git a/lib/features/manage_account/presentation/forward/widgets/forward_header_widget.dart b/lib/features/manage_account/presentation/forward/widgets/forward_header_widget.dart new file mode 100644 index 000000000..7266a0848 --- /dev/null +++ b/lib/features/manage_account/presentation/forward/widgets/forward_header_widget.dart @@ -0,0 +1,90 @@ +import 'package:core/presentation/extensions/color_extension.dart'; +import 'package:core/presentation/resources/image_paths.dart'; +import 'package:core/presentation/utils/responsive_utils.dart'; +import 'package:core/presentation/views/button/button_builder.dart'; +import 'package:flutter/material.dart'; +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; + +class ForwardHeaderWidget extends StatelessWidget { + const ForwardHeaderWidget({ + Key? key, + required this.addEmailForward, + required this.imagePaths, + required this.responsiveUtils, + }) : super(key: key); + + final VoidCallback addEmailForward; + final ImagePaths imagePaths; + final ResponsiveUtils responsiveUtils; + + @override + Widget build(BuildContext context) { + return Container( + width: double.infinity, + padding: const EdgeInsets.all(24), + decoration: BoxDecoration( + color: AppColor.colorBackgroundWrapIconStyleCode, + borderRadius: BorderRadius.circular(16), + ), + child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + Text(AppLocalizations.of(context).forwarding, + style: const TextStyle( + fontSize: 17, + fontWeight: FontWeight.bold, + color: Colors.black)), + const SizedBox(height: 4), + const SizedBox(height: 24), + _buildButtonAddNewEmailsForward(context), + ]), + ); + } + + Widget _buildButtonAddNewEmailsForward(BuildContext context) { + if (!responsiveUtils.isMobile(context)) { + return (ButtonBuilder(imagePaths.icAddEmailForward) + ..key(const Key('button_add_emails_forward')) + ..decoration(BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: AppColor.colorTextButton)) + ..paddingIcon(const EdgeInsets.only(right: 8)) + ..iconColor(Colors.white) + ..maxWidth(130) + ..size(20) + ..radiusSplash(10) + ..padding(const EdgeInsets.symmetric(vertical: 12)) + ..textStyle(const TextStyle( + fontSize: 17, + color: Colors.white, + fontWeight: FontWeight.w500, + )) + ..onPressActionClick(() => addEmailForward.call()) + ..text( + AppLocalizations.of(context).addEmailForward, + isVertical: false, + )) + .build(); + } else { + return (ButtonBuilder(imagePaths.icAddEmailForward) + ..key(const Key('button_add_emails_forward')) + ..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(() => addEmailForward.call()) + ..text( + AppLocalizations.of(context).addEmailForward, + isVertical: false, + )) + .build(); + } + } +} diff --git a/lib/main/localizations/app_localizations.dart b/lib/main/localizations/app_localizations.dart index 2020c4904..74f4af5bb 100644 --- a/lib/main/localizations/app_localizations.dart +++ b/lib/main/localizations/app_localizations.dart @@ -2133,4 +2133,11 @@ class AppLocalizations { name: 'messageConfirmationDialogDeleteAllRecipientForward' ); } + + String get addEmailForward { + return Intl.message( + 'Add Email', + name: 'addEmailForward', + ); + } } \ No newline at end of file