TF-939 Depend on accountCapabilities to delete multiple mailboxes
This commit is contained in:
committed by
Dat H. Pham
parent
3871b18f00
commit
48ae928b4e
@@ -1,11 +1,17 @@
|
||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/session/session.dart';
|
||||
import 'package:tmail_ui_user/main/error/request_error.dart';
|
||||
|
||||
void requireCapability(Session session, List<CapabilityIdentifier> requiredCapabilities) {
|
||||
final matchedCapabilities = session.capabilities.keys
|
||||
void requireCapability(Session session, AccountId accountId, List<CapabilityIdentifier> requiredCapabilities) {
|
||||
final account = session.accounts[accountId];
|
||||
if (account == null) {
|
||||
throw const InvalidCapability();
|
||||
}
|
||||
|
||||
final matchedCapabilities = account.accountCapabilities.keys
|
||||
.fold<Set<CapabilityIdentifier>>(
|
||||
Set<CapabilityIdentifier>(),
|
||||
<CapabilityIdentifier>{},
|
||||
(previousValue, element) {
|
||||
if (requiredCapabilities.contains(element)) {
|
||||
previousValue.add(element);
|
||||
@@ -14,7 +20,7 @@ void requireCapability(Session session, List<CapabilityIdentifier> requiredCapab
|
||||
}
|
||||
);
|
||||
final missingCapabilities = requiredCapabilities.toSet().difference(matchedCapabilities);
|
||||
if (missingCapabilities.length > 0) {
|
||||
if (missingCapabilities.isNotEmpty) {
|
||||
throw SessionMissingCapability(missingCapabilities);
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,18 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
|
||||
|
||||
class SessionMissingCapability extends Equatable implements Exception {
|
||||
class SessionMissingCapability extends InvalidCapability {
|
||||
final Set<CapabilityIdentifier> capabilityIdentifiers;
|
||||
|
||||
SessionMissingCapability(this.capabilityIdentifiers);
|
||||
const SessionMissingCapability(this.capabilityIdentifiers) : super();
|
||||
|
||||
@override
|
||||
List<Object?> get props => [capabilityIdentifiers];
|
||||
}
|
||||
|
||||
class InvalidCapability extends Equatable implements Exception {
|
||||
const InvalidCapability();
|
||||
|
||||
@override
|
||||
List<Object?> get props => [];
|
||||
}
|
||||
Reference in New Issue
Block a user