TF-859 Keep local copy in Forwarding
This commit is contained in:
@@ -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/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_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_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/model/identities_response.dart';
|
||||||
|
|
||||||
abstract class ManageAccountDataSource {
|
abstract class ManageAccountDataSource {
|
||||||
@@ -44,4 +45,6 @@ abstract class ManageAccountDataSource {
|
|||||||
|
|
||||||
Future<TMailForward> addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest);
|
Future<TMailForward> addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest);
|
||||||
|
|
||||||
|
Future<TMailForward> editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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/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_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_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/model/identities_response.dart';
|
||||||
|
|
||||||
class ManageAccountDataSourceImpl extends ManageAccountDataSource {
|
class ManageAccountDataSourceImpl extends ManageAccountDataSource {
|
||||||
@@ -155,4 +156,13 @@ class ManageAccountDataSourceImpl extends ManageAccountDataSource {
|
|||||||
throw error;
|
throw error;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<TMailForward> editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest) {
|
||||||
|
return Future.sync(() async {
|
||||||
|
return await manageAccountAPI.updateForward(accountId, editRequest.newTMailForward);
|
||||||
|
}).catchError((error) {
|
||||||
|
throw error;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -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/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_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_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/model/identities_response.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart';
|
import 'package:tmail_ui_user/features/manage_account/domain/repository/manage_account_repository.dart';
|
||||||
|
|
||||||
@@ -92,4 +93,9 @@ class ManageAccountRepositoryImpl extends ManageAccountRepository {
|
|||||||
Future<TMailForward> addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest) {
|
Future<TMailForward> addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest) {
|
||||||
return dataSource.addRecipientsInForwarding(accountId, addRequest);
|
return dataSource.addRecipientsInForwarding(accountId, addRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<TMailForward> editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest) {
|
||||||
|
return dataSource.editLocalCopyInForwarding(accountId, editRequest);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -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<Object?> get props => [currentForward, keepLocalCopy];
|
||||||
|
}
|
||||||
@@ -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/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_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_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/model/identities_response.dart';
|
||||||
|
|
||||||
abstract class ManageAccountRepository {
|
abstract class ManageAccountRepository {
|
||||||
@@ -43,4 +44,6 @@ abstract class ManageAccountRepository {
|
|||||||
Future<TMailForward> deleteRecipientInForwarding(AccountId accountId, DeleteRecipientInForwardingRequest deleteRequest);
|
Future<TMailForward> deleteRecipientInForwarding(AccountId accountId, DeleteRecipientInForwardingRequest deleteRequest);
|
||||||
|
|
||||||
Future<TMailForward> addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest);
|
Future<TMailForward> addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest);
|
||||||
|
|
||||||
|
Future<TMailForward> editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest);
|
||||||
}
|
}
|
||||||
@@ -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<Object?> get props => [forward];
|
||||||
|
}
|
||||||
|
|
||||||
|
class EditLocalCopyInForwardingFailure extends FeatureFailure {
|
||||||
|
final dynamic exception;
|
||||||
|
|
||||||
|
EditLocalCopyInForwardingFailure(this.exception);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [exception];
|
||||||
|
}
|
||||||
+29
@@ -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<Either<Failure, Success>> execute(
|
||||||
|
AccountId accountId,
|
||||||
|
EditLocalCopyInForwardingRequest editRequest,
|
||||||
|
) async* {
|
||||||
|
try {
|
||||||
|
final result = await manageAccountRepository.editLocalCopyInForwarding(
|
||||||
|
accountId,
|
||||||
|
editRequest);
|
||||||
|
yield Right<Failure, Success>(EditLocalCopyInForwardingSuccess(result));
|
||||||
|
} catch (exception) {
|
||||||
|
yield Left<Failure, Success>(EditLocalCopyInForwardingFailure(exception));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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/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/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/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/domain/usecases/get_forward_interactor.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/forward/forward_controller.dart';
|
import 'package:tmail_ui_user/features/manage_account/presentation/forward/forward_controller.dart';
|
||||||
|
|
||||||
@@ -14,6 +15,7 @@ class ForwardBindings extends BaseBindings {
|
|||||||
Get.find<GetForwardInteractor>(),
|
Get.find<GetForwardInteractor>(),
|
||||||
Get.find<DeleteRecipientInForwardingInteractor>(),
|
Get.find<DeleteRecipientInForwardingInteractor>(),
|
||||||
Get.find<AddRecipientsInForwardingInteractor>(),
|
Get.find<AddRecipientsInForwardingInteractor>(),
|
||||||
|
Get.find<EditLocalCopyInForwardingInteractor>(),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,6 +30,7 @@ class ForwardBindings extends BaseBindings {
|
|||||||
Get.lazyPut(() => GetForwardInteractor(Get.find<ManageAccountRepository>()));
|
Get.lazyPut(() => GetForwardInteractor(Get.find<ManageAccountRepository>()));
|
||||||
Get.lazyPut(() => DeleteRecipientInForwardingInteractor(Get.find<ManageAccountRepository>()));
|
Get.lazyPut(() => DeleteRecipientInForwardingInteractor(Get.find<ManageAccountRepository>()));
|
||||||
Get.lazyPut(() => AddRecipientsInForwardingInteractor(Get.find<ManageAccountRepository>()));
|
Get.lazyPut(() => AddRecipientsInForwardingInteractor(Get.find<ManageAccountRepository>()));
|
||||||
|
Get.lazyPut(() => EditLocalCopyInForwardingInteractor(Get.find<ManageAccountRepository>()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -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/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/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/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/add_recipient_in_forwarding_state.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/state/delete_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: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/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/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/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/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/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/extensions/tmail_forward_extension.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/presentation/manage_account_dashboard_controller.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 GetForwardInteractor _getForwardInteractor;
|
||||||
final DeleteRecipientInForwardingInteractor _deleteRecipientInForwardingInteractor;
|
final DeleteRecipientInForwardingInteractor _deleteRecipientInForwardingInteractor;
|
||||||
final AddRecipientsInForwardingInteractor _addRecipientsInForwardingInteractor;
|
final AddRecipientsInForwardingInteractor _addRecipientsInForwardingInteractor;
|
||||||
|
final EditLocalCopyInForwardingInteractor _editLocalCopyInForwardingInteractor;
|
||||||
|
|
||||||
final accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
final accountDashBoardController = Get.find<ManageAccountDashBoardController>();
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
||||||
@@ -45,7 +49,7 @@ class ForwardController extends BaseController {
|
|||||||
final selectionMode = Rx<SelectMode>(SelectMode.INACTIVE);
|
final selectionMode = Rx<SelectMode>(SelectMode.INACTIVE);
|
||||||
final listRecipientForward = RxList<RecipientForward>();
|
final listRecipientForward = RxList<RecipientForward>();
|
||||||
|
|
||||||
TMailForward? currentForward;
|
final currentForward = Rxn<TMailForward>();
|
||||||
|
|
||||||
final listForwards = <String>[].obs;
|
final listForwards = <String>[].obs;
|
||||||
|
|
||||||
@@ -53,6 +57,7 @@ class ForwardController extends BaseController {
|
|||||||
this._getForwardInteractor,
|
this._getForwardInteractor,
|
||||||
this._deleteRecipientInForwardingInteractor,
|
this._deleteRecipientInForwardingInteractor,
|
||||||
this._addRecipientsInForwardingInteractor,
|
this._addRecipientsInForwardingInteractor,
|
||||||
|
this._editLocalCopyInForwardingInteractor,
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -65,12 +70,14 @@ class ForwardController extends BaseController {
|
|||||||
},
|
},
|
||||||
(success) {
|
(success) {
|
||||||
if (success is GetForwardSuccess) {
|
if (success is GetForwardSuccess) {
|
||||||
currentForward = success.forward;
|
currentForward.value = success.forward;
|
||||||
listRecipientForward.value = currentForward!.listRecipientForward;
|
listRecipientForward.value = currentForward.value!.listRecipientForward;
|
||||||
} else if (success is DeleteRecipientInForwardingSuccess) {
|
} else if (success is DeleteRecipientInForwardingSuccess) {
|
||||||
_handleDeleteRecipientSuccess(success);
|
_handleDeleteRecipientSuccess(success);
|
||||||
} else if (success is AddRecipientsInForwardingSuccess) {
|
} else if (success is AddRecipientsInForwardingSuccess) {
|
||||||
_handleAddRecipientsSuccess(success);
|
_handleAddRecipientsSuccess(success);
|
||||||
|
} else if (success is EditLocalCopyInForwardingSuccess) {
|
||||||
|
_handleEditLocalCopySuccess(success);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -128,11 +135,11 @@ class ForwardController extends BaseController {
|
|||||||
popBack();
|
popBack();
|
||||||
|
|
||||||
final accountId = accountDashBoardController.accountId.value;
|
final accountId = accountDashBoardController.accountId.value;
|
||||||
if (accountId != null && currentForward != null) {
|
if (accountId != null && currentForward.value != null) {
|
||||||
consumeState(_deleteRecipientInForwardingInteractor.execute(
|
consumeState(_deleteRecipientInForwardingInteractor.execute(
|
||||||
accountId,
|
accountId,
|
||||||
DeleteRecipientInForwardingRequest(
|
DeleteRecipientInForwardingRequest(
|
||||||
currentForward: currentForward!,
|
currentForward: currentForward.value!,
|
||||||
listRecipientDeleted: listRecipients)));
|
listRecipientDeleted: listRecipients)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -140,13 +147,14 @@ class ForwardController extends BaseController {
|
|||||||
void _handleDeleteRecipientSuccess(DeleteRecipientInForwardingSuccess success) {
|
void _handleDeleteRecipientSuccess(DeleteRecipientInForwardingSuccess success) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastWithIcon(
|
_appToast.showToastWithIcon(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
message: AppLocalizations.of(currentContext!).toastMessageDeleteRecipientSuccessfully,
|
message: AppLocalizations.of(currentContext!).toastMessageDeleteRecipientSuccessfully,
|
||||||
icon: _imagePaths.icSelected);
|
icon: _imagePaths.icSelected,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
currentForward = success.forward;
|
currentForward.value = success.forward;
|
||||||
listRecipientForward.value = currentForward!.listRecipientForward;
|
listRecipientForward.value = currentForward.value!.listRecipientForward;
|
||||||
selectionMode.value = SelectMode.INACTIVE;
|
selectionMode.value = SelectMode.INACTIVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,7 +238,7 @@ class ForwardController extends BaseController {
|
|||||||
void goToAddEmailsForward() async {
|
void goToAddEmailsForward() async {
|
||||||
final accountId = accountDashBoardController.accountId.value;
|
final accountId = accountDashBoardController.accountId.value;
|
||||||
if (accountId != null) {
|
if (accountId != null) {
|
||||||
if(kIsWeb) {
|
if (kIsWeb) {
|
||||||
_openMailsForwardCreatorOverlay();
|
_openMailsForwardCreatorOverlay();
|
||||||
} else {
|
} else {
|
||||||
final listEmail = await push(
|
final listEmail = await push(
|
||||||
@@ -252,11 +260,11 @@ class ForwardController extends BaseController {
|
|||||||
void handleAddRecipients(List<EmailAddress> listEmailAddress) {
|
void handleAddRecipients(List<EmailAddress> listEmailAddress) {
|
||||||
final accountId = accountDashBoardController.accountId.value;
|
final accountId = accountDashBoardController.accountId.value;
|
||||||
final listRecipients = listEmailAddress.map((e) => e.emailAddress).toSet();
|
final listRecipients = listEmailAddress.map((e) => e.emailAddress).toSet();
|
||||||
if (accountId != null && currentForward != null) {
|
if (accountId != null && currentForward.value != null) {
|
||||||
consumeState(_addRecipientsInForwardingInteractor.execute(
|
consumeState(_addRecipientsInForwardingInteractor.execute(
|
||||||
accountId,
|
accountId,
|
||||||
AddRecipientInForwardingRequest(
|
AddRecipientInForwardingRequest(
|
||||||
currentForward: currentForward!,
|
currentForward: currentForward.value!,
|
||||||
listRecipientAdded: listRecipients)));
|
listRecipientAdded: listRecipients)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -264,12 +272,43 @@ class ForwardController extends BaseController {
|
|||||||
void _handleAddRecipientsSuccess(AddRecipientsInForwardingSuccess success) {
|
void _handleAddRecipientsSuccess(AddRecipientsInForwardingSuccess success) {
|
||||||
if (currentOverlayContext != null && currentContext != null) {
|
if (currentOverlayContext != null && currentContext != null) {
|
||||||
_appToast.showToastWithIcon(
|
_appToast.showToastWithIcon(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
message: AppLocalizations.of(currentContext!).toastMessageAddRecipientsSuccessfully,
|
message: AppLocalizations.of(currentContext!).toastMessageAddRecipientsSuccessfully,
|
||||||
icon: _imagePaths.icSelected);
|
icon: _imagePaths.icSelected,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
currentForward = success.forward;
|
currentForward.value = success.forward;
|
||||||
listRecipientForward.value = currentForward!.listRecipientForward;
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -27,7 +27,6 @@ class ForwardView extends GetWidget<ForwardController> with AppLoaderMixin {
|
|||||||
ForwardHeaderWidget(
|
ForwardHeaderWidget(
|
||||||
imagePaths: _imagePaths,
|
imagePaths: _imagePaths,
|
||||||
responsiveUtils: _responsiveUtils,
|
responsiveUtils: _responsiveUtils,
|
||||||
addEmailForward: () => controller.goToAddEmailsForward(),
|
|
||||||
),
|
),
|
||||||
SizedBox(height: _responsiveUtils.isWebDesktop(context) ? 24 : 16),
|
SizedBox(height: _responsiveUtils.isWebDesktop(context) ? 24 : 16),
|
||||||
_buildLoadingView(),
|
_buildLoadingView(),
|
||||||
|
|||||||
+33
-6
@@ -1,19 +1,20 @@
|
|||||||
import 'package:core/presentation/extensions/color_extension.dart';
|
import 'package:core/presentation/extensions/color_extension.dart';
|
||||||
import 'package:core/presentation/resources/image_paths.dart';
|
import 'package:core/presentation/resources/image_paths.dart';
|
||||||
import 'package:core/presentation/utils/responsive_utils.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:core/presentation/views/button/button_builder.dart';
|
||||||
import 'package:flutter/material.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';
|
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||||
|
|
||||||
class ForwardHeaderWidget extends StatelessWidget {
|
class ForwardHeaderWidget extends GetWidget<ForwardController> {
|
||||||
const ForwardHeaderWidget({
|
const ForwardHeaderWidget({
|
||||||
Key? key,
|
Key? key,
|
||||||
required this.addEmailForward,
|
|
||||||
required this.imagePaths,
|
required this.imagePaths,
|
||||||
required this.responsiveUtils,
|
required this.responsiveUtils,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
final VoidCallback addEmailForward;
|
|
||||||
final ImagePaths imagePaths;
|
final ImagePaths imagePaths;
|
||||||
final ResponsiveUtils responsiveUtils;
|
final ResponsiveUtils responsiveUtils;
|
||||||
|
|
||||||
@@ -32,9 +33,10 @@ class ForwardHeaderWidget extends StatelessWidget {
|
|||||||
fontSize: 17,
|
fontSize: 17,
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
color: Colors.black)),
|
color: Colors.black)),
|
||||||
const SizedBox(height: 4),
|
|
||||||
const SizedBox(height: 24),
|
const SizedBox(height: 24),
|
||||||
_buildButtonAddNewEmailsForward(context),
|
_buildButtonAddNewEmailsForward(context),
|
||||||
|
const SizedBox(height: 24),
|
||||||
|
Obx(() => _buildButtonSwitchKeepLocalCopy(context)),
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -57,7 +59,7 @@ class ForwardHeaderWidget extends StatelessWidget {
|
|||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
))
|
))
|
||||||
..onPressActionClick(() => addEmailForward.call())
|
..onPressActionClick(() => controller.goToAddEmailsForward())
|
||||||
..text(
|
..text(
|
||||||
AppLocalizations.of(context).addRecipients,
|
AppLocalizations.of(context).addRecipients,
|
||||||
isVertical: false,
|
isVertical: false,
|
||||||
@@ -79,7 +81,7 @@ class ForwardHeaderWidget extends StatelessWidget {
|
|||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
))
|
))
|
||||||
..onPressActionClick(() => addEmailForward.call())
|
..onPressActionClick(() => controller.getCurrentForwardLocalCopyState())
|
||||||
..text(
|
..text(
|
||||||
AppLocalizations.of(context).addRecipients,
|
AppLocalizations.of(context).addRecipients,
|
||||||
isVertical: false,
|
isVertical: false,
|
||||||
@@ -87,4 +89,29 @@ class ForwardHeaderWidget extends StatelessWidget {
|
|||||||
.build();
|
.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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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": "Initializing data...",
|
||||||
"@initializing_data": {
|
"@initializing_data": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
@@ -1892,8 +1892,8 @@
|
|||||||
"placeholders_order": [],
|
"placeholders_order": [],
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
},
|
},
|
||||||
"headerEmailsForward": "Emails forward",
|
"headerRecipients": "Recipients",
|
||||||
"@headerEmailsForward": {
|
"@headerRecipients": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders_order": [],
|
"placeholders_order": [],
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
@@ -2066,14 +2066,14 @@
|
|||||||
"placeholders_order": [],
|
"placeholders_order": [],
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
},
|
},
|
||||||
"addEmailForward": "Add Email",
|
"addRecipients": "Add Recipients",
|
||||||
"@addEmailForward": {
|
"@addRecipients": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders_order": [],
|
"placeholders_order": [],
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
},
|
},
|
||||||
"emailForwardLabel": "Name or Email address",
|
"recipientsLabel": "Name or Email address",
|
||||||
"@emailForwardLabel": {
|
"@recipientsLabel": {
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders_order": [],
|
"placeholders_order": [],
|
||||||
"placeholders": {}
|
"placeholders": {}
|
||||||
@@ -2083,5 +2083,23 @@
|
|||||||
"type": "text",
|
"type": "text",
|
||||||
"placeholders_order": [],
|
"placeholders_order": [],
|
||||||
"placeholders": {}
|
"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": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2153,4 +2153,23 @@ class AppLocalizations {
|
|||||||
'The emails has been added from the recipient list.',
|
'The emails has been added from the recipient list.',
|
||||||
name: 'toastMessageAddRecipientsSuccessfully');
|
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',
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user