TF-1604: Add requiredCapabilities support TeamMailbox for GetEmailMethod

(cherry picked from commit 3922303e63a8e910511361019a54ea13801e3f92)
This commit is contained in:
HuyNguyen
2023-03-21 23:29:45 +07:00
committed by Dat Vu
parent 890ca4c8cd
commit 8a28225e05
41 changed files with 516 additions and 197 deletions
@@ -1,6 +1,7 @@
import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
@@ -18,7 +19,7 @@ class EmptyTrashFolderInteractor {
this._emailRepository
);
Stream<Either<Failure, Success>> execute(AccountId accountId, MailboxId trashMailboxId) async* {
Stream<Either<Failure, Success>> execute(Session session, AccountId accountId, MailboxId trashMailboxId) async* {
try {
yield Right<Failure, Success>(LoadingState());
@@ -30,7 +31,7 @@ class EmptyTrashFolderInteractor {
final currentMailboxState = listState.first;
final currentEmailState = listState.last;
final result = await threadRepository.emptyTrashFolder(accountId, trashMailboxId);
final result = await threadRepository.emptyTrashFolder(session, accountId, trashMailboxId);
if (result.isNotEmpty) {
yield Right<Failure, Success>(EmptyTrashFolderSuccess(
currentMailboxState: currentMailboxState,
@@ -3,6 +3,7 @@ import 'package:core/presentation/state/success.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:tmail_ui_user/features/thread/domain/repository/thread_repository.dart';
import 'package:tmail_ui_user/features/thread/domain/state/get_email_by_id_state.dart';
@@ -13,6 +14,7 @@ class GetEmailByIdInteractor {
GetEmailByIdInteractor(this._threadRepository);
Stream<Either<Failure, Success>> execute(
Session session,
AccountId accountId,
EmailId emailId,
{
@@ -21,7 +23,7 @@ class GetEmailByIdInteractor {
) async* {
try {
yield Right<Failure, Success>(GetEmailByIdLoading());
final email = await _threadRepository.getEmailById(accountId, emailId, properties: properties);
final email = await _threadRepository.getEmailById(session, accountId, emailId, properties: properties);
yield Right<Failure, Success>(GetEmailByIdSuccess(email));
} catch (e) {
yield Left<Failure, Success>(GetEmailByIdFailure(e));
@@ -2,6 +2,7 @@ import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart';
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
import 'package:tmail_ui_user/features/thread/domain/model/email_filter.dart';
@@ -16,6 +17,7 @@ class GetEmailsInMailboxInteractor {
GetEmailsInMailboxInteractor(this.threadRepository);
Stream<Either<Failure, Success>> execute(
Session session,
AccountId accountId,
{
UnsignedInt? limit,
@@ -30,6 +32,7 @@ class GetEmailsInMailboxInteractor {
yield* threadRepository
.getAllEmail(
session,
accountId,
limit: limit,
sort: sort,
@@ -2,6 +2,7 @@ import 'package:core/core.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart';
import 'package:tmail_ui_user/features/thread/domain/model/email_filter.dart';
import 'package:tmail_ui_user/features/thread/domain/model/email_response.dart';
@@ -16,6 +17,7 @@ class RefreshChangesEmailsInMailboxInteractor {
RefreshChangesEmailsInMailboxInteractor(this.threadRepository);
Stream<Either<Failure, Success>> execute(
Session session,
AccountId accountId,
jmap.State currentState,
{
@@ -30,6 +32,7 @@ class RefreshChangesEmailsInMailboxInteractor {
try {
yield* threadRepository
.refreshChanges(
session,
accountId,
currentState,
sort: sort,
@@ -1,5 +1,6 @@
import 'package:core/core.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:model/model.dart';
import 'package:dartz/dartz.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
@@ -17,6 +18,7 @@ class SearchEmailInteractor {
SearchEmailInteractor(this.threadRepository);
Stream<Either<Failure, Success>> execute(
Session session,
AccountId accountId,
{
UnsignedInt? limit,
@@ -29,6 +31,7 @@ class SearchEmailInteractor {
yield Right(SearchingState());
final emailList = await threadRepository.searchEmails(
session,
accountId,
limit: limit,
sort: sort,
@@ -1,5 +1,6 @@
import 'package:core/core.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:model/model.dart';
import 'package:dartz/dartz.dart';
@@ -18,6 +19,7 @@ class SearchMoreEmailInteractor {
SearchMoreEmailInteractor(this.threadRepository);
Stream<Either<Failure, Success>> execute(
Session session,
AccountId accountId,
{
UnsignedInt? limit,
@@ -31,6 +33,7 @@ class SearchMoreEmailInteractor {
yield Right(SearchingMoreState());
final emailList = await threadRepository.searchEmails(
session,
accountId,
limit: limit,
sort: sort,