TF-1604: Add requiredCapabilities support TeamMailbox for mailbox
(cherry picked from commit ac7a8bff08ddc13e94b9ae97923c477c7d810ba0)
This commit is contained in:
@@ -28,21 +28,22 @@ abstract class MailboxDataSource {
|
||||
|
||||
Future<void> update({List<Mailbox>? updated, List<Mailbox>? created, List<MailboxId>? destroyed});
|
||||
|
||||
Future<Mailbox?> createNewMailbox(AccountId accountId, CreateNewMailboxRequest newMailboxRequest);
|
||||
Future<Mailbox?> createNewMailbox(Session session, AccountId accountId, CreateNewMailboxRequest newMailboxRequest);
|
||||
|
||||
Future<Map<Id,SetError>> deleteMultipleMailbox(Session session, AccountId accountId, List<MailboxId> mailboxIds);
|
||||
|
||||
Future<bool> renameMailbox(AccountId accountId, RenameMailboxRequest request);
|
||||
Future<bool> renameMailbox(Session session, AccountId accountId, RenameMailboxRequest request);
|
||||
|
||||
Future<bool> moveMailbox(AccountId accountId, MoveMailboxRequest request);
|
||||
Future<bool> moveMailbox(Session session, AccountId accountId, MoveMailboxRequest request);
|
||||
|
||||
Future<List<Email>> markAsMailboxRead(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
MailboxId mailboxId,
|
||||
int totalEmailUnread,
|
||||
StreamController<dartz.Either<Failure, Success>> onProgressController);
|
||||
|
||||
Future<bool> subscribeMailbox(AccountId accountId, SubscribeMailboxRequest request);
|
||||
Future<bool> subscribeMailbox(Session session, AccountId accountId, SubscribeMailboxRequest request);
|
||||
|
||||
Future<List<MailboxId>> subscribeMultipleMailbox(AccountId accountId, SubscribeMultipleMailboxRequest subscribeRequest);
|
||||
Future<List<MailboxId>> subscribeMultipleMailbox(Session session, AccountId accountId, SubscribeMultipleMailboxRequest subscribeRequest);
|
||||
}
|
||||
@@ -55,7 +55,7 @@ class MailboxCacheDataSourceImpl extends MailboxDataSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Mailbox?> createNewMailbox(AccountId accountId, CreateNewMailboxRequest newMailboxRequest) {
|
||||
Future<Mailbox?> createNewMailbox(Session session, AccountId accountId, CreateNewMailboxRequest newMailboxRequest) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@@ -65,17 +65,18 @@ class MailboxCacheDataSourceImpl extends MailboxDataSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> renameMailbox(AccountId accountId, RenameMailboxRequest request) {
|
||||
Future<bool> renameMailbox(Session session, AccountId accountId, RenameMailboxRequest request) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> moveMailbox(AccountId accountId, MoveMailboxRequest request) {
|
||||
Future<bool> moveMailbox(Session session, AccountId accountId, MoveMailboxRequest request) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<Email>> markAsMailboxRead(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
MailboxId mailboxId,
|
||||
int totalEmailUnread,
|
||||
@@ -84,12 +85,12 @@ class MailboxCacheDataSourceImpl extends MailboxDataSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> subscribeMailbox(AccountId accountId, SubscribeMailboxRequest request) {
|
||||
Future<bool> subscribeMailbox(Session session, AccountId accountId, SubscribeMailboxRequest request) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<MailboxId>> subscribeMultipleMailbox(AccountId accountId, SubscribeMultipleMailboxRequest subscribeRequest) {
|
||||
Future<List<MailboxId>> subscribeMultipleMailbox(Session session, AccountId accountId, SubscribeMultipleMailboxRequest subscribeRequest) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
}
|
||||
@@ -56,9 +56,9 @@ class MailboxDataSourceImpl extends MailboxDataSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Mailbox?> createNewMailbox(AccountId accountId, CreateNewMailboxRequest newMailboxRequest) {
|
||||
Future<Mailbox?> createNewMailbox(Session session, AccountId accountId, CreateNewMailboxRequest newMailboxRequest) {
|
||||
return Future.sync(() async {
|
||||
return await mailboxAPI.createNewMailbox(accountId, newMailboxRequest);
|
||||
return await mailboxAPI.createNewMailbox(session, accountId, newMailboxRequest);
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@@ -70,27 +70,29 @@ class MailboxDataSourceImpl extends MailboxDataSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> renameMailbox(AccountId accountId, RenameMailboxRequest request) {
|
||||
Future<bool> renameMailbox(Session session, AccountId accountId, RenameMailboxRequest request) {
|
||||
return Future.sync(() async {
|
||||
return await mailboxAPI.renameMailbox(accountId, request);
|
||||
return await mailboxAPI.renameMailbox(session, accountId, request);
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> moveMailbox(AccountId accountId, MoveMailboxRequest request) {
|
||||
Future<bool> moveMailbox(Session session, AccountId accountId, MoveMailboxRequest request) {
|
||||
return Future.sync(() async {
|
||||
return await mailboxAPI.moveMailbox(accountId, request);
|
||||
return await mailboxAPI.moveMailbox(session, accountId, request);
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<Email>> markAsMailboxRead(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
MailboxId mailboxId,
|
||||
int totalEmailUnread,
|
||||
StreamController<dartz.Either<Failure, Success>> onProgressController) {
|
||||
return Future.sync(() async {
|
||||
return await _mailboxIsolateWorker.markAsMailboxRead(
|
||||
session,
|
||||
accountId,
|
||||
mailboxId,
|
||||
totalEmailUnread,
|
||||
@@ -99,16 +101,20 @@ class MailboxDataSourceImpl extends MailboxDataSource {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> subscribeMailbox(AccountId accountId, SubscribeMailboxRequest request) {
|
||||
Future<bool> subscribeMailbox(Session session, AccountId accountId, SubscribeMailboxRequest request) {
|
||||
return Future.sync(() async {
|
||||
return await mailboxAPI.subscribeMailbox(accountId, request);
|
||||
return await mailboxAPI.subscribeMailbox(session, accountId, request);
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<MailboxId>> subscribeMultipleMailbox(AccountId accountId, SubscribeMultipleMailboxRequest subscribeRequest) {
|
||||
Future<List<MailboxId>> subscribeMultipleMailbox(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
SubscribeMultipleMailboxRequest subscribeRequest
|
||||
) {
|
||||
return Future.sync(() async {
|
||||
return await mailboxAPI.subscribeMultipleMailbox(accountId, subscribeRequest);
|
||||
return await mailboxAPI.subscribeMultipleMailbox(session, accountId, subscribeRequest);
|
||||
}).catchError(_exceptionThrower.throwException);
|
||||
}
|
||||
}
|
||||
@@ -135,7 +135,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
||||
updatedProperties: resultChanges?.updatedProperties);
|
||||
}
|
||||
|
||||
Future<Mailbox?> createNewMailbox(AccountId accountId, CreateNewMailboxRequest request) async {
|
||||
Future<Mailbox?> createNewMailbox(Session session, AccountId accountId, CreateNewMailboxRequest request) async {
|
||||
final setMailboxMethod = SetMailboxMethod(accountId)
|
||||
..addCreate(
|
||||
request.creationId,
|
||||
@@ -151,7 +151,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
||||
final setMailboxInvocation = requestBuilder.invocation(setMailboxMethod);
|
||||
|
||||
final response = await (requestBuilder
|
||||
..usings(setMailboxMethod.requiredCapabilities))
|
||||
..usings(_capabilitiesForMailboxMethod(session, accountId)))
|
||||
.build()
|
||||
.execute();
|
||||
|
||||
@@ -190,7 +190,6 @@ class MailboxAPI with HandleSetErrorMixin {
|
||||
}
|
||||
|
||||
Future<Map<Id, SetError>> deleteMultipleMailbox(Session session, AccountId accountId, List<MailboxId> mailboxIds) async {
|
||||
requireCapability(session, accountId, [CapabilityIdentifier.jmapCore, CapabilityIdentifier.jmapMail]);
|
||||
|
||||
final coreCapability = session.getCapabilityProperties<CoreCapability>(
|
||||
accountId, CapabilityIdentifier.jmapCore);
|
||||
@@ -219,7 +218,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
||||
.toList();
|
||||
|
||||
final response = await (requestBuilder
|
||||
..usings({CapabilityIdentifier.jmapCore, CapabilityIdentifier.jmapMail}))
|
||||
..usings(_capabilitiesForMailboxMethod(session, accountId)))
|
||||
.build()
|
||||
.execute();
|
||||
|
||||
@@ -252,7 +251,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
||||
return remainedErrors;
|
||||
}
|
||||
|
||||
Future<bool> renameMailbox(AccountId accountId, RenameMailboxRequest request) async {
|
||||
Future<bool> renameMailbox(Session session, AccountId accountId, RenameMailboxRequest request) async {
|
||||
final setMailboxMethod = SetMailboxMethod(accountId)
|
||||
..addUpdates({request.mailboxId.id : PatchObject({'name' : request.newName.name})});
|
||||
|
||||
@@ -261,7 +260,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
||||
final setMailboxInvocation = requestBuilder.invocation(setMailboxMethod);
|
||||
|
||||
final response = await (requestBuilder
|
||||
..usings(setMailboxMethod.requiredCapabilities))
|
||||
..usings(_capabilitiesForMailboxMethod(session, accountId)))
|
||||
.build()
|
||||
.execute();
|
||||
|
||||
@@ -276,7 +275,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
||||
});
|
||||
}
|
||||
|
||||
Future<bool> moveMailbox(AccountId accountId, MoveMailboxRequest request) async {
|
||||
Future<bool> moveMailbox(Session session, AccountId accountId, MoveMailboxRequest request) async {
|
||||
final setMailboxMethod = SetMailboxMethod(accountId)
|
||||
..addUpdates({
|
||||
request.mailboxId.id : PatchObject({
|
||||
@@ -289,7 +288,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
||||
final setMailboxInvocation = requestBuilder.invocation(setMailboxMethod);
|
||||
|
||||
final response = await (requestBuilder
|
||||
..usings(setMailboxMethod.requiredCapabilities))
|
||||
..usings(_capabilitiesForMailboxMethod(session, accountId)))
|
||||
.build()
|
||||
.execute();
|
||||
|
||||
@@ -304,7 +303,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
||||
});
|
||||
}
|
||||
|
||||
Future<bool> subscribeMailbox(AccountId accountId, SubscribeMailboxRequest request) async {
|
||||
Future<bool> subscribeMailbox(Session session, AccountId accountId, SubscribeMailboxRequest request) async {
|
||||
final setMailboxMethod = SetMailboxMethod(accountId)
|
||||
..addUpdates({
|
||||
request.mailboxId.id : PatchObject({
|
||||
@@ -317,7 +316,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
||||
final setMailboxInvocation = requestBuilder.invocation(setMailboxMethod);
|
||||
|
||||
final response = await (requestBuilder
|
||||
..usings(setMailboxMethod.requiredCapabilities))
|
||||
..usings(_capabilitiesForMailboxMethod(session, accountId)))
|
||||
.build()
|
||||
.execute();
|
||||
|
||||
@@ -332,7 +331,11 @@ class MailboxAPI with HandleSetErrorMixin {
|
||||
});
|
||||
}
|
||||
|
||||
Future<List<MailboxId>> subscribeMultipleMailbox(AccountId accountId, SubscribeMultipleMailboxRequest subscribeRequest) async {
|
||||
Future<List<MailboxId>> subscribeMultipleMailbox(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
SubscribeMultipleMailboxRequest subscribeRequest
|
||||
) async {
|
||||
final mapMailboxUpdated = subscribeRequest.mailboxIdsSubscribe
|
||||
.generateMapUpdateObjectSubscribeMailbox(subscribeRequest.subscribeState);
|
||||
|
||||
@@ -344,7 +347,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
||||
final setMailboxInvocation = requestBuilder.invocation(setMailboxMethod);
|
||||
|
||||
final response = await (requestBuilder
|
||||
..usings(setMailboxMethod.requiredCapabilities))
|
||||
..usings(_capabilitiesForMailboxMethod(session, accountId)))
|
||||
.build()
|
||||
.execute();
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import 'package:core/utils/build_utils.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/unsigned_int.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart';
|
||||
@@ -34,10 +35,11 @@ class MailboxIsolateWorker {
|
||||
MailboxIsolateWorker(this._threadApi, this._emailApi, this._isolateExecutor);
|
||||
|
||||
Future<List<Email>> markAsMailboxRead(
|
||||
AccountId accountId,
|
||||
MailboxId mailboxId,
|
||||
int totalEmailUnread,
|
||||
StreamController<Either<Failure, Success>> onProgressController
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
MailboxId mailboxId,
|
||||
int totalEmailUnread,
|
||||
StreamController<Either<Failure, Success>> onProgressController
|
||||
) async {
|
||||
if (BuildUtils.isWeb) {
|
||||
return _handleMarkAsMailboxReadActionOnWeb(
|
||||
|
||||
@@ -154,8 +154,8 @@ class MailboxRepositoryImpl extends MailboxRepository {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Mailbox?> createNewMailbox(AccountId accountId, CreateNewMailboxRequest newMailboxRequest) {
|
||||
return mapDataSource[DataSourceType.network]!.createNewMailbox(accountId, newMailboxRequest);
|
||||
Future<Mailbox?> createNewMailbox(Session session, AccountId accountId, CreateNewMailboxRequest newMailboxRequest) {
|
||||
return mapDataSource[DataSourceType.network]!.createNewMailbox(session, accountId, newMailboxRequest);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -164,17 +164,19 @@ class MailboxRepositoryImpl extends MailboxRepository {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> renameMailbox(AccountId accountId, RenameMailboxRequest request) {
|
||||
return mapDataSource[DataSourceType.network]!.renameMailbox(accountId, request);
|
||||
Future<bool> renameMailbox(Session session, AccountId accountId, RenameMailboxRequest request) {
|
||||
return mapDataSource[DataSourceType.network]!.renameMailbox(session, accountId, request);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<Email>> markAsMailboxRead(
|
||||
Session session,
|
||||
AccountId accountId,
|
||||
MailboxId mailboxId,
|
||||
int totalEmailUnread,
|
||||
StreamController<dartz.Either<Failure, Success>> onProgressController) async {
|
||||
return mapDataSource[DataSourceType.network]!.markAsMailboxRead(
|
||||
session,
|
||||
accountId,
|
||||
mailboxId,
|
||||
totalEmailUnread,
|
||||
@@ -182,8 +184,8 @@ class MailboxRepositoryImpl extends MailboxRepository {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> moveMailbox(AccountId accountId, MoveMailboxRequest request) {
|
||||
return mapDataSource[DataSourceType.network]!.moveMailbox(accountId, request);
|
||||
Future<bool> moveMailbox(Session session, AccountId accountId, MoveMailboxRequest request) {
|
||||
return mapDataSource[DataSourceType.network]!.moveMailbox(session, accountId, request);
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -192,12 +194,12 @@ class MailboxRepositoryImpl extends MailboxRepository {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> subscribeMailbox(AccountId accountId, SubscribeMailboxRequest request) {
|
||||
return mapDataSource[DataSourceType.network]!.subscribeMailbox(accountId, request);
|
||||
Future<bool> subscribeMailbox(Session session, AccountId accountId, SubscribeMailboxRequest request) {
|
||||
return mapDataSource[DataSourceType.network]!.subscribeMailbox(session, accountId, request);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<MailboxId>> subscribeMultipleMailbox(AccountId accountId, SubscribeMultipleMailboxRequest subscribeRequest) {
|
||||
return mapDataSource[DataSourceType.network]!.subscribeMultipleMailbox(accountId, subscribeRequest);
|
||||
Future<List<MailboxId>> subscribeMultipleMailbox(Session session, AccountId accountId, SubscribeMultipleMailboxRequest subscribeRequest) {
|
||||
return mapDataSource[DataSourceType.network]!.subscribeMultipleMailbox(session, accountId, subscribeRequest);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user