TF-3334 Remove Email/get of unsubscribe email action
This commit is contained in:
@@ -143,7 +143,7 @@ abstract class EmailDataSource {
|
|||||||
|
|
||||||
Future<SendingEmail> getStoredSendingEmail(AccountId accountId, UserName userName, String sendingId);
|
Future<SendingEmail> getStoredSendingEmail(AccountId accountId, UserName userName, String sendingId);
|
||||||
|
|
||||||
Future<Email> unsubscribeMail(Session session, AccountId accountId, EmailId emailId);
|
Future<void> unsubscribeMail(Session session, AccountId accountId, EmailId emailId);
|
||||||
|
|
||||||
Future<EmailRecoveryAction> restoreDeletedMessage(RestoredDeletedMessageRequest restoredDeletedMessageRequest);
|
Future<EmailRecoveryAction> restoreDeletedMessage(RestoredDeletedMessageRequest restoredDeletedMessageRequest);
|
||||||
|
|
||||||
|
|||||||
@@ -307,7 +307,7 @@ class EmailDataSourceImpl extends EmailDataSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<Email> unsubscribeMail(Session session, AccountId accountId, EmailId emailId) {
|
Future<void> unsubscribeMail(Session session, AccountId accountId, EmailId emailId) {
|
||||||
return Future.sync(() async {
|
return Future.sync(() async {
|
||||||
return await emailAPI.unsubscribeMail(session, accountId, emailId);
|
return await emailAPI.unsubscribeMail(session, accountId, emailId);
|
||||||
}).catchError(_exceptionThrower.throwException);
|
}).catchError(_exceptionThrower.throwException);
|
||||||
|
|||||||
@@ -339,7 +339,7 @@ class EmailHiveCacheDataSourceImpl extends EmailDataSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<Email> unsubscribeMail(Session session, AccountId accountId, EmailId emailId) {
|
Future<void> unsubscribeMail(Session session, AccountId accountId, EmailId emailId) {
|
||||||
throw UnimplementedError();
|
throw UnimplementedError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -678,17 +678,13 @@ class EmailAPI with HandleSetErrorMixin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<Email> unsubscribeMail(Session session, AccountId accountId, EmailId emailId) async {
|
Future<void> unsubscribeMail(Session session, AccountId accountId, EmailId emailId) async {
|
||||||
final setEmailMethod = SetEmailMethod(accountId)
|
final setEmailMethod = SetEmailMethod(accountId)
|
||||||
..addUpdates(emailId.generateMapUpdateObjectUnsubscribeMail());
|
..addUpdates(emailId.generateMapUpdateObjectUnsubscribeMail());
|
||||||
|
|
||||||
final getEmailMethod = GetEmailMethod(accountId)
|
|
||||||
..addIds({emailId.id})
|
|
||||||
..addProperties(ThreadConstants.propertiesDefault);
|
|
||||||
|
|
||||||
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
||||||
requestBuilder.invocation(setEmailMethod);
|
requestBuilder.invocation(setEmailMethod);
|
||||||
final getEmailInvocation = requestBuilder.invocation(getEmailMethod);
|
final setEmailInvocation = requestBuilder.invocation(setEmailMethod);
|
||||||
|
|
||||||
final capabilities = setEmailMethod.requiredCapabilities.toCapabilitiesSupportTeamMailboxes(session, accountId);
|
final capabilities = setEmailMethod.requiredCapabilities.toCapabilitiesSupportTeamMailboxes(session, accountId);
|
||||||
|
|
||||||
@@ -697,14 +693,19 @@ class EmailAPI with HandleSetErrorMixin {
|
|||||||
.build()
|
.build()
|
||||||
.execute();
|
.execute();
|
||||||
|
|
||||||
final getEmailResponse = response.parse<GetEmailResponse>(
|
final setEmailResponse = response.parse<SetEmailResponse>(
|
||||||
getEmailInvocation.methodCallId,
|
setEmailInvocation.methodCallId,
|
||||||
GetEmailResponse.deserialize);
|
SetEmailResponse.deserialize,
|
||||||
|
);
|
||||||
|
|
||||||
if (getEmailResponse?.list.isNotEmpty == true) {
|
final emailIdUpdated = setEmailResponse?.updated
|
||||||
return getEmailResponse!.list.first;
|
?.keys
|
||||||
} else {
|
.map((id) => EmailId(id))
|
||||||
throw NotFoundEmailException();
|
.toList() ?? [];
|
||||||
|
final mapErrors = handleSetResponse([setEmailResponse]);
|
||||||
|
|
||||||
|
if (emailIdUpdated.isEmpty) {
|
||||||
|
throw SetMethodException(mapErrors);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -293,7 +293,7 @@ class EmailRepositoryImpl extends EmailRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<Email> unsubscribeMail(Session session, AccountId accountId, EmailId emailId) {
|
Future<void> unsubscribeMail(Session session, AccountId accountId, EmailId emailId) {
|
||||||
return emailDataSource[DataSourceType.network]!.unsubscribeMail(session, accountId, emailId);
|
return emailDataSource[DataSourceType.network]!.unsubscribeMail(session, accountId, emailId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ abstract class EmailRepository {
|
|||||||
TransformConfiguration configuration
|
TransformConfiguration configuration
|
||||||
);
|
);
|
||||||
|
|
||||||
Future<Email> unsubscribeMail(Session session, AccountId accountId, EmailId emailId);
|
Future<void> unsubscribeMail(Session session, AccountId accountId, EmailId emailId);
|
||||||
|
|
||||||
Future<EmailRecoveryAction> restoreDeletedMessage(RestoredDeletedMessageRequest restoredDeletedMessageRequest);
|
Future<EmailRecoveryAction> restoreDeletedMessage(RestoredDeletedMessageRequest restoredDeletedMessageRequest);
|
||||||
|
|
||||||
|
|||||||
@@ -1,24 +1,17 @@
|
|||||||
import 'package:core/presentation/state/failure.dart';
|
import 'package:core/presentation/state/failure.dart';
|
||||||
import 'package:core/presentation/state/success.dart';
|
import 'package:core/presentation/state/success.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
|
||||||
import 'package:tmail_ui_user/features/base/state/ui_action_state.dart';
|
import 'package:tmail_ui_user/features/base/state/ui_action_state.dart';
|
||||||
|
|
||||||
class UnsubscribeEmailLoading extends LoadingState {}
|
class UnsubscribeEmailLoading extends LoadingState {}
|
||||||
|
|
||||||
class UnsubscribeEmailSuccess extends UIActionState {
|
class UnsubscribeEmailSuccess extends UIActionState {
|
||||||
final Email newEmail;
|
|
||||||
|
|
||||||
UnsubscribeEmailSuccess(
|
UnsubscribeEmailSuccess(
|
||||||
this.newEmail,
|
|
||||||
{
|
{
|
||||||
jmap.State? currentEmailState,
|
jmap.State? currentEmailState,
|
||||||
jmap.State? currentMailboxState,
|
jmap.State? currentMailboxState,
|
||||||
}
|
}
|
||||||
) : super(currentEmailState, currentMailboxState);
|
) : super(currentEmailState, currentMailboxState);
|
||||||
|
|
||||||
@override
|
|
||||||
List<Object?> get props => [newEmail, ...super.props];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class UnsubscribeEmailFailure extends FeatureFailure {
|
class UnsubscribeEmailFailure extends FeatureFailure {
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ class UnsubscribeEmailInteractor {
|
|||||||
try {
|
try {
|
||||||
yield Right(UnsubscribeEmailLoading());
|
yield Right(UnsubscribeEmailLoading());
|
||||||
final currentEmailState = await emailRepository.getEmailState(session, accountId);
|
final currentEmailState = await emailRepository.getEmailState(session, accountId);
|
||||||
final newEmail = await emailRepository.unsubscribeMail(session, accountId, emailId);
|
await emailRepository.unsubscribeMail(session, accountId, emailId);
|
||||||
yield Right(UnsubscribeEmailSuccess(newEmail, currentEmailState: currentEmailState));
|
yield Right(UnsubscribeEmailSuccess(currentEmailState: currentEmailState));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
yield Left(UnsubscribeEmailFailure(exception: e));
|
yield Left(UnsubscribeEmailFailure(exception: e));
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-3
@@ -401,7 +401,7 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
|
|||||||
} else if (success is DeleteSendingEmailSuccess) {
|
} else if (success is DeleteSendingEmailSuccess) {
|
||||||
getAllSendingEmails();
|
getAllSendingEmails();
|
||||||
} else if (success is UnsubscribeEmailSuccess) {
|
} else if (success is UnsubscribeEmailSuccess) {
|
||||||
_handleUnsubscribeMailSuccess(success.newEmail);
|
_handleUnsubscribeMailSuccess();
|
||||||
} else if (success is RestoreDeletedMessageSuccess) {
|
} else if (success is RestoreDeletedMessageSuccess) {
|
||||||
dispatchMailboxUIAction(RefreshChangeMailboxAction(success.currentMailboxState));
|
dispatchMailboxUIAction(RefreshChangeMailboxAction(success.currentMailboxState));
|
||||||
_handleRestoreDeletedMessageSuccess(success.emailRecoveryAction.id!);
|
_handleRestoreDeletedMessageSuccess(success.emailRecoveryAction.id!);
|
||||||
@@ -2599,13 +2599,16 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _handleUnsubscribeMailSuccess(Email email) {
|
void _handleUnsubscribeMailSuccess() {
|
||||||
if (currentContext != null && currentOverlayContext != null) {
|
if (currentContext != null && currentOverlayContext != null) {
|
||||||
appToast.showToastSuccessMessage(
|
appToast.showToastSuccessMessage(
|
||||||
currentOverlayContext!,
|
currentOverlayContext!,
|
||||||
AppLocalizations.of(currentContext!).unsubscribedFromThisMailingList);
|
AppLocalizations.of(currentContext!).unsubscribedFromThisMailingList);
|
||||||
}
|
}
|
||||||
setSelectedEmail(email.toPresentationEmail());
|
final newEmail = selectedEmail.value?.updateKeywords({
|
||||||
|
KeyWordIdentifierExtension.unsubscribeMail: true,
|
||||||
|
});
|
||||||
|
setSelectedEmail(newEmail);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _replaceBrowserHistory({Uri? uri}) {
|
void _replaceBrowserHistory({Uri? uri}) {
|
||||||
|
|||||||
Reference in New Issue
Block a user