TF-80 Move email to Mailbox in Email Detailed view

This commit is contained in:
dab246
2021-09-21 01:26:50 +07:00
committed by Dat H. Pham
parent c227df8df2
commit afc8c0fe77
18 changed files with 222 additions and 16 deletions
@@ -26,6 +26,7 @@ import 'package:jmap_dart_client/jmap/mail/email/submission/set/set_email_submis
import 'package:path_provider/path_provider.dart';
import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart';
import 'package:model/model.dart';
import 'package:tmail_ui_user/features/email/domain/model/move_request.dart';
class EmailAPI {
@@ -186,4 +187,32 @@ class EmailAPI {
accountRequest.basicAuth,
cancelToken: cancelToken);
}
Future<bool> moveToMailbox(AccountId accountId, MoveRequest moveRequest) async {
final setEmailMethod = SetEmailMethod(accountId)
..addUpdates({
moveRequest.emailId.id: moveRequest.currentMailboxId
.generateMoveToMailboxActionPath(moveRequest.destinationMailboxId)
});
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
final setEmailInvocation = requestBuilder.invocation(setEmailMethod);
final response = await (requestBuilder
..usings(setEmailMethod.requiredCapabilities))
.build()
.execute();
final setEmailResponse = response.parse<SetEmailResponse>(
setEmailInvocation.methodCallId,
SetEmailResponse.deserialize);
return Future.sync(() async {
final emailUpdated = setEmailResponse!.updated![moveRequest.emailId.id];
return emailUpdated == null;
}).catchError((error) {
throw error;
});
}
}