TF-3372 Add onProgressController to get the progress of emptying task
This commit is contained in:
committed by
Dat H. Pham
parent
c735789709
commit
e327cf6b9c
@@ -1,5 +1,8 @@
|
|||||||
import 'dart:async';
|
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/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
|
import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
|
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
|
||||||
@@ -68,6 +71,8 @@ abstract class ThreadDataSource {
|
|||||||
Session session,
|
Session session,
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
MailboxId mailboxId,
|
MailboxId mailboxId,
|
||||||
|
int totalEmails,
|
||||||
|
StreamController<dartz.Either<Failure, Success>> onProgressController
|
||||||
);
|
);
|
||||||
|
|
||||||
Future<PresentationEmail> getEmailById(Session session, AccountId accountId, EmailId emailId, {Properties? properties});
|
Future<PresentationEmail> getEmailById(Session session, AccountId accountId, EmailId emailId, {Properties? properties});
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
import 'dart:async';
|
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/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
|
import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
|
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
|
||||||
@@ -112,6 +115,8 @@ class LocalThreadDataSourceImpl extends ThreadDataSource {
|
|||||||
Session session,
|
Session session,
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
MailboxId mailboxId,
|
MailboxId mailboxId,
|
||||||
|
int totalEmails,
|
||||||
|
StreamController<dartz.Either<Failure, Success>> onProgressController
|
||||||
) {
|
) {
|
||||||
throw UnimplementedError();
|
throw UnimplementedError();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
import 'dart:async';
|
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/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
|
import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
|
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
|
||||||
@@ -115,13 +118,17 @@ class ThreadDataSourceImpl extends ThreadDataSource {
|
|||||||
Future<List<EmailId>> emptyMailboxFolder(
|
Future<List<EmailId>> emptyMailboxFolder(
|
||||||
Session session,
|
Session session,
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
MailboxId mailboxId
|
MailboxId mailboxId,
|
||||||
|
int totalEmails,
|
||||||
|
StreamController<dartz.Either<Failure, Success>> onProgressController
|
||||||
) {
|
) {
|
||||||
return Future.sync(() async {
|
return Future.sync(() async {
|
||||||
return await _threadIsolateWorker.emptyMailboxFolder(
|
return await _threadIsolateWorker.emptyMailboxFolder(
|
||||||
session,
|
session,
|
||||||
accountId,
|
accountId,
|
||||||
mailboxId
|
mailboxId,
|
||||||
|
totalEmails,
|
||||||
|
onProgressController
|
||||||
);
|
);
|
||||||
}).catchError(_exceptionThrower.throwException);
|
}).catchError(_exceptionThrower.throwException);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:core/data/model/source_type/data_source_type.dart';
|
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:core/utils/app_logger.dart';
|
||||||
import 'package:dartz/dartz.dart' as dartz;
|
import 'package:dartz/dartz.dart' as dartz;
|
||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
@@ -313,11 +316,20 @@ class ThreadRepositoryImpl extends ThreadRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<EmailId>> emptyTrashFolder(Session session, AccountId accountId, MailboxId trashMailboxId) async {
|
Future<List<EmailId>> emptyTrashFolder(
|
||||||
|
Session session,
|
||||||
|
AccountId accountId,
|
||||||
|
MailboxId trashMailboxId,
|
||||||
|
int totalEmails,
|
||||||
|
StreamController<dartz.Either<Failure, Success>> onProgressController
|
||||||
|
) async {
|
||||||
final listEmailIdDeleted = await mapDataSource[DataSourceType.network]!.emptyMailboxFolder(
|
final listEmailIdDeleted = await mapDataSource[DataSourceType.network]!.emptyMailboxFolder(
|
||||||
session,
|
session,
|
||||||
accountId,
|
accountId,
|
||||||
trashMailboxId);
|
trashMailboxId,
|
||||||
|
totalEmails,
|
||||||
|
onProgressController
|
||||||
|
);
|
||||||
|
|
||||||
await _updateEmailCache(
|
await _updateEmailCache(
|
||||||
accountId,
|
accountId,
|
||||||
@@ -396,11 +408,20 @@ class ThreadRepositoryImpl extends ThreadRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<EmailId>> emptySpamFolder(Session session, AccountId accountId, MailboxId spamMailboxId) async {
|
Future<List<EmailId>> emptySpamFolder(
|
||||||
|
Session session,
|
||||||
|
AccountId accountId,
|
||||||
|
MailboxId spamMailboxId,
|
||||||
|
int totalEmails,
|
||||||
|
StreamController<dartz.Either<Failure, Success>> onProgressController
|
||||||
|
) async {
|
||||||
final listEmailIdDeleted = await mapDataSource[DataSourceType.network]!.emptyMailboxFolder(
|
final listEmailIdDeleted = await mapDataSource[DataSourceType.network]!.emptyMailboxFolder(
|
||||||
session,
|
session,
|
||||||
accountId,
|
accountId,
|
||||||
spamMailboxId);
|
spamMailboxId,
|
||||||
|
totalEmails,
|
||||||
|
onProgressController
|
||||||
|
);
|
||||||
|
|
||||||
await _updateEmailCache(
|
await _updateEmailCache(
|
||||||
accountId,
|
accountId,
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
import 'dart:async';
|
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/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
|
import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
|
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
|
||||||
@@ -59,6 +62,8 @@ abstract class ThreadRepository {
|
|||||||
Session session,
|
Session session,
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
MailboxId trashMailboxId,
|
MailboxId trashMailboxId,
|
||||||
|
int totalEmails,
|
||||||
|
StreamController<dartz.Either<Failure, Success>> onProgressController
|
||||||
);
|
);
|
||||||
|
|
||||||
Future<PresentationEmail> getEmailById(
|
Future<PresentationEmail> getEmailById(
|
||||||
@@ -72,5 +77,7 @@ abstract class ThreadRepository {
|
|||||||
Session session,
|
Session session,
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
MailboxId spamMailboxId,
|
MailboxId spamMailboxId,
|
||||||
|
int totalEmails,
|
||||||
|
StreamController<dartz.Either<Failure, Success>> onProgressController
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user