TF-657 Add interactor/repository/datasource for SendReceiptToSender

This commit is contained in:
dab246
2022-10-19 21:09:37 +07:00
committed by Dat H. Pham
parent 398654a79d
commit 4d7ba01f00
11 changed files with 191 additions and 15 deletions
@@ -55,7 +55,8 @@ class EmailAPI {
EmailProperty.htmlBody,
EmailProperty.attachments,
EmailProperty.headers,
EmailProperty.keywords
EmailProperty.keywords,
EmailProperty.mailboxIds,
}))
..addFetchHTMLBodyValues(true);
@@ -0,0 +1,49 @@
import 'dart:async';
import 'package:jmap_dart_client/http/http_client.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/patch_object.dart';
import 'package:jmap_dart_client/jmap/core/reference_id.dart';
import 'package:jmap_dart_client/jmap/core/reference_prefix.dart';
import 'package:jmap_dart_client/jmap/jmap_request.dart';
import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
import 'package:jmap_dart_client/jmap/mail/email/submission/email_submission_id.dart';
import 'package:jmap_dart_client/jmap/mdn/mdn.dart';
import 'package:jmap_dart_client/jmap/mdn/send/mdn_send_method.dart';
import 'package:jmap_dart_client/jmap/mdn/send/mdn_send_response.dart';
import 'package:tmail_ui_user/features/email/domain/model/send_receipt_to_sender_request.dart';
class MdnAPI {
final HttpClient _httpClient;
MdnAPI(this._httpClient);
Future<MDN?> sendReceiptToSender(
AccountId accountId,
SendReceiptToSenderRequest request,
) async {
final mdnSendMethod = MDNSendMethod(
accountId,
{request.sendId: request.mdn},
request.identityId
)..addOnSuccessUpdateEmail({
EmailSubmissionId(ReferenceId(ReferencePrefix.defaultPrefix, request.sendId)): PatchObject({
KeyWordIdentifier.mdnSent.toPatchObjectJson(): true
})
});
final requestBuilder = JmapRequestBuilder(_httpClient, ProcessingInvocation());
final mdnSendInvocation = requestBuilder.invocation(mdnSendMethod);
final response = await (requestBuilder
..usings(mdnSendMethod.requiredCapabilities))
.build()
.execute();
final mdnSendResponse = response.parse<MDNSendResponse>(
mdnSendInvocation.methodCallId,
MDNSendResponse.deserialize);
return mdnSendResponse?.sent?[request.sendId];
}
}