TF-1604: Add requiredCapabilities support TeamMailbox for mailbox
(cherry picked from commit ac7a8bff08ddc13e94b9ae97923c477c7d810ba0)
This commit is contained in:
@@ -19,12 +19,14 @@ mixin MailboxActionHandlerMixin {
|
|||||||
Function(BuildContext)? onCallbackAction
|
Function(BuildContext)? onCallbackAction
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
|
final session = dashboardController.sessionCurrent;
|
||||||
final accountId = dashboardController.accountId.value;
|
final accountId = dashboardController.accountId.value;
|
||||||
final mailboxId = presentationMailbox.id;
|
final mailboxId = presentationMailbox.id;
|
||||||
final mailboxName = presentationMailbox.name;
|
final mailboxName = presentationMailbox.name;
|
||||||
final countEmailsUnread = presentationMailbox.unreadEmails?.value.value ?? 0;
|
final countEmailsUnread = presentationMailbox.unreadEmails?.value.value ?? 0;
|
||||||
if (accountId != null && mailboxName != null) {
|
if (session != null && accountId != null && mailboxName != null) {
|
||||||
dashboardController.markAsReadMailbox(
|
dashboardController.markAsReadMailbox(
|
||||||
|
session,
|
||||||
accountId,
|
accountId,
|
||||||
mailboxId,
|
mailboxId,
|
||||||
mailboxName,
|
mailboxName,
|
||||||
|
|||||||
@@ -322,10 +322,11 @@ class DestinationPickerController extends BaseMailboxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _dispatchCreateNewMailboxFolder(
|
void _dispatchCreateNewMailboxFolder(
|
||||||
AccountId accountId,
|
Session session,
|
||||||
CreateNewMailboxRequest request
|
AccountId accountId,
|
||||||
|
CreateNewMailboxRequest request
|
||||||
) async {
|
) async {
|
||||||
consumeState(_createNewMailboxInteractor.execute(accountId, request));
|
consumeState(_createNewMailboxInteractor.execute(session, accountId, request));
|
||||||
}
|
}
|
||||||
|
|
||||||
void _createNewMailboxSuccess(CreateNewMailboxSuccess success) {
|
void _createNewMailboxSuccess(CreateNewMailboxSuccess success) {
|
||||||
@@ -404,6 +405,7 @@ class DestinationPickerController extends BaseMailboxController {
|
|||||||
: mailboxDestination.value?.id;
|
: mailboxDestination.value?.id;
|
||||||
|
|
||||||
_dispatchCreateNewMailboxFolder(
|
_dispatchCreateNewMailboxFolder(
|
||||||
|
_session!,
|
||||||
accountId!,
|
accountId!,
|
||||||
CreateNewMailboxRequest(
|
CreateNewMailboxRequest(
|
||||||
generateCreateId,
|
generateCreateId,
|
||||||
|
|||||||
@@ -28,21 +28,22 @@ abstract class MailboxDataSource {
|
|||||||
|
|
||||||
Future<void> update({List<Mailbox>? updated, List<Mailbox>? created, List<MailboxId>? destroyed});
|
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<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(
|
Future<List<Email>> markAsMailboxRead(
|
||||||
|
Session session,
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
MailboxId mailboxId,
|
MailboxId mailboxId,
|
||||||
int totalEmailUnread,
|
int totalEmailUnread,
|
||||||
StreamController<dartz.Either<Failure, Success>> onProgressController);
|
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
|
@override
|
||||||
Future<Mailbox?> createNewMailbox(AccountId accountId, CreateNewMailboxRequest newMailboxRequest) {
|
Future<Mailbox?> createNewMailbox(Session session, AccountId accountId, CreateNewMailboxRequest newMailboxRequest) {
|
||||||
throw UnimplementedError();
|
throw UnimplementedError();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,17 +65,18 @@ class MailboxCacheDataSourceImpl extends MailboxDataSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<bool> renameMailbox(AccountId accountId, RenameMailboxRequest request) {
|
Future<bool> renameMailbox(Session session, AccountId accountId, RenameMailboxRequest request) {
|
||||||
throw UnimplementedError();
|
throw UnimplementedError();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<bool> moveMailbox(AccountId accountId, MoveMailboxRequest request) {
|
Future<bool> moveMailbox(Session session, AccountId accountId, MoveMailboxRequest request) {
|
||||||
throw UnimplementedError();
|
throw UnimplementedError();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<Email>> markAsMailboxRead(
|
Future<List<Email>> markAsMailboxRead(
|
||||||
|
Session session,
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
MailboxId mailboxId,
|
MailboxId mailboxId,
|
||||||
int totalEmailUnread,
|
int totalEmailUnread,
|
||||||
@@ -84,12 +85,12 @@ class MailboxCacheDataSourceImpl extends MailboxDataSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<bool> subscribeMailbox(AccountId accountId, SubscribeMailboxRequest request) {
|
Future<bool> subscribeMailbox(Session session, AccountId accountId, SubscribeMailboxRequest request) {
|
||||||
throw UnimplementedError();
|
throw UnimplementedError();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MailboxId>> subscribeMultipleMailbox(AccountId accountId, SubscribeMultipleMailboxRequest subscribeRequest) {
|
Future<List<MailboxId>> subscribeMultipleMailbox(Session session, AccountId accountId, SubscribeMultipleMailboxRequest subscribeRequest) {
|
||||||
throw UnimplementedError();
|
throw UnimplementedError();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -56,9 +56,9 @@ class MailboxDataSourceImpl extends MailboxDataSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<Mailbox?> createNewMailbox(AccountId accountId, CreateNewMailboxRequest newMailboxRequest) {
|
Future<Mailbox?> createNewMailbox(Session session, AccountId accountId, CreateNewMailboxRequest newMailboxRequest) {
|
||||||
return Future.sync(() async {
|
return Future.sync(() async {
|
||||||
return await mailboxAPI.createNewMailbox(accountId, newMailboxRequest);
|
return await mailboxAPI.createNewMailbox(session, accountId, newMailboxRequest);
|
||||||
}).catchError(_exceptionThrower.throwException);
|
}).catchError(_exceptionThrower.throwException);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,27 +70,29 @@ class MailboxDataSourceImpl extends MailboxDataSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<bool> renameMailbox(AccountId accountId, RenameMailboxRequest request) {
|
Future<bool> renameMailbox(Session session, AccountId accountId, RenameMailboxRequest request) {
|
||||||
return Future.sync(() async {
|
return Future.sync(() async {
|
||||||
return await mailboxAPI.renameMailbox(accountId, request);
|
return await mailboxAPI.renameMailbox(session, accountId, request);
|
||||||
}).catchError(_exceptionThrower.throwException);
|
}).catchError(_exceptionThrower.throwException);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<bool> moveMailbox(AccountId accountId, MoveMailboxRequest request) {
|
Future<bool> moveMailbox(Session session, AccountId accountId, MoveMailboxRequest request) {
|
||||||
return Future.sync(() async {
|
return Future.sync(() async {
|
||||||
return await mailboxAPI.moveMailbox(accountId, request);
|
return await mailboxAPI.moveMailbox(session, accountId, request);
|
||||||
}).catchError(_exceptionThrower.throwException);
|
}).catchError(_exceptionThrower.throwException);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<Email>> markAsMailboxRead(
|
Future<List<Email>> markAsMailboxRead(
|
||||||
|
Session session,
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
MailboxId mailboxId,
|
MailboxId mailboxId,
|
||||||
int totalEmailUnread,
|
int totalEmailUnread,
|
||||||
StreamController<dartz.Either<Failure, Success>> onProgressController) {
|
StreamController<dartz.Either<Failure, Success>> onProgressController) {
|
||||||
return Future.sync(() async {
|
return Future.sync(() async {
|
||||||
return await _mailboxIsolateWorker.markAsMailboxRead(
|
return await _mailboxIsolateWorker.markAsMailboxRead(
|
||||||
|
session,
|
||||||
accountId,
|
accountId,
|
||||||
mailboxId,
|
mailboxId,
|
||||||
totalEmailUnread,
|
totalEmailUnread,
|
||||||
@@ -99,16 +101,20 @@ class MailboxDataSourceImpl extends MailboxDataSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<bool> subscribeMailbox(AccountId accountId, SubscribeMailboxRequest request) {
|
Future<bool> subscribeMailbox(Session session, AccountId accountId, SubscribeMailboxRequest request) {
|
||||||
return Future.sync(() async {
|
return Future.sync(() async {
|
||||||
return await mailboxAPI.subscribeMailbox(accountId, request);
|
return await mailboxAPI.subscribeMailbox(session, accountId, request);
|
||||||
}).catchError(_exceptionThrower.throwException);
|
}).catchError(_exceptionThrower.throwException);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MailboxId>> subscribeMultipleMailbox(AccountId accountId, SubscribeMultipleMailboxRequest subscribeRequest) {
|
Future<List<MailboxId>> subscribeMultipleMailbox(
|
||||||
|
Session session,
|
||||||
|
AccountId accountId,
|
||||||
|
SubscribeMultipleMailboxRequest subscribeRequest
|
||||||
|
) {
|
||||||
return Future.sync(() async {
|
return Future.sync(() async {
|
||||||
return await mailboxAPI.subscribeMultipleMailbox(accountId, subscribeRequest);
|
return await mailboxAPI.subscribeMultipleMailbox(session, accountId, subscribeRequest);
|
||||||
}).catchError(_exceptionThrower.throwException);
|
}).catchError(_exceptionThrower.throwException);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -135,7 +135,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
|||||||
updatedProperties: resultChanges?.updatedProperties);
|
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)
|
final setMailboxMethod = SetMailboxMethod(accountId)
|
||||||
..addCreate(
|
..addCreate(
|
||||||
request.creationId,
|
request.creationId,
|
||||||
@@ -151,7 +151,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
|||||||
final setMailboxInvocation = requestBuilder.invocation(setMailboxMethod);
|
final setMailboxInvocation = requestBuilder.invocation(setMailboxMethod);
|
||||||
|
|
||||||
final response = await (requestBuilder
|
final response = await (requestBuilder
|
||||||
..usings(setMailboxMethod.requiredCapabilities))
|
..usings(_capabilitiesForMailboxMethod(session, accountId)))
|
||||||
.build()
|
.build()
|
||||||
.execute();
|
.execute();
|
||||||
|
|
||||||
@@ -190,7 +190,6 @@ class MailboxAPI with HandleSetErrorMixin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<Map<Id, SetError>> deleteMultipleMailbox(Session session, AccountId accountId, List<MailboxId> mailboxIds) async {
|
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>(
|
final coreCapability = session.getCapabilityProperties<CoreCapability>(
|
||||||
accountId, CapabilityIdentifier.jmapCore);
|
accountId, CapabilityIdentifier.jmapCore);
|
||||||
@@ -219,7 +218,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
|||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
final response = await (requestBuilder
|
final response = await (requestBuilder
|
||||||
..usings({CapabilityIdentifier.jmapCore, CapabilityIdentifier.jmapMail}))
|
..usings(_capabilitiesForMailboxMethod(session, accountId)))
|
||||||
.build()
|
.build()
|
||||||
.execute();
|
.execute();
|
||||||
|
|
||||||
@@ -252,7 +251,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
|||||||
return remainedErrors;
|
return remainedErrors;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<bool> renameMailbox(AccountId accountId, RenameMailboxRequest request) async {
|
Future<bool> renameMailbox(Session session, AccountId accountId, RenameMailboxRequest request) async {
|
||||||
final setMailboxMethod = SetMailboxMethod(accountId)
|
final setMailboxMethod = SetMailboxMethod(accountId)
|
||||||
..addUpdates({request.mailboxId.id : PatchObject({'name' : request.newName.name})});
|
..addUpdates({request.mailboxId.id : PatchObject({'name' : request.newName.name})});
|
||||||
|
|
||||||
@@ -261,7 +260,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
|||||||
final setMailboxInvocation = requestBuilder.invocation(setMailboxMethod);
|
final setMailboxInvocation = requestBuilder.invocation(setMailboxMethod);
|
||||||
|
|
||||||
final response = await (requestBuilder
|
final response = await (requestBuilder
|
||||||
..usings(setMailboxMethod.requiredCapabilities))
|
..usings(_capabilitiesForMailboxMethod(session, accountId)))
|
||||||
.build()
|
.build()
|
||||||
.execute();
|
.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)
|
final setMailboxMethod = SetMailboxMethod(accountId)
|
||||||
..addUpdates({
|
..addUpdates({
|
||||||
request.mailboxId.id : PatchObject({
|
request.mailboxId.id : PatchObject({
|
||||||
@@ -289,7 +288,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
|||||||
final setMailboxInvocation = requestBuilder.invocation(setMailboxMethod);
|
final setMailboxInvocation = requestBuilder.invocation(setMailboxMethod);
|
||||||
|
|
||||||
final response = await (requestBuilder
|
final response = await (requestBuilder
|
||||||
..usings(setMailboxMethod.requiredCapabilities))
|
..usings(_capabilitiesForMailboxMethod(session, accountId)))
|
||||||
.build()
|
.build()
|
||||||
.execute();
|
.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)
|
final setMailboxMethod = SetMailboxMethod(accountId)
|
||||||
..addUpdates({
|
..addUpdates({
|
||||||
request.mailboxId.id : PatchObject({
|
request.mailboxId.id : PatchObject({
|
||||||
@@ -317,7 +316,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
|||||||
final setMailboxInvocation = requestBuilder.invocation(setMailboxMethod);
|
final setMailboxInvocation = requestBuilder.invocation(setMailboxMethod);
|
||||||
|
|
||||||
final response = await (requestBuilder
|
final response = await (requestBuilder
|
||||||
..usings(setMailboxMethod.requiredCapabilities))
|
..usings(_capabilitiesForMailboxMethod(session, accountId)))
|
||||||
.build()
|
.build()
|
||||||
.execute();
|
.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
|
final mapMailboxUpdated = subscribeRequest.mailboxIdsSubscribe
|
||||||
.generateMapUpdateObjectSubscribeMailbox(subscribeRequest.subscribeState);
|
.generateMapUpdateObjectSubscribeMailbox(subscribeRequest.subscribeState);
|
||||||
|
|
||||||
@@ -344,7 +347,7 @@ class MailboxAPI with HandleSetErrorMixin {
|
|||||||
final setMailboxInvocation = requestBuilder.invocation(setMailboxMethod);
|
final setMailboxInvocation = requestBuilder.invocation(setMailboxMethod);
|
||||||
|
|
||||||
final response = await (requestBuilder
|
final response = await (requestBuilder
|
||||||
..usings(setMailboxMethod.requiredCapabilities))
|
..usings(_capabilitiesForMailboxMethod(session, accountId)))
|
||||||
.build()
|
.build()
|
||||||
.execute();
|
.execute();
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import 'package:core/utils/build_utils.dart';
|
|||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
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/properties/properties.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/unsigned_int.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart';
|
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart';
|
||||||
@@ -34,10 +35,11 @@ class MailboxIsolateWorker {
|
|||||||
MailboxIsolateWorker(this._threadApi, this._emailApi, this._isolateExecutor);
|
MailboxIsolateWorker(this._threadApi, this._emailApi, this._isolateExecutor);
|
||||||
|
|
||||||
Future<List<Email>> markAsMailboxRead(
|
Future<List<Email>> markAsMailboxRead(
|
||||||
AccountId accountId,
|
Session session,
|
||||||
MailboxId mailboxId,
|
AccountId accountId,
|
||||||
int totalEmailUnread,
|
MailboxId mailboxId,
|
||||||
StreamController<Either<Failure, Success>> onProgressController
|
int totalEmailUnread,
|
||||||
|
StreamController<Either<Failure, Success>> onProgressController
|
||||||
) async {
|
) async {
|
||||||
if (BuildUtils.isWeb) {
|
if (BuildUtils.isWeb) {
|
||||||
return _handleMarkAsMailboxReadActionOnWeb(
|
return _handleMarkAsMailboxReadActionOnWeb(
|
||||||
|
|||||||
@@ -154,8 +154,8 @@ class MailboxRepositoryImpl extends MailboxRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<Mailbox?> createNewMailbox(AccountId accountId, CreateNewMailboxRequest newMailboxRequest) {
|
Future<Mailbox?> createNewMailbox(Session session, AccountId accountId, CreateNewMailboxRequest newMailboxRequest) {
|
||||||
return mapDataSource[DataSourceType.network]!.createNewMailbox(accountId, newMailboxRequest);
|
return mapDataSource[DataSourceType.network]!.createNewMailbox(session, accountId, newMailboxRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -164,17 +164,19 @@ class MailboxRepositoryImpl extends MailboxRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<bool> renameMailbox(AccountId accountId, RenameMailboxRequest request) {
|
Future<bool> renameMailbox(Session session, AccountId accountId, RenameMailboxRequest request) {
|
||||||
return mapDataSource[DataSourceType.network]!.renameMailbox(accountId, request);
|
return mapDataSource[DataSourceType.network]!.renameMailbox(session, accountId, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<Email>> markAsMailboxRead(
|
Future<List<Email>> markAsMailboxRead(
|
||||||
|
Session session,
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
MailboxId mailboxId,
|
MailboxId mailboxId,
|
||||||
int totalEmailUnread,
|
int totalEmailUnread,
|
||||||
StreamController<dartz.Either<Failure, Success>> onProgressController) async {
|
StreamController<dartz.Either<Failure, Success>> onProgressController) async {
|
||||||
return mapDataSource[DataSourceType.network]!.markAsMailboxRead(
|
return mapDataSource[DataSourceType.network]!.markAsMailboxRead(
|
||||||
|
session,
|
||||||
accountId,
|
accountId,
|
||||||
mailboxId,
|
mailboxId,
|
||||||
totalEmailUnread,
|
totalEmailUnread,
|
||||||
@@ -182,8 +184,8 @@ class MailboxRepositoryImpl extends MailboxRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<bool> moveMailbox(AccountId accountId, MoveMailboxRequest request) {
|
Future<bool> moveMailbox(Session session, AccountId accountId, MoveMailboxRequest request) {
|
||||||
return mapDataSource[DataSourceType.network]!.moveMailbox(accountId, request);
|
return mapDataSource[DataSourceType.network]!.moveMailbox(session, accountId, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -192,12 +194,12 @@ class MailboxRepositoryImpl extends MailboxRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<bool> subscribeMailbox(AccountId accountId, SubscribeMailboxRequest request) {
|
Future<bool> subscribeMailbox(Session session, AccountId accountId, SubscribeMailboxRequest request) {
|
||||||
return mapDataSource[DataSourceType.network]!.subscribeMailbox(accountId, request);
|
return mapDataSource[DataSourceType.network]!.subscribeMailbox(session, accountId, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<List<MailboxId>> subscribeMultipleMailbox(AccountId accountId, SubscribeMultipleMailboxRequest subscribeRequest) {
|
Future<List<MailboxId>> subscribeMultipleMailbox(Session session, AccountId accountId, SubscribeMultipleMailboxRequest subscribeRequest) {
|
||||||
return mapDataSource[DataSourceType.network]!.subscribeMultipleMailbox(accountId, subscribeRequest);
|
return mapDataSource[DataSourceType.network]!.subscribeMultipleMailbox(session, accountId, subscribeRequest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -23,23 +23,24 @@ abstract class MailboxRepository {
|
|||||||
|
|
||||||
Stream<MailboxResponse> refresh(Session session, AccountId accountId, State currentState);
|
Stream<MailboxResponse> refresh(Session session, AccountId accountId, State currentState);
|
||||||
|
|
||||||
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<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<List<Email>> markAsMailboxRead(
|
Future<List<Email>> markAsMailboxRead(
|
||||||
AccountId accountId,
|
Session session,
|
||||||
MailboxId mailboxId,
|
AccountId accountId,
|
||||||
int totalEmailUnread,
|
MailboxId mailboxId,
|
||||||
StreamController<dartz.Either<Failure, Success>> onProgressController);
|
int totalEmailUnread,
|
||||||
|
StreamController<dartz.Either<Failure, Success>> onProgressController);
|
||||||
|
|
||||||
Future<bool> moveMailbox(AccountId accountId, MoveMailboxRequest request);
|
Future<bool> moveMailbox(Session session, AccountId accountId, MoveMailboxRequest request);
|
||||||
|
|
||||||
Future<State?> getMailboxState();
|
Future<State?> getMailboxState();
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'package:core/core.dart';
|
import 'package:core/core.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
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/session/session.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/state/create_new_mailbox_state.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/state/create_new_mailbox_state.dart';
|
||||||
@@ -10,12 +11,16 @@ class CreateNewMailboxInteractor {
|
|||||||
|
|
||||||
CreateNewMailboxInteractor(this._mailboxRepository);
|
CreateNewMailboxInteractor(this._mailboxRepository);
|
||||||
|
|
||||||
Stream<Either<Failure, Success>> execute(AccountId accountId, CreateNewMailboxRequest newMailboxRequest) async* {
|
Stream<Either<Failure, Success>> execute(
|
||||||
|
Session session,
|
||||||
|
AccountId accountId,
|
||||||
|
CreateNewMailboxRequest newMailboxRequest
|
||||||
|
) async* {
|
||||||
try {
|
try {
|
||||||
yield Right<Failure, Success>(LoadingCreateNewMailbox());
|
yield Right<Failure, Success>(LoadingCreateNewMailbox());
|
||||||
|
|
||||||
final currentMailboxState = await _mailboxRepository.getMailboxState();
|
final currentMailboxState = await _mailboxRepository.getMailboxState();
|
||||||
final newMailbox = await _mailboxRepository.createNewMailbox(accountId, newMailboxRequest);
|
final newMailbox = await _mailboxRepository.createNewMailbox(session, accountId, newMailboxRequest);
|
||||||
if (newMailbox != null) {
|
if (newMailbox != null) {
|
||||||
yield Right<Failure, Success>(CreateNewMailboxSuccess(
|
yield Right<Failure, Success>(CreateNewMailboxSuccess(
|
||||||
newMailbox,
|
newMailbox,
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import 'dart:async';
|
|||||||
import 'package:core/core.dart';
|
import 'package:core/core.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
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/session/session.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||||
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
|
import 'package:tmail_ui_user/features/email/domain/repository/email_repository.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
||||||
@@ -15,11 +16,12 @@ class MarkAsMailboxReadInteractor {
|
|||||||
MarkAsMailboxReadInteractor(this._mailboxRepository, this._emailRepository);
|
MarkAsMailboxReadInteractor(this._mailboxRepository, this._emailRepository);
|
||||||
|
|
||||||
Stream<Either<Failure, Success>> execute(
|
Stream<Either<Failure, Success>> execute(
|
||||||
AccountId accountId,
|
Session session,
|
||||||
MailboxId mailboxId,
|
AccountId accountId,
|
||||||
MailboxName mailboxName,
|
MailboxId mailboxId,
|
||||||
int totalEmailUnread,
|
MailboxName mailboxName,
|
||||||
StreamController<Either<Failure, Success>> onProgressController
|
int totalEmailUnread,
|
||||||
|
StreamController<Either<Failure, Success>> onProgressController
|
||||||
) async* {
|
) async* {
|
||||||
try {
|
try {
|
||||||
yield Right<Failure, Success>(MarkAsMailboxReadLoading());
|
yield Right<Failure, Success>(MarkAsMailboxReadLoading());
|
||||||
@@ -34,10 +36,11 @@ class MarkAsMailboxReadInteractor {
|
|||||||
final currentEmailState = listState.last;
|
final currentEmailState = listState.last;
|
||||||
|
|
||||||
final listEmails = await _mailboxRepository.markAsMailboxRead(
|
final listEmails = await _mailboxRepository.markAsMailboxRead(
|
||||||
accountId,
|
session,
|
||||||
mailboxId,
|
accountId,
|
||||||
totalEmailUnread,
|
mailboxId,
|
||||||
onProgressController);
|
totalEmailUnread,
|
||||||
|
onProgressController);
|
||||||
|
|
||||||
if (totalEmailUnread == listEmails.length) {
|
if (totalEmailUnread == listEmails.length) {
|
||||||
yield Right(MarkAsMailboxReadAllSuccess(
|
yield Right(MarkAsMailboxReadAllSuccess(
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'package:core/core.dart';
|
import 'package:core/core.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
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/session/session.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/model/move_mailbox_request.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/model/move_mailbox_request.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/state/move_mailbox_state.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/state/move_mailbox_state.dart';
|
||||||
@@ -10,12 +11,12 @@ class MoveMailboxInteractor {
|
|||||||
|
|
||||||
MoveMailboxInteractor(this._mailboxRepository);
|
MoveMailboxInteractor(this._mailboxRepository);
|
||||||
|
|
||||||
Stream<Either<Failure, Success>> execute(AccountId accountId, MoveMailboxRequest request) async* {
|
Stream<Either<Failure, Success>> execute(Session session, AccountId accountId, MoveMailboxRequest request) async* {
|
||||||
try {
|
try {
|
||||||
yield Right<Failure, Success>(LoadingMoveMailbox());
|
yield Right<Failure, Success>(LoadingMoveMailbox());
|
||||||
|
|
||||||
final currentMailboxState = await _mailboxRepository.getMailboxState();
|
final currentMailboxState = await _mailboxRepository.getMailboxState();
|
||||||
final result = await _mailboxRepository.moveMailbox(accountId, request);
|
final result = await _mailboxRepository.moveMailbox(session, accountId, request);
|
||||||
if (result) {
|
if (result) {
|
||||||
yield Right<Failure, Success>(MoveMailboxSuccess(
|
yield Right<Failure, Success>(MoveMailboxSuccess(
|
||||||
request.mailboxId,
|
request.mailboxId,
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'package:core/core.dart';
|
import 'package:core/core.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
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/session/session.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/model/rename_mailbox_request.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/model/rename_mailbox_request.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/state/rename_mailbox_state.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/state/rename_mailbox_state.dart';
|
||||||
@@ -10,13 +11,13 @@ class RenameMailboxInteractor {
|
|||||||
|
|
||||||
RenameMailboxInteractor(this._mailboxRepository);
|
RenameMailboxInteractor(this._mailboxRepository);
|
||||||
|
|
||||||
Stream<Either<Failure, Success>> execute(AccountId accountId, RenameMailboxRequest request) async* {
|
Stream<Either<Failure, Success>> execute(Session session, AccountId accountId, RenameMailboxRequest request) async* {
|
||||||
try {
|
try {
|
||||||
yield Right<Failure, Success>(LoadingRenameMailbox());
|
yield Right<Failure, Success>(LoadingRenameMailbox());
|
||||||
|
|
||||||
final currentMailboxState = await _mailboxRepository.getMailboxState();
|
final currentMailboxState = await _mailboxRepository.getMailboxState();
|
||||||
|
|
||||||
final result = await _mailboxRepository.renameMailbox(accountId, request);
|
final result = await _mailboxRepository.renameMailbox(session, accountId, request);
|
||||||
if (result) {
|
if (result) {
|
||||||
yield Right<Failure, Success>(RenameMailboxSuccess(currentMailboxState: currentMailboxState));
|
yield Right<Failure, Success>(RenameMailboxSuccess(currentMailboxState: currentMailboxState));
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'package:core/presentation/state/failure.dart';
|
|||||||
import 'package:core/presentation/state/success.dart';
|
import 'package:core/presentation/state/success.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
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/session/session.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/model/subscribe_mailbox_request.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/model/subscribe_mailbox_request.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/state/subscribe_mailbox_state.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/state/subscribe_mailbox_state.dart';
|
||||||
@@ -11,13 +12,13 @@ class SubscribeMailboxInteractor {
|
|||||||
|
|
||||||
SubscribeMailboxInteractor(this._mailboxRepository);
|
SubscribeMailboxInteractor(this._mailboxRepository);
|
||||||
|
|
||||||
Stream<Either<Failure, Success>> execute(AccountId accountId, SubscribeMailboxRequest request) async* {
|
Stream<Either<Failure, Success>> execute(Session session, AccountId accountId, SubscribeMailboxRequest request) async* {
|
||||||
try {
|
try {
|
||||||
yield Right<Failure, Success>(LoadingSubscribeMailbox());
|
yield Right<Failure, Success>(LoadingSubscribeMailbox());
|
||||||
|
|
||||||
final currentMailboxState = await _mailboxRepository.getMailboxState();
|
final currentMailboxState = await _mailboxRepository.getMailboxState();
|
||||||
|
|
||||||
final result = await _mailboxRepository.subscribeMailbox(accountId, request);
|
final result = await _mailboxRepository.subscribeMailbox(session, accountId, request);
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
yield Right<Failure, Success>(SubscribeMailboxSuccess(
|
yield Right<Failure, Success>(SubscribeMailboxSuccess(
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'package:core/presentation/state/failure.dart';
|
|||||||
import 'package:core/presentation/state/success.dart';
|
import 'package:core/presentation/state/success.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
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/session/session.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/model/subscribe_multiple_mailbox_request.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/model/subscribe_multiple_mailbox_request.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/repository/mailbox_repository.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox/domain/state/subscribe_multiple_mailbox_state.dart';
|
import 'package:tmail_ui_user/features/mailbox/domain/state/subscribe_multiple_mailbox_state.dart';
|
||||||
@@ -11,12 +12,16 @@ class SubscribeMultipleMailboxInteractor {
|
|||||||
|
|
||||||
SubscribeMultipleMailboxInteractor(this._mailboxRepository);
|
SubscribeMultipleMailboxInteractor(this._mailboxRepository);
|
||||||
|
|
||||||
Stream<Either<Failure, Success>> execute(AccountId accountId, SubscribeMultipleMailboxRequest subscribeRequest) async* {
|
Stream<Either<Failure, Success>> execute(
|
||||||
|
Session session,
|
||||||
|
AccountId accountId,
|
||||||
|
SubscribeMultipleMailboxRequest subscribeRequest
|
||||||
|
) async* {
|
||||||
try {
|
try {
|
||||||
yield Right<Failure, Success>(LoadingSubscribeMultipleMailbox());
|
yield Right<Failure, Success>(LoadingSubscribeMultipleMailbox());
|
||||||
|
|
||||||
final currentMailboxState = await _mailboxRepository.getMailboxState();
|
final currentMailboxState = await _mailboxRepository.getMailboxState();
|
||||||
final listResult = await _mailboxRepository.subscribeMultipleMailbox(accountId, subscribeRequest);
|
final listResult = await _mailboxRepository.subscribeMultipleMailbox(session, accountId, subscribeRequest);
|
||||||
|
|
||||||
final matchedSize = listResult.length == subscribeRequest.mailboxIdsSubscribe.length;
|
final matchedSize = listResult.length == subscribeRequest.mailboxIdsSubscribe.length;
|
||||||
final allMatchedMailboxIdSubscribe = subscribeRequest.mailboxIdsSubscribe
|
final allMatchedMailboxIdSubscribe = subscribeRequest.mailboxIdsSubscribe
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import 'package:get/get.dart';
|
|||||||
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/error/method/error_method_response.dart';
|
import 'package:jmap_dart_client/jmap/core/error/method/error_method_response.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/id.dart';
|
import 'package:jmap_dart_client/jmap/core/id.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
import 'package:jmap_dart_client/jmap/core/state.dart' as jmap;
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||||
@@ -470,7 +471,8 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
|
|
||||||
void goToCreateNewMailboxView(BuildContext context) async {
|
void goToCreateNewMailboxView(BuildContext context) async {
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
if (accountId != null) {
|
final session = mailboxDashBoardController.sessionCurrent;
|
||||||
|
if (session !=null && accountId != null) {
|
||||||
final arguments = MailboxCreatorArguments(
|
final arguments = MailboxCreatorArguments(
|
||||||
accountId,
|
accountId,
|
||||||
defaultMailboxTree.value,
|
defaultMailboxTree.value,
|
||||||
@@ -484,7 +486,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
arguments: arguments,
|
arguments: arguments,
|
||||||
onCreatedMailbox: (newMailboxArguments) {
|
onCreatedMailbox: (newMailboxArguments) {
|
||||||
final generateCreateId = Id(_uuid.v1());
|
final generateCreateId = Id(_uuid.v1());
|
||||||
_createNewMailboxAction(accountId, CreateNewMailboxRequest(
|
_createNewMailboxAction(session, accountId, CreateNewMailboxRequest(
|
||||||
generateCreateId,
|
generateCreateId,
|
||||||
newMailboxArguments.newName,
|
newMailboxArguments.newName,
|
||||||
parentId: newMailboxArguments.mailboxLocation?.id));
|
parentId: newMailboxArguments.mailboxLocation?.id));
|
||||||
@@ -496,7 +498,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
|
|
||||||
if (newMailboxArguments != null && newMailboxArguments is NewMailboxArguments) {
|
if (newMailboxArguments != null && newMailboxArguments is NewMailboxArguments) {
|
||||||
final generateCreateId = Id(_uuid.v1());
|
final generateCreateId = Id(_uuid.v1());
|
||||||
_createNewMailboxAction(accountId, CreateNewMailboxRequest(
|
_createNewMailboxAction(session, accountId, CreateNewMailboxRequest(
|
||||||
generateCreateId,
|
generateCreateId,
|
||||||
newMailboxArguments.newName,
|
newMailboxArguments.newName,
|
||||||
parentId: newMailboxArguments.mailboxLocation?.id));
|
parentId: newMailboxArguments.mailboxLocation?.id));
|
||||||
@@ -505,8 +507,8 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _createNewMailboxAction(AccountId accountId, CreateNewMailboxRequest request) async {
|
void _createNewMailboxAction(Session session, AccountId accountId, CreateNewMailboxRequest request) async {
|
||||||
consumeState(_createNewMailboxInteractor.execute(accountId, request));
|
consumeState(_createNewMailboxInteractor.execute(session, accountId, request));
|
||||||
}
|
}
|
||||||
|
|
||||||
void _createNewMailboxSuccess(CreateNewMailboxSuccess success) {
|
void _createNewMailboxSuccess(CreateNewMailboxSuccess success) {
|
||||||
@@ -763,9 +765,11 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
|
|
||||||
void _renameMailboxAction(PresentationMailbox presentationMailbox, MailboxName newMailboxName) {
|
void _renameMailboxAction(PresentationMailbox presentationMailbox, MailboxName newMailboxName) {
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
|
final session = mailboxDashBoardController.sessionCurrent;
|
||||||
|
|
||||||
if (accountId != null) {
|
if (session != null && accountId != null) {
|
||||||
consumeState(_renameMailboxInteractor.execute(
|
consumeState(_renameMailboxInteractor.execute(
|
||||||
|
session,
|
||||||
accountId,
|
accountId,
|
||||||
RenameMailboxRequest(presentationMailbox.id, newMailboxName))
|
RenameMailboxRequest(presentationMailbox.id, newMailboxName))
|
||||||
);
|
);
|
||||||
@@ -775,17 +779,21 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _handleMovingMailbox(
|
void _handleMovingMailbox(
|
||||||
AccountId accountId,
|
Session session,
|
||||||
MoveAction moveAction,
|
AccountId accountId,
|
||||||
PresentationMailbox mailboxSelected,
|
MoveAction moveAction,
|
||||||
{PresentationMailbox? destinationMailbox}) {
|
PresentationMailbox mailboxSelected,
|
||||||
consumeState(_moveMailboxInteractor.execute(accountId,
|
{PresentationMailbox? destinationMailbox}
|
||||||
MoveMailboxRequest(
|
) {
|
||||||
mailboxSelected.id,
|
consumeState(_moveMailboxInteractor.execute(
|
||||||
moveAction,
|
session,
|
||||||
destinationMailboxId: destinationMailbox?.id,
|
accountId,
|
||||||
destinationMailboxName: destinationMailbox?.name,
|
MoveMailboxRequest(
|
||||||
parentId: mailboxSelected.parentId)));
|
mailboxSelected.id,
|
||||||
|
moveAction,
|
||||||
|
destinationMailboxId: destinationMailbox?.id,
|
||||||
|
destinationMailboxName: destinationMailbox?.name,
|
||||||
|
parentId: mailboxSelected.parentId)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void _moveMailboxSuccess(MoveMailboxSuccess success) {
|
void _moveMailboxSuccess(MoveMailboxSuccess success) {
|
||||||
@@ -815,9 +823,10 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _undoMovingMailbox(MoveMailboxRequest newMoveRequest) {
|
void _undoMovingMailbox(MoveMailboxRequest newMoveRequest) {
|
||||||
|
final session = mailboxDashBoardController.sessionCurrent;
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
if (accountId != null) {
|
if (session != null && accountId != null) {
|
||||||
consumeState(_moveMailboxInteractor.execute(accountId, newMoveRequest));
|
consumeState(_moveMailboxInteractor.execute(session, accountId, newMoveRequest));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -934,8 +943,10 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
|
|
||||||
void _invokeMovingMailboxAction(PresentationMailbox mailboxSelected, PresentationMailbox? destinationMailbox) {
|
void _invokeMovingMailboxAction(PresentationMailbox mailboxSelected, PresentationMailbox? destinationMailbox) {
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
if (accountId != null) {
|
final session = mailboxDashBoardController.sessionCurrent;
|
||||||
|
if (session != null && accountId != null) {
|
||||||
_handleMovingMailbox(
|
_handleMovingMailbox(
|
||||||
|
session,
|
||||||
accountId,
|
accountId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
mailboxSelected,
|
mailboxSelected,
|
||||||
@@ -1004,8 +1015,8 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
|
|
||||||
void _unsubscribeMailboxAction(MailboxId mailboxId) {
|
void _unsubscribeMailboxAction(MailboxId mailboxId) {
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
|
final session = mailboxDashBoardController.sessionCurrent;
|
||||||
if (accountId != null) {
|
if (session != null && accountId != null) {
|
||||||
final subscribeRequest = generateSubscribeRequest(
|
final subscribeRequest = generateSubscribeRequest(
|
||||||
mailboxId,
|
mailboxId,
|
||||||
MailboxSubscribeState.disabled,
|
MailboxSubscribeState.disabled,
|
||||||
@@ -1013,9 +1024,9 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (subscribeRequest is SubscribeMultipleMailboxRequest) {
|
if (subscribeRequest is SubscribeMultipleMailboxRequest) {
|
||||||
consumeState(_subscribeMultipleMailboxInteractor.execute(accountId, subscribeRequest));
|
consumeState(_subscribeMultipleMailboxInteractor.execute(session, accountId, subscribeRequest));
|
||||||
} else if (subscribeRequest is SubscribeMailboxRequest) {
|
} else if (subscribeRequest is SubscribeMailboxRequest) {
|
||||||
consumeState(_subscribeMailboxInteractor.execute(accountId, subscribeRequest));
|
consumeState(_subscribeMailboxInteractor.execute(session, accountId, subscribeRequest));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1103,8 +1114,9 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
{List<MailboxId>? listDescendantMailboxIds}
|
{List<MailboxId>? listDescendantMailboxIds}
|
||||||
) {
|
) {
|
||||||
final accountId = mailboxDashBoardController.accountId.value;
|
final accountId = mailboxDashBoardController.accountId.value;
|
||||||
|
final session = mailboxDashBoardController.sessionCurrent;
|
||||||
|
|
||||||
if (accountId != null) {
|
if (session != null && accountId != null) {
|
||||||
SubscribeRequest? subscribeRequest;
|
SubscribeRequest? subscribeRequest;
|
||||||
|
|
||||||
if (listDescendantMailboxIds != null) {
|
if (listDescendantMailboxIds != null) {
|
||||||
@@ -1123,9 +1135,9 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (subscribeRequest is SubscribeMultipleMailboxRequest) {
|
if (subscribeRequest is SubscribeMultipleMailboxRequest) {
|
||||||
consumeState(_subscribeMultipleMailboxInteractor.execute(accountId, subscribeRequest));
|
consumeState(_subscribeMultipleMailboxInteractor.execute(session, accountId, subscribeRequest));
|
||||||
} else if (subscribeRequest is SubscribeMailboxRequest) {
|
} else if (subscribeRequest is SubscribeMailboxRequest) {
|
||||||
consumeState(_subscribeMailboxInteractor.execute(accountId, subscribeRequest));
|
consumeState(_subscribeMailboxInteractor.execute(session, accountId, subscribeRequest));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-11
@@ -1190,27 +1190,30 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void markAsReadMailboxAction() {
|
void markAsReadMailboxAction() {
|
||||||
|
final session = sessionCurrent;
|
||||||
final currentAccountId = accountId.value;
|
final currentAccountId = accountId.value;
|
||||||
final mailboxId = selectedMailbox.value?.id;
|
final mailboxId = selectedMailbox.value?.id;
|
||||||
final mailboxName = selectedMailbox.value?.name;
|
final mailboxName = selectedMailbox.value?.name;
|
||||||
final countEmailsUnread = selectedMailbox.value?.unreadEmails?.value.value ?? 0;
|
final countEmailsUnread = selectedMailbox.value?.unreadEmails?.value.value ?? 0;
|
||||||
if (currentAccountId != null && mailboxId != null && mailboxName != null) {
|
if (session != null && currentAccountId != null && mailboxId != null && mailboxName != null) {
|
||||||
markAsReadMailbox(currentAccountId, mailboxId, mailboxName, countEmailsUnread.toInt());
|
markAsReadMailbox(session, currentAccountId, mailboxId, mailboxName, countEmailsUnread.toInt());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void markAsReadMailbox(
|
void markAsReadMailbox(
|
||||||
AccountId accountId,
|
Session session,
|
||||||
MailboxId mailboxId,
|
AccountId accountId,
|
||||||
MailboxName mailboxName,
|
MailboxId mailboxId,
|
||||||
int totalEmailsUnread
|
MailboxName mailboxName,
|
||||||
|
int totalEmailsUnread
|
||||||
) {
|
) {
|
||||||
consumeState(_markAsMailboxReadInteractor.execute(
|
consumeState(_markAsMailboxReadInteractor.execute(
|
||||||
accountId,
|
session,
|
||||||
mailboxId,
|
accountId,
|
||||||
mailboxName,
|
mailboxId,
|
||||||
totalEmailsUnread,
|
mailboxName,
|
||||||
_progressStateController));
|
totalEmailsUnread,
|
||||||
|
_progressStateController));
|
||||||
}
|
}
|
||||||
|
|
||||||
void _markAsReadMailboxSuccess(Success success) {
|
void _markAsReadMailboxSuccess(Success success) {
|
||||||
|
|||||||
+4
-3
@@ -124,7 +124,8 @@ class MailboxVisibilityController extends BaseMailboxController {
|
|||||||
|
|
||||||
void _subscribeMailboxAction(SubscribeMailboxRequest subscribeMailboxRequest) {
|
void _subscribeMailboxAction(SubscribeMailboxRequest subscribeMailboxRequest) {
|
||||||
final accountId = _accountDashBoardController.accountId.value;
|
final accountId = _accountDashBoardController.accountId.value;
|
||||||
if (accountId != null) {
|
final session = _accountDashBoardController.sessionCurrent.value;
|
||||||
|
if (session != null && accountId != null) {
|
||||||
final subscribeRequest = generateSubscribeRequest(
|
final subscribeRequest = generateSubscribeRequest(
|
||||||
subscribeMailboxRequest.mailboxId,
|
subscribeMailboxRequest.mailboxId,
|
||||||
subscribeMailboxRequest.subscribeState,
|
subscribeMailboxRequest.subscribeState,
|
||||||
@@ -132,9 +133,9 @@ class MailboxVisibilityController extends BaseMailboxController {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (subscribeRequest is SubscribeMultipleMailboxRequest) {
|
if (subscribeRequest is SubscribeMultipleMailboxRequest) {
|
||||||
consumeState(_subscribeMultipleMailboxInteractor!.execute(accountId, subscribeRequest));
|
consumeState(_subscribeMultipleMailboxInteractor!.execute(session, accountId, subscribeRequest));
|
||||||
} else if (subscribeRequest is SubscribeMailboxRequest) {
|
} else if (subscribeRequest is SubscribeMailboxRequest) {
|
||||||
consumeState(_subscribeMailboxInteractor!.execute(accountId, subscribeRequest));
|
consumeState(_subscribeMailboxInteractor!.execute(session, accountId, subscribeRequest));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
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/session/session.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||||
import 'package:model/email/presentation_email.dart';
|
import 'package:model/email/presentation_email.dart';
|
||||||
import 'package:model/extensions/presentation_email_extension.dart';
|
import 'package:model/extensions/presentation_email_extension.dart';
|
||||||
@@ -292,8 +293,10 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
|
|
||||||
void _renameMailboxAction(PresentationMailbox presentationMailbox, MailboxName newMailboxName) {
|
void _renameMailboxAction(PresentationMailbox presentationMailbox, MailboxName newMailboxName) {
|
||||||
final accountId = dashboardController.accountId.value;
|
final accountId = dashboardController.accountId.value;
|
||||||
if (accountId != null) {
|
final session = dashboardController.sessionCurrent;
|
||||||
|
if (session != null && accountId != null) {
|
||||||
consumeState(_renameMailboxInteractor.execute(
|
consumeState(_renameMailboxInteractor.execute(
|
||||||
|
session,
|
||||||
accountId,
|
accountId,
|
||||||
RenameMailboxRequest(presentationMailbox.id, newMailboxName)
|
RenameMailboxRequest(presentationMailbox.id, newMailboxName)
|
||||||
));
|
));
|
||||||
@@ -302,8 +305,10 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
|
|
||||||
void _invokeMovingMailboxAction(PresentationMailbox mailboxSelected, PresentationMailbox? destinationMailbox) {
|
void _invokeMovingMailboxAction(PresentationMailbox mailboxSelected, PresentationMailbox? destinationMailbox) {
|
||||||
final accountId = dashboardController.accountId.value;
|
final accountId = dashboardController.accountId.value;
|
||||||
if (accountId != null) {
|
final session = dashboardController.sessionCurrent;
|
||||||
|
if (session != null && accountId != null) {
|
||||||
_handleMovingMailbox(
|
_handleMovingMailbox(
|
||||||
|
session,
|
||||||
accountId,
|
accountId,
|
||||||
MoveAction.moving,
|
MoveAction.moving,
|
||||||
mailboxSelected,
|
mailboxSelected,
|
||||||
@@ -313,12 +318,14 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _handleMovingMailbox(
|
void _handleMovingMailbox(
|
||||||
|
Session session,
|
||||||
AccountId accountId,
|
AccountId accountId,
|
||||||
MoveAction moveAction,
|
MoveAction moveAction,
|
||||||
PresentationMailbox mailboxSelected,
|
PresentationMailbox mailboxSelected,
|
||||||
{PresentationMailbox? destinationMailbox}
|
{PresentationMailbox? destinationMailbox}
|
||||||
) {
|
) {
|
||||||
consumeState(_moveMailboxInteractor.execute(
|
consumeState(_moveMailboxInteractor.execute(
|
||||||
|
session,
|
||||||
accountId,
|
accountId,
|
||||||
MoveMailboxRequest(
|
MoveMailboxRequest(
|
||||||
mailboxSelected.id,
|
mailboxSelected.id,
|
||||||
@@ -357,8 +364,9 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
|
|
||||||
void _undoMovingMailbox(MoveMailboxRequest newMoveRequest) {
|
void _undoMovingMailbox(MoveMailboxRequest newMoveRequest) {
|
||||||
final accountId = dashboardController.accountId.value;
|
final accountId = dashboardController.accountId.value;
|
||||||
if (accountId != null) {
|
final session = dashboardController.sessionCurrent;
|
||||||
consumeState(_moveMailboxInteractor.execute(accountId, newMoveRequest));
|
if (session != null && accountId != null) {
|
||||||
|
consumeState(_moveMailboxInteractor.execute(session, accountId, newMoveRequest));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -417,13 +425,15 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
MailboxSubscribeAction subscribeAction
|
MailboxSubscribeAction subscribeAction
|
||||||
) {
|
) {
|
||||||
final accountId = dashboardController.accountId.value;
|
final accountId = dashboardController.accountId.value;
|
||||||
if (accountId != null) {
|
final session = dashboardController.sessionCurrent;
|
||||||
|
|
||||||
|
if (session != null && accountId != null) {
|
||||||
final subscribeRequest = generateSubscribeRequest(mailboxId, subscribeState, subscribeAction);
|
final subscribeRequest = generateSubscribeRequest(mailboxId, subscribeState, subscribeAction);
|
||||||
|
|
||||||
if (subscribeRequest is SubscribeMultipleMailboxRequest) {
|
if (subscribeRequest is SubscribeMultipleMailboxRequest) {
|
||||||
consumeState(_subscribeMultipleMailboxInteractor.execute(accountId, subscribeRequest));
|
consumeState(_subscribeMultipleMailboxInteractor.execute(session, accountId, subscribeRequest));
|
||||||
} else if (subscribeRequest is SubscribeMailboxRequest) {
|
} else if (subscribeRequest is SubscribeMailboxRequest) {
|
||||||
consumeState(_subscribeMailboxInteractor.execute(accountId, subscribeRequest));
|
consumeState(_subscribeMailboxInteractor.execute(session, accountId, subscribeRequest));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -524,7 +534,8 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
{List<MailboxId>? listDescendantMailboxIds}
|
{List<MailboxId>? listDescendantMailboxIds}
|
||||||
) {
|
) {
|
||||||
final accountId = dashboardController.accountId.value;
|
final accountId = dashboardController.accountId.value;
|
||||||
if (accountId != null) {
|
final session = dashboardController.sessionCurrent;
|
||||||
|
if (session != null && accountId != null) {
|
||||||
SubscribeRequest? subscribeRequest;
|
SubscribeRequest? subscribeRequest;
|
||||||
|
|
||||||
if (listDescendantMailboxIds != null) {
|
if (listDescendantMailboxIds != null) {
|
||||||
@@ -543,9 +554,9 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (subscribeRequest is SubscribeMultipleMailboxRequest) {
|
if (subscribeRequest is SubscribeMultipleMailboxRequest) {
|
||||||
consumeState(_subscribeMultipleMailboxInteractor.execute(accountId, subscribeRequest));
|
consumeState(_subscribeMultipleMailboxInteractor.execute(session, accountId, subscribeRequest));
|
||||||
} else if (subscribeRequest is SubscribeMailboxRequest) {
|
} else if (subscribeRequest is SubscribeMailboxRequest) {
|
||||||
consumeState(_subscribeMailboxInteractor.execute(accountId, subscribeRequest));
|
consumeState(_subscribeMailboxInteractor.execute(session, accountId, subscribeRequest));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -555,7 +566,8 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
{List<MailboxId>? listDescendantMailboxIds}
|
{List<MailboxId>? listDescendantMailboxIds}
|
||||||
) {
|
) {
|
||||||
final accountId = dashboardController.accountId.value;
|
final accountId = dashboardController.accountId.value;
|
||||||
if (accountId != null) {
|
final session = dashboardController.sessionCurrent;
|
||||||
|
if (session != null && accountId != null) {
|
||||||
SubscribeRequest? subscribeRequest;
|
SubscribeRequest? subscribeRequest;
|
||||||
|
|
||||||
if (listDescendantMailboxIds != null) {
|
if (listDescendantMailboxIds != null) {
|
||||||
@@ -574,9 +586,9 @@ class SearchMailboxController extends BaseMailboxController with MailboxActionHa
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (subscribeRequest is SubscribeMultipleMailboxRequest) {
|
if (subscribeRequest is SubscribeMultipleMailboxRequest) {
|
||||||
consumeState(_subscribeMultipleMailboxInteractor.execute(accountId, subscribeRequest));
|
consumeState(_subscribeMultipleMailboxInteractor.execute(session, accountId, subscribeRequest));
|
||||||
} else if (subscribeRequest is SubscribeMailboxRequest) {
|
} else if (subscribeRequest is SubscribeMailboxRequest) {
|
||||||
consumeState(_subscribeMailboxInteractor.execute(accountId, subscribeRequest));
|
consumeState(_subscribeMailboxInteractor.execute(session, accountId, subscribeRequest));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user