diff --git a/lib/features/manage_account/data/datasource/manage_account_datasource.dart b/lib/features/manage_account/data/datasource/manage_account_datasource.dart index 2cb7dd6d0..92e894691 100644 --- a/lib/features/manage_account/data/datasource/manage_account_datasource.dart +++ b/lib/features/manage_account/data/datasource/manage_account_datasource.dart @@ -13,6 +13,7 @@ import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_em import 'package:tmail_ui_user/features/manage_account/domain/model/delete_recipient_in_forwarding_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/edit_email_rule_filter_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/edit_identity_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_local_copy_in_forwarding_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/identities_response.dart'; abstract class ManageAccountDataSource { @@ -44,4 +45,6 @@ abstract class ManageAccountDataSource { Future addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest); + Future editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest); + } \ No newline at end of file diff --git a/lib/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart b/lib/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart index 44975f0c1..885f90fed 100644 --- a/lib/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart +++ b/lib/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart @@ -16,6 +16,7 @@ import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_em import 'package:tmail_ui_user/features/manage_account/domain/model/delete_recipient_in_forwarding_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/edit_email_rule_filter_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/edit_identity_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_local_copy_in_forwarding_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/identities_response.dart'; class ManageAccountDataSourceImpl extends ManageAccountDataSource { @@ -155,4 +156,13 @@ class ManageAccountDataSourceImpl extends ManageAccountDataSource { throw error; }); } + + @override + Future editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest) { + return Future.sync(() async { + return await manageAccountAPI.updateForward(accountId, editRequest.newTMailForward); + }).catchError((error) { + throw error; + }); + } } \ No newline at end of file diff --git a/lib/features/manage_account/data/repository/manage_account_repository_impl.dart b/lib/features/manage_account/data/repository/manage_account_repository_impl.dart index 364443af9..ec6cadd57 100644 --- a/lib/features/manage_account/data/repository/manage_account_repository_impl.dart +++ b/lib/features/manage_account/data/repository/manage_account_repository_impl.dart @@ -14,6 +14,7 @@ import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_em import 'package:tmail_ui_user/features/manage_account/domain/model/delete_recipient_in_forwarding_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/edit_email_rule_filter_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/edit_identity_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_local_copy_in_forwarding_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/identities_response.dart'; import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart'; @@ -92,4 +93,9 @@ class ManageAccountRepositoryImpl extends ManageAccountRepository { Future addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest) { return dataSource.addRecipientsInForwarding(accountId, addRequest); } + + @override + Future editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest) { + return dataSource.editLocalCopyInForwarding(accountId, editRequest); + } } \ No newline at end of file diff --git a/lib/features/manage_account/domain/model/edit_local_copy_in_forwarding_request.dart b/lib/features/manage_account/domain/model/edit_local_copy_in_forwarding_request.dart new file mode 100644 index 000000000..f60344a5b --- /dev/null +++ b/lib/features/manage_account/domain/model/edit_local_copy_in_forwarding_request.dart @@ -0,0 +1,19 @@ +import 'package:equatable/equatable.dart'; +import 'package:forward/forward/tmail_forward.dart'; + +class EditLocalCopyInForwardingRequest with EquatableMixin { + final TMailForward currentForward; + final bool keepLocalCopy; + + EditLocalCopyInForwardingRequest({ + required this.currentForward, + required this.keepLocalCopy, + }); + + TMailForward get newTMailForward { + return currentForward.copyWith(localCopy: keepLocalCopy); + } + + @override + List get props => [currentForward, keepLocalCopy]; +} \ No newline at end of file diff --git a/lib/features/manage_account/domain/repository/manage_account_repository.dart b/lib/features/manage_account/domain/repository/manage_account_repository.dart index bbb182c7d..503c3a4dd 100644 --- a/lib/features/manage_account/domain/repository/manage_account_repository.dart +++ b/lib/features/manage_account/domain/repository/manage_account_repository.dart @@ -13,6 +13,7 @@ import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_em import 'package:tmail_ui_user/features/manage_account/domain/model/delete_recipient_in_forwarding_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/edit_email_rule_filter_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/edit_identity_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_local_copy_in_forwarding_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/identities_response.dart'; abstract class ManageAccountRepository { @@ -43,4 +44,6 @@ abstract class ManageAccountRepository { Future deleteRecipientInForwarding(AccountId accountId, DeleteRecipientInForwardingRequest deleteRequest); Future addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest); + + Future editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest); } \ No newline at end of file diff --git a/lib/features/manage_account/domain/state/edit_local_copy_in_forwarding_state.dart b/lib/features/manage_account/domain/state/edit_local_copy_in_forwarding_state.dart new file mode 100644 index 000000000..4602fe028 --- /dev/null +++ b/lib/features/manage_account/domain/state/edit_local_copy_in_forwarding_state.dart @@ -0,0 +1,21 @@ +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:forward/forward/tmail_forward.dart'; + +class EditLocalCopyInForwardingSuccess extends UIState { + final TMailForward forward; + + EditLocalCopyInForwardingSuccess(this.forward); + + @override + List get props => [forward]; +} + +class EditLocalCopyInForwardingFailure extends FeatureFailure { + final dynamic exception; + + EditLocalCopyInForwardingFailure(this.exception); + + @override + List get props => [exception]; +} \ No newline at end of file diff --git a/lib/features/manage_account/domain/usecases/edit_local_copy_in_forwarding_interactor.dart b/lib/features/manage_account/domain/usecases/edit_local_copy_in_forwarding_interactor.dart new file mode 100644 index 000000000..3b72ec9ff --- /dev/null +++ b/lib/features/manage_account/domain/usecases/edit_local_copy_in_forwarding_interactor.dart @@ -0,0 +1,29 @@ +import 'dart:core'; + +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:dartz/dartz.dart'; +import 'package:jmap_dart_client/jmap/account_id.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_local_copy_in_forwarding_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/state/edit_local_copy_in_forwarding_state.dart'; + +class EditLocalCopyInForwardingInteractor { + final ManageAccountRepository manageAccountRepository; + + EditLocalCopyInForwardingInteractor(this.manageAccountRepository); + + Stream> execute( + AccountId accountId, + EditLocalCopyInForwardingRequest editRequest, + ) async* { + try { + final result = await manageAccountRepository.editLocalCopyInForwarding( + accountId, + editRequest); + yield Right(EditLocalCopyInForwardingSuccess(result)); + } catch (exception) { + yield Left(EditLocalCopyInForwardingFailure(exception)); + } + } +} \ No newline at end of file diff --git a/lib/features/manage_account/presentation/forward/forward_bindings.dart b/lib/features/manage_account/presentation/forward/forward_bindings.dart index 08d4e4ab0..2e5bb8372 100644 --- a/lib/features/manage_account/presentation/forward/forward_bindings.dart +++ b/lib/features/manage_account/presentation/forward/forward_bindings.dart @@ -3,6 +3,7 @@ import 'package:tmail_ui_user/features/base/base_bindings.dart'; import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/add_recipients_in_forwarding_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/delete_recipient_in_forwarding_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/usecases/edit_local_copy_in_forwarding_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_forward_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/forward/forward_controller.dart'; @@ -14,6 +15,7 @@ class ForwardBindings extends BaseBindings { Get.find(), Get.find(), Get.find(), + Get.find(), )); } @@ -28,6 +30,7 @@ class ForwardBindings extends BaseBindings { Get.lazyPut(() => GetForwardInteractor(Get.find())); Get.lazyPut(() => DeleteRecipientInForwardingInteractor(Get.find())); Get.lazyPut(() => AddRecipientsInForwardingInteractor(Get.find())); + Get.lazyPut(() => EditLocalCopyInForwardingInteractor(Get.find())); } @override diff --git a/lib/features/manage_account/presentation/forward/forward_controller.dart b/lib/features/manage_account/presentation/forward/forward_controller.dart index b56c0192d..e835a3286 100644 --- a/lib/features/manage_account/presentation/forward/forward_controller.dart +++ b/lib/features/manage_account/presentation/forward/forward_controller.dart @@ -16,13 +16,16 @@ import 'package:tmail_ui_user/features/base/base_controller.dart'; import 'package:tmail_ui_user/features/emails_forward_creator/presentation/emails_forward_creator_binding.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/add_recipients_in_forwarding_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/model/delete_recipient_in_forwarding_request.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/model/edit_local_copy_in_forwarding_request.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/add_recipient_in_forwarding_state.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/delete_recipient_in_forwarding_state.dart'; import 'package:jmap_dart_client/jmap/mail/email/email_address.dart'; import 'package:tmail_ui_user/features/emails_forward_creator/presentation/model/mails_forward_creator_arguments.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/state/edit_local_copy_in_forwarding_state.dart'; import 'package:tmail_ui_user/features/manage_account/domain/state/get_forward_state.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/add_recipients_in_forwarding_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/delete_recipient_in_forwarding_interactor.dart'; +import 'package:tmail_ui_user/features/manage_account/domain/usecases/edit_local_copy_in_forwarding_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/domain/usecases/get_forward_interactor.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/extensions/tmail_forward_extension.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.dart'; @@ -36,6 +39,7 @@ class ForwardController extends BaseController { final GetForwardInteractor _getForwardInteractor; final DeleteRecipientInForwardingInteractor _deleteRecipientInForwardingInteractor; final AddRecipientsInForwardingInteractor _addRecipientsInForwardingInteractor; + final EditLocalCopyInForwardingInteractor _editLocalCopyInForwardingInteractor; final accountDashBoardController = Get.find(); final _responsiveUtils = Get.find(); @@ -45,7 +49,7 @@ class ForwardController extends BaseController { final selectionMode = Rx(SelectMode.INACTIVE); final listRecipientForward = RxList(); - TMailForward? currentForward; + final currentForward = Rxn(); final listForwards = [].obs; @@ -53,6 +57,7 @@ class ForwardController extends BaseController { this._getForwardInteractor, this._deleteRecipientInForwardingInteractor, this._addRecipientsInForwardingInteractor, + this._editLocalCopyInForwardingInteractor, ); @override @@ -65,12 +70,14 @@ class ForwardController extends BaseController { }, (success) { if (success is GetForwardSuccess) { - currentForward = success.forward; - listRecipientForward.value = currentForward!.listRecipientForward; + currentForward.value = success.forward; + listRecipientForward.value = currentForward.value!.listRecipientForward; } else if (success is DeleteRecipientInForwardingSuccess) { _handleDeleteRecipientSuccess(success); } else if (success is AddRecipientsInForwardingSuccess) { _handleAddRecipientsSuccess(success); + } else if (success is EditLocalCopyInForwardingSuccess) { + _handleEditLocalCopySuccess(success); } }); } @@ -128,11 +135,11 @@ class ForwardController extends BaseController { popBack(); final accountId = accountDashBoardController.accountId.value; - if (accountId != null && currentForward != null) { + if (accountId != null && currentForward.value != null) { consumeState(_deleteRecipientInForwardingInteractor.execute( accountId, DeleteRecipientInForwardingRequest( - currentForward: currentForward!, + currentForward: currentForward.value!, listRecipientDeleted: listRecipients))); } } @@ -140,13 +147,14 @@ class ForwardController extends BaseController { void _handleDeleteRecipientSuccess(DeleteRecipientInForwardingSuccess success) { if (currentOverlayContext != null && currentContext != null) { _appToast.showToastWithIcon( - currentOverlayContext!, - message: AppLocalizations.of(currentContext!).toastMessageDeleteRecipientSuccessfully, - icon: _imagePaths.icSelected); + currentOverlayContext!, + message: AppLocalizations.of(currentContext!).toastMessageDeleteRecipientSuccessfully, + icon: _imagePaths.icSelected, + ); } - currentForward = success.forward; - listRecipientForward.value = currentForward!.listRecipientForward; + currentForward.value = success.forward; + listRecipientForward.value = currentForward.value!.listRecipientForward; selectionMode.value = SelectMode.INACTIVE; } @@ -230,7 +238,7 @@ class ForwardController extends BaseController { void goToAddEmailsForward() async { final accountId = accountDashBoardController.accountId.value; if (accountId != null) { - if(kIsWeb) { + if (kIsWeb) { _openMailsForwardCreatorOverlay(); } else { final listEmail = await push( @@ -252,11 +260,11 @@ class ForwardController extends BaseController { void handleAddRecipients(List listEmailAddress) { final accountId = accountDashBoardController.accountId.value; final listRecipients = listEmailAddress.map((e) => e.emailAddress).toSet(); - if (accountId != null && currentForward != null) { + if (accountId != null && currentForward.value != null) { consumeState(_addRecipientsInForwardingInteractor.execute( accountId, AddRecipientInForwardingRequest( - currentForward: currentForward!, + currentForward: currentForward.value!, listRecipientAdded: listRecipients))); } } @@ -264,12 +272,43 @@ class ForwardController extends BaseController { void _handleAddRecipientsSuccess(AddRecipientsInForwardingSuccess success) { if (currentOverlayContext != null && currentContext != null) { _appToast.showToastWithIcon( - currentOverlayContext!, - message: AppLocalizations.of(currentContext!).toastMessageAddRecipientsSuccessfully, - icon: _imagePaths.icSelected); + currentOverlayContext!, + message: AppLocalizations.of(currentContext!).toastMessageAddRecipientsSuccessfully, + icon: _imagePaths.icSelected, + ); } - currentForward = success.forward; - listRecipientForward.value = currentForward!.listRecipientForward; + currentForward.value = success.forward; + listRecipientForward.value = currentForward.value!.listRecipientForward; + } + + bool getCurrentForwardLocalCopyState() { + return currentForward.value?.localCopy ?? false; + } + + void handleEditLocalCopy() { + final accountId = accountDashBoardController.accountId.value; + if (accountId != null && currentForward.value != null) { + consumeState(_editLocalCopyInForwardingInteractor.execute( + accountId, + EditLocalCopyInForwardingRequest( + currentForward: currentForward.value!, + keepLocalCopy: !currentForward.value!.localCopy))); + } + } + + void _handleEditLocalCopySuccess(EditLocalCopyInForwardingSuccess success) { + if (currentOverlayContext != null && currentContext != null) { + _appToast.showToastWithIcon( + currentOverlayContext!, + message: success.forward.localCopy ? + AppLocalizations.of(currentContext!).toastMessageLocalCopyEnable : + AppLocalizations.of(currentContext!).toastMessageLocalCopyDisable, + icon: _imagePaths.icSelected, + ); + } + + currentForward.value = success.forward; + listRecipientForward.value = currentForward.value!.listRecipientForward; } } \ 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 90166713a..e1181bb11 100644 --- a/lib/features/manage_account/presentation/forward/forward_view.dart +++ b/lib/features/manage_account/presentation/forward/forward_view.dart @@ -27,7 +27,6 @@ class ForwardView extends GetWidget with AppLoaderMixin { ForwardHeaderWidget( imagePaths: _imagePaths, responsiveUtils: _responsiveUtils, - addEmailForward: () => controller.goToAddEmailsForward(), ), SizedBox(height: _responsiveUtils.isWebDesktop(context) ? 24 : 16), _buildLoadingView(), 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 index f3982a47d..cc0199c8e 100644 --- a/lib/features/manage_account/presentation/forward/widgets/forward_header_widget.dart +++ b/lib/features/manage_account/presentation/forward/widgets/forward_header_widget.dart @@ -1,19 +1,20 @@ 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/utils/style_utils.dart'; import 'package:core/presentation/views/button/button_builder.dart'; import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:tmail_ui_user/features/manage_account/presentation/forward/forward_controller.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; -class ForwardHeaderWidget extends StatelessWidget { +class ForwardHeaderWidget extends GetWidget { 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; @@ -32,9 +33,10 @@ class ForwardHeaderWidget extends StatelessWidget { fontSize: 17, fontWeight: FontWeight.bold, color: Colors.black)), - const SizedBox(height: 4), const SizedBox(height: 24), _buildButtonAddNewEmailsForward(context), + const SizedBox(height: 24), + Obx(() => _buildButtonSwitchKeepLocalCopy(context)), ]), ); } @@ -57,7 +59,7 @@ class ForwardHeaderWidget extends StatelessWidget { color: Colors.white, fontWeight: FontWeight.w500, )) - ..onPressActionClick(() => addEmailForward.call()) + ..onPressActionClick(() => controller.goToAddEmailsForward()) ..text( AppLocalizations.of(context).addRecipients, isVertical: false, @@ -79,7 +81,7 @@ class ForwardHeaderWidget extends StatelessWidget { color: Colors.white, fontWeight: FontWeight.w500, )) - ..onPressActionClick(() => addEmailForward.call()) + ..onPressActionClick(() => controller.getCurrentForwardLocalCopyState()) ..text( AppLocalizations.of(context).addRecipients, isVertical: false, @@ -87,4 +89,29 @@ class ForwardHeaderWidget extends StatelessWidget { .build(); } } + + Widget _buildButtonSwitchKeepLocalCopy(BuildContext context) { + if(controller.currentForward.value != null) { + return SizedBox( + width: 250, + child: SwitchListTile( + contentPadding: const EdgeInsets.symmetric(horizontal: 0), + title: Text(AppLocalizations.of(context).keepLocalCopyForwardLabel, + overflow: CommonTextStyle.defaultTextOverFlow, + softWrap: CommonTextStyle.defaultSoftWrap, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.w400, + color: Colors.black)), + value: controller.getCurrentForwardLocalCopyState(), + onChanged: (_) { + controller.handleEditLocalCopy(); + }, + controlAffinity: ListTileControlAffinity.trailing, + ), + ); + } else { + return const SizedBox.shrink(); + } + } } diff --git a/lib/l10n/intl_messages.arb b/lib/l10n/intl_messages.arb index 406f8055e..396c6a09e 100644 --- a/lib/l10n/intl_messages.arb +++ b/lib/l10n/intl_messages.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2022-08-20T20:59:54.192845", + "@@last_modified": "2022-08-21T10:21:05.186351", "initializing_data": "Initializing data...", "@initializing_data": { "type": "text", @@ -1892,8 +1892,8 @@ "placeholders_order": [], "placeholders": {} }, - "headerEmailsForward": "Emails forward", - "@headerEmailsForward": { + "headerRecipients": "Recipients", + "@headerRecipients": { "type": "text", "placeholders_order": [], "placeholders": {} @@ -2066,14 +2066,14 @@ "placeholders_order": [], "placeholders": {} }, - "addEmailForward": "Add Email", - "@addEmailForward": { + "addRecipients": "Add Recipients", + "@addRecipients": { "type": "text", "placeholders_order": [], "placeholders": {} }, - "emailForwardLabel": "Name or Email address", - "@emailForwardLabel": { + "recipientsLabel": "Name or Email address", + "@recipientsLabel": { "type": "text", "placeholders_order": [], "placeholders": {} @@ -2083,5 +2083,23 @@ "type": "text", "placeholders_order": [], "placeholders": {} + }, + "toastMessageLocalCopyEnable": "Keep local copy enable.", + "@toastMessageLocalCopyEnable": { + "type": "text", + "placeholders_order": [], + "placeholders": {} + }, + "toastMessageLocalCopyDisable": "Keep local copy disable.", + "@toastMessageLocalCopyDisable": { + "type": "text", + "placeholders_order": [], + "placeholders": {} + }, + "keepLocalCopyForwardLabel": "Keep local copy", + "@keepLocalCopyForwardLabel": { + "type": "text", + "placeholders_order": [], + "placeholders": {} } } \ No newline at end of file diff --git a/lib/main/localizations/app_localizations.dart b/lib/main/localizations/app_localizations.dart index 6cfc14330..734f4dc4c 100644 --- a/lib/main/localizations/app_localizations.dart +++ b/lib/main/localizations/app_localizations.dart @@ -2153,4 +2153,23 @@ class AppLocalizations { 'The emails has been added from the recipient list.', name: 'toastMessageAddRecipientsSuccessfully'); } + + String get toastMessageLocalCopyEnable { + return Intl.message( + 'Keep local copy enable.', + name: 'toastMessageLocalCopyEnable'); + } + + String get toastMessageLocalCopyDisable { + return Intl.message( + 'Keep local copy disable.', + name: 'toastMessageLocalCopyDisable'); + } + + String get keepLocalCopyForwardLabel { + return Intl.message( + 'Keep local copy', + name: 'keepLocalCopyForwardLabel', + ); + } } \ No newline at end of file