TF-2667 Add cancel button in progress send message dialog
This commit is contained in:
@@ -32,7 +32,10 @@ abstract class EmailDataSource {
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailRequest emailRequest,
|
||||
{CreateNewMailboxRequest? mailboxRequest}
|
||||
{
|
||||
CreateNewMailboxRequest? mailboxRequest,
|
||||
CancelToken? cancelToken
|
||||
}
|
||||
);
|
||||
|
||||
Future<List<Email>> markAsRead(Session session, AccountId accountId, List<Email> emails, ReadActions readActions);
|
||||
@@ -79,7 +82,12 @@ abstract class EmailDataSource {
|
||||
|
||||
Future<List<EmailId>> deleteMultipleEmailsPermanently(Session session, AccountId accountId, List<EmailId> emailIds);
|
||||
|
||||
Future<bool> deleteEmailPermanently(Session session, AccountId accountId, EmailId emailId);
|
||||
Future<bool> deleteEmailPermanently(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailId emailId,
|
||||
{CancelToken? cancelToken}
|
||||
);
|
||||
|
||||
Future<void> storeDetailedNewEmail(Session session, AccountId accountId, DetailedEmail detailedEmail);
|
||||
|
||||
|
||||
@@ -46,10 +46,19 @@ class EmailDataSourceImpl extends EmailDataSource {
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailRequest emailRequest,
|
||||
{CreateNewMailboxRequest? mailboxRequest}
|
||||
{
|
||||
CreateNewMailboxRequest? mailboxRequest,
|
||||
CancelToken? cancelToken,
|
||||
}
|
||||
) async {
|
||||
try {
|
||||
return await emailAPI.sendEmail(session, accountId, emailRequest, mailboxRequest: mailboxRequest);
|
||||
return await emailAPI.sendEmail(
|
||||
session,
|
||||
accountId,
|
||||
emailRequest,
|
||||
mailboxRequest: mailboxRequest,
|
||||
cancelToken: cancelToken
|
||||
);
|
||||
} catch (error, stackTrace) {
|
||||
return await _sendEmailExceptionThrower.throwException(error, stackTrace);
|
||||
}
|
||||
@@ -157,9 +166,19 @@ class EmailDataSourceImpl extends EmailDataSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> deleteEmailPermanently(Session session, AccountId accountId, EmailId emailId) {
|
||||
Future<bool> deleteEmailPermanently(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailId emailId,
|
||||
{CancelToken? cancelToken}
|
||||
) {
|
||||
return Future.sync(() async {
|
||||
return await emailAPI.deleteEmailPermanently(session, accountId, emailId);
|
||||
return await emailAPI.deleteEmailPermanently(
|
||||
session,
|
||||
accountId,
|
||||
emailId,
|
||||
cancelToken: cancelToken
|
||||
);
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
|
||||
|
||||
@@ -71,7 +71,12 @@ class EmailHiveCacheDataSourceImpl extends EmailDataSource {
|
||||
);
|
||||
|
||||
@override
|
||||
Future<bool> deleteEmailPermanently(Session session, AccountId accountId, EmailId emailId) {
|
||||
Future<bool> deleteEmailPermanently(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailId emailId,
|
||||
{CancelToken? cancelToken}
|
||||
) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@@ -134,7 +139,15 @@ class EmailHiveCacheDataSourceImpl extends EmailDataSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> sendEmail(Session session, AccountId accountId, EmailRequest emailRequest, {CreateNewMailboxRequest? mailboxRequest}) {
|
||||
Future<bool> sendEmail(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailRequest emailRequest,
|
||||
{
|
||||
CreateNewMailboxRequest? mailboxRequest,
|
||||
CancelToken? cancelToken
|
||||
}
|
||||
) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
|
||||
@@ -117,7 +117,10 @@ class EmailAPI with HandleSetErrorMixin {
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailRequest emailRequest,
|
||||
{CreateNewMailboxRequest? mailboxRequest}
|
||||
{
|
||||
CreateNewMailboxRequest? mailboxRequest,
|
||||
CancelToken? cancelToken,
|
||||
}
|
||||
) async {
|
||||
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
||||
|
||||
@@ -199,7 +202,7 @@ class EmailAPI with HandleSetErrorMixin {
|
||||
final response = await (requestBuilder
|
||||
..usings(capabilities))
|
||||
.build()
|
||||
.execute();
|
||||
.execute(cancelToken: cancelToken);
|
||||
|
||||
final setEmailResponse = response.parse<SetEmailResponse>(
|
||||
setEmailInvocation.methodCallId,
|
||||
@@ -606,7 +609,12 @@ class EmailAPI with HandleSetErrorMixin {
|
||||
return List.empty();
|
||||
}
|
||||
|
||||
Future<bool> deleteEmailPermanently(Session session, AccountId accountId, EmailId emailId) async {
|
||||
Future<bool> deleteEmailPermanently(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailId emailId,
|
||||
{CancelToken? cancelToken}
|
||||
) async {
|
||||
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
|
||||
final setEmailMethod = SetEmailMethod(accountId)
|
||||
..addDestroy({emailId.id});
|
||||
@@ -619,7 +627,7 @@ class EmailAPI with HandleSetErrorMixin {
|
||||
final response = await (requestBuilder
|
||||
..usings(capabilities))
|
||||
.build()
|
||||
.execute();
|
||||
.execute(cancelToken: cancelToken);
|
||||
|
||||
final setEmailResponse = response.parse<SetEmailResponse>(
|
||||
setEmailInvocation.methodCallId,
|
||||
|
||||
@@ -58,9 +58,18 @@ class EmailRepositoryImpl extends EmailRepository {
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailRequest emailRequest,
|
||||
{CreateNewMailboxRequest? mailboxRequest}
|
||||
{
|
||||
CreateNewMailboxRequest? mailboxRequest,
|
||||
CancelToken? cancelToken
|
||||
}
|
||||
) {
|
||||
return emailDataSource[DataSourceType.network]!.sendEmail(session, accountId, emailRequest, mailboxRequest: mailboxRequest);
|
||||
return emailDataSource[DataSourceType.network]!.sendEmail(
|
||||
session,
|
||||
accountId,
|
||||
emailRequest,
|
||||
mailboxRequest: mailboxRequest,
|
||||
cancelToken: cancelToken,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -172,8 +181,18 @@ class EmailRepositoryImpl extends EmailRepository {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> deleteEmailPermanently(Session session, AccountId accountId, EmailId emailId) {
|
||||
return emailDataSource[DataSourceType.network]!.deleteEmailPermanently(session, accountId, emailId);
|
||||
Future<bool> deleteEmailPermanently(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
EmailId emailId,
|
||||
{CancelToken? cancelToken}
|
||||
) {
|
||||
return emailDataSource[DataSourceType.network]!.deleteEmailPermanently(
|
||||
session,
|
||||
accountId,
|
||||
emailId,
|
||||
cancelToken: cancelToken
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
Reference in New Issue
Block a user