TF-82 Create an email as drafts

This commit is contained in:
dab246
2022-02-21 11:52:23 +07:00
committed by Dat H. Pham
parent e739e23c62
commit ea29405f08
14 changed files with 273 additions and 51 deletions
@@ -34,4 +34,6 @@ abstract class EmailDataSource {
List<Email> emails,
MarkStarAction markStarAction
);
Future<bool> saveEmailAsDrafts(AccountId accountId, Email email);
}
@@ -86,4 +86,13 @@ class EmailDataSourceImpl extends EmailDataSource {
throw error;
});
}
@override
Future<bool> saveEmailAsDrafts(AccountId accountId, Email email) {
return Future.sync(() async {
return await emailAPI.saveEmailAsDrafts(accountId, email);
}).catchError((error) {
throw error;
});
}
}
@@ -253,4 +253,28 @@ class EmailAPI {
throw error;
});
}
Future<bool> saveEmailAsDrafts(AccountId accountId, Email email) async {
final setEmailMethod = SetEmailMethod(accountId)
..addCreate(email.id.id, email);
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 {
return setEmailResponse?.created?[email.id.id] != null;
}).catchError((error) {
throw error;
});
}
}
@@ -88,4 +88,9 @@ class EmailRepositoryImpl extends EmailRepository {
})
.toList());
}
@override
Future<bool> saveEmailAsDrafts(AccountId accountId, Email email) {
return emailDataSource.saveEmailAsDrafts(accountId, email);
}
}