Skip to content

Commit 731864b

Browse files
committed
Implement Mailbox/clear method/response
1 parent 69af07e commit 731864b

File tree

5 files changed

+123
-0
lines changed

5 files changed

+123
-0
lines changed

lib/jmap/core/capability/capability_identifier.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class CapabilityIdentifier with EquatableMixin {
1313
static final jamesSortOrder = CapabilityIdentifier(Uri.parse('urn:apache:james:params:jmap:mail:identity:sortorder'));
1414
static final jamesCalendarEvent = CapabilityIdentifier(Uri.parse('com:linagora:params:calendar:event'));
1515
static final jmapPublicAsset = CapabilityIdentifier(Uri.parse('com:linagora:params:jmap:public:assets'));
16+
static final jmapMailboxClear = CapabilityIdentifier(Uri.parse('com:linagora:params:jmap:mailbox:clear'));
1617

1718
final Uri value;
1819

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import 'package:jmap_dart_client/http/converter/account_id_converter.dart';
2+
import 'package:jmap_dart_client/http/converter/mailbox_id_converter.dart';
3+
import 'package:jmap_dart_client/jmap/account_id.dart';
4+
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
5+
import 'package:jmap_dart_client/jmap/core/method/request/clear_method.dart';
6+
import 'package:jmap_dart_client/jmap/core/request/request_invocation.dart';
7+
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
8+
import 'package:json_annotation/json_annotation.dart';
9+
10+
part 'clear_mailbox_method.g.dart';
11+
12+
@JsonSerializable(
13+
explicitToJson: true,
14+
converters: [
15+
AccountIdConverter(),
16+
MailboxIdConverter(),
17+
],
18+
)
19+
class ClearMailboxMethod extends ClearMethod {
20+
final MailboxId mailboxId;
21+
22+
ClearMailboxMethod(AccountId accountId, this.mailboxId) : super(accountId);
23+
24+
@override
25+
MethodName get methodName => MethodName('Mailbox/clear');
26+
27+
@override
28+
Set<CapabilityIdentifier> get requiredCapabilities => {
29+
CapabilityIdentifier.jmapCore,
30+
CapabilityIdentifier.jmapMail,
31+
CapabilityIdentifier.jmapMailboxClear,
32+
};
33+
34+
Set<CapabilityIdentifier> get requiredCapabilitiesSupportTeamMailboxes => {
35+
CapabilityIdentifier.jmapCore,
36+
CapabilityIdentifier.jmapMail,
37+
CapabilityIdentifier.jmapTeamMailboxes,
38+
CapabilityIdentifier.jmapMailboxClear,
39+
};
40+
41+
@override
42+
List<Object?> get props => [methodName, accountId, mailboxId, requiredCapabilities];
43+
44+
factory ClearMailboxMethod.fromJson(Map<String, dynamic> json) =>
45+
_$ClearMailboxMethodFromJson(json);
46+
47+
@override
48+
Map<String, dynamic> toJson() => _$ClearMailboxMethodToJson(this);
49+
}

lib/jmap/mail/mailbox/clear/clear_mailbox_method.g.dart

Lines changed: 19 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import 'package:jmap_dart_client/http/converter/account_id_converter.dart';
2+
import 'package:jmap_dart_client/http/converter/unsigned_int_nullable_converter.dart';
3+
import 'package:jmap_dart_client/jmap/account_id.dart';
4+
import 'package:jmap_dart_client/jmap/core/error/set_error.dart';
5+
import 'package:jmap_dart_client/jmap/core/method/response/clear_response.dart';
6+
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
7+
import 'package:json_annotation/json_annotation.dart';
8+
9+
part 'clear_mailbox_response.g.dart';
10+
11+
@JsonSerializable(
12+
includeIfNull: false,
13+
createToJson: false,
14+
converters: [AccountIdConverter(), UnsignedIntNullableConverter()],
15+
)
16+
class ClearMailboxResponse extends ClearResponse {
17+
ClearMailboxResponse(
18+
AccountId accountId,
19+
UnsignedInt? totalDeletedMessagesCount,
20+
SetError? notCleared,
21+
) : super(
22+
accountId,
23+
totalDeletedMessagesCount,
24+
notCleared,
25+
);
26+
27+
static ClearMailboxResponse deserialize(Map<String, dynamic> json) =>
28+
_$ClearMailboxResponseFromJson(json);
29+
30+
@override
31+
List<Object?> get props => [
32+
accountId,
33+
totalDeletedMessagesCount,
34+
notCleared,
35+
];
36+
}

lib/jmap/mail/mailbox/clear/clear_mailbox_response.g.dart

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)