diff --git a/lib/features/thread/data/datasource/thread_datasource.dart b/lib/features/thread/data/datasource/thread_datasource.dart index ccd7f46d8..697ead420 100644 --- a/lib/features/thread/data/datasource/thread_datasource.dart +++ b/lib/features/thread/data/datasource/thread_datasource.dart @@ -1,5 +1,8 @@ import 'dart:async'; +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:dartz/dartz.dart' as dartz; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/filter/filter.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; @@ -68,6 +71,8 @@ abstract class ThreadDataSource { Session session, AccountId accountId, MailboxId mailboxId, + int totalEmails, + StreamController> onProgressController ); Future getEmailById(Session session, AccountId accountId, EmailId emailId, {Properties? properties}); diff --git a/lib/features/thread/data/datasource_impl/local_thread_datasource_impl.dart b/lib/features/thread/data/datasource_impl/local_thread_datasource_impl.dart index 769df9377..c563fc0e7 100644 --- a/lib/features/thread/data/datasource_impl/local_thread_datasource_impl.dart +++ b/lib/features/thread/data/datasource_impl/local_thread_datasource_impl.dart @@ -1,5 +1,8 @@ import 'dart:async'; +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:dartz/dartz.dart' as dartz; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/filter/filter.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; @@ -112,6 +115,8 @@ class LocalThreadDataSourceImpl extends ThreadDataSource { Session session, AccountId accountId, MailboxId mailboxId, + int totalEmails, + StreamController> onProgressController ) { throw UnimplementedError(); } diff --git a/lib/features/thread/data/datasource_impl/thread_datasource_impl.dart b/lib/features/thread/data/datasource_impl/thread_datasource_impl.dart index 48c317357..490b1677e 100644 --- a/lib/features/thread/data/datasource_impl/thread_datasource_impl.dart +++ b/lib/features/thread/data/datasource_impl/thread_datasource_impl.dart @@ -1,5 +1,8 @@ import 'dart:async'; +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:dartz/dartz.dart' as dartz; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/filter/filter.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; @@ -115,13 +118,17 @@ class ThreadDataSourceImpl extends ThreadDataSource { Future> emptyMailboxFolder( Session session, AccountId accountId, - MailboxId mailboxId + MailboxId mailboxId, + int totalEmails, + StreamController> onProgressController ) { return Future.sync(() async { return await _threadIsolateWorker.emptyMailboxFolder( session, accountId, - mailboxId + mailboxId, + totalEmails, + onProgressController ); }).catchError(_exceptionThrower.throwException); } diff --git a/lib/features/thread/data/repository/thread_repository_impl.dart b/lib/features/thread/data/repository/thread_repository_impl.dart index 7334f919c..9b4c5d94d 100644 --- a/lib/features/thread/data/repository/thread_repository_impl.dart +++ b/lib/features/thread/data/repository/thread_repository_impl.dart @@ -1,5 +1,8 @@ +import 'dart:async'; import 'package:core/data/model/source_type/data_source_type.dart'; +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; import 'package:core/utils/app_logger.dart'; import 'package:dartz/dartz.dart' as dartz; import 'package:jmap_dart_client/jmap/account_id.dart'; @@ -313,11 +316,20 @@ class ThreadRepositoryImpl extends ThreadRepository { } @override - Future> emptyTrashFolder(Session session, AccountId accountId, MailboxId trashMailboxId) async { + Future> emptyTrashFolder( + Session session, + AccountId accountId, + MailboxId trashMailboxId, + int totalEmails, + StreamController> onProgressController + ) async { final listEmailIdDeleted = await mapDataSource[DataSourceType.network]!.emptyMailboxFolder( session, accountId, - trashMailboxId); + trashMailboxId, + totalEmails, + onProgressController + ); await _updateEmailCache( accountId, @@ -396,11 +408,20 @@ class ThreadRepositoryImpl extends ThreadRepository { } @override - Future> emptySpamFolder(Session session, AccountId accountId, MailboxId spamMailboxId) async { + Future> emptySpamFolder( + Session session, + AccountId accountId, + MailboxId spamMailboxId, + int totalEmails, + StreamController> onProgressController + ) async { final listEmailIdDeleted = await mapDataSource[DataSourceType.network]!.emptyMailboxFolder( session, accountId, - spamMailboxId); + spamMailboxId, + totalEmails, + onProgressController + ); await _updateEmailCache( accountId, diff --git a/lib/features/thread/domain/repository/thread_repository.dart b/lib/features/thread/domain/repository/thread_repository.dart index e794b893c..ec0503061 100644 --- a/lib/features/thread/domain/repository/thread_repository.dart +++ b/lib/features/thread/domain/repository/thread_repository.dart @@ -1,5 +1,8 @@ import 'dart:async'; +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; +import 'package:dartz/dartz.dart' as dartz; import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/filter/filter.dart'; import 'package:jmap_dart_client/jmap/core/properties/properties.dart'; @@ -59,6 +62,8 @@ abstract class ThreadRepository { Session session, AccountId accountId, MailboxId trashMailboxId, + int totalEmails, + StreamController> onProgressController ); Future getEmailById( @@ -72,5 +77,7 @@ abstract class ThreadRepository { Session session, AccountId accountId, MailboxId spamMailboxId, + int totalEmails, + StreamController> onProgressController ); } \ No newline at end of file