diff --git a/lib/features/thread/domain/usecases/empty_spam_folder_interactor.dart b/lib/features/thread/domain/usecases/empty_spam_folder_interactor.dart index 601998a4c..0093f7644 100644 --- a/lib/features/thread/domain/usecases/empty_spam_folder_interactor.dart +++ b/lib/features/thread/domain/usecases/empty_spam_folder_interactor.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:dartz/dartz.dart'; @@ -12,10 +14,24 @@ class EmptySpamFolderInteractor { EmptySpamFolderInteractor(this.threadRepository); - Stream> execute(Session session, AccountId accountId, MailboxId spamMailboxId) async* { + Stream> execute( + Session session, + AccountId accountId, + MailboxId spamMailboxId, + int totalEmails, + StreamController> onProgressController + ) async* { try { yield Right(EmptySpamFolderLoading()); - final emailIdDeleted = await threadRepository.emptySpamFolder(session, accountId, spamMailboxId); + onProgressController.add(Right(EmptySpamFolderLoading())); + + final emailIdDeleted = await threadRepository.emptySpamFolder( + session, + accountId, + spamMailboxId, + totalEmails, + onProgressController + ); yield Right(EmptySpamFolderSuccess(emailIdDeleted)); } catch (e) { yield Left(EmptySpamFolderFailure(e)); diff --git a/lib/features/thread/domain/usecases/empty_trash_folder_interactor.dart b/lib/features/thread/domain/usecases/empty_trash_folder_interactor.dart index 5a540c8b9..d2474096f 100644 --- a/lib/features/thread/domain/usecases/empty_trash_folder_interactor.dart +++ b/lib/features/thread/domain/usecases/empty_trash_folder_interactor.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:dartz/dartz.dart'; @@ -12,10 +14,24 @@ class EmptyTrashFolderInteractor { EmptyTrashFolderInteractor(this.threadRepository); - Stream> execute(Session session, AccountId accountId, MailboxId trashMailboxId) async* { + Stream> execute( + Session session, + AccountId accountId, + MailboxId trashMailboxId, + int totalEmails, + StreamController> onProgressController + ) async* { try { yield Right(EmptyTrashFolderLoading()); - final emailIdDeleted = await threadRepository.emptyTrashFolder(session, accountId, trashMailboxId); + onProgressController.add(Right(EmptyTrashFolderLoading())); + + final emailIdDeleted = await threadRepository.emptyTrashFolder( + session, + accountId, + trashMailboxId, + totalEmails, + onProgressController + ); yield Right(EmptyTrashFolderSuccess(emailIdDeleted,)); } catch (e) { yield Left(EmptyTrashFolderFailure(e));