From da0a3a9da6105e8d5893223be1c83b93afd14334 Mon Sep 17 00:00:00 2001 From: Dat PHAM HOANG Date: Mon, 30 Dec 2024 22:07:22 +0700 Subject: [PATCH] TF-3372 Adding onProgressController to interactor layer --- .../empty_spam_folder_interactor.dart | 20 +++++++++++++++++-- .../empty_trash_folder_interactor.dart | 20 +++++++++++++++++-- 2 files changed, 36 insertions(+), 4 deletions(-) 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));