diff --git a/lib/jmap/core/method/request/set_method.dart b/lib/jmap/core/method/request/set_method.dart index c36e830..2f28549 100644 --- a/lib/jmap/core/method/request/set_method.dart +++ b/lib/jmap/core/method/request/set_method.dart @@ -2,16 +2,17 @@ import 'package:jmap_dart_client/jmap/account_id.dart'; import 'package:jmap_dart_client/jmap/core/id.dart'; import 'package:jmap_dart_client/jmap/core/method/method.dart'; import 'package:jmap_dart_client/jmap/core/patch_object.dart'; +import 'package:jmap_dart_client/jmap/core/request/result_reference.dart'; import 'package:jmap_dart_client/jmap/core/state.dart'; import 'package:json_annotation/json_annotation.dart'; abstract class SetMethod extends MethodRequiringAccountId - with OptionalIfInState, OptionalCreate, OptionalDestroy, OptionalUpdate { + with OptionalIfInState, OptionalCreate, OptionalDestroy, OptionalUpdate, OptionalReferenceDestroy { SetMethod(AccountId accountId) : super(accountId); } abstract class SetMethodNoNeedAccountId extends Method - with OptionalCreate, OptionalDestroy, OptionalUpdate { + with OptionalCreate, OptionalDestroy, OptionalUpdate, OptionalReferenceDestroy { SetMethodNoNeedAccountId() : super(); } @@ -78,3 +79,12 @@ mixin OptionalUpdateSingleton { updateSingleton?.addAll(updates); } } + +mixin OptionalReferenceDestroy { + @JsonKey(name: '#destroy', includeIfNull: false) + ResultReference? referenceDestroy; + + void addReferenceDestroy(ResultReference resultReferenceDestroy) { + referenceDestroy = resultReferenceDestroy; + } +} diff --git a/lib/jmap/identities/set/set_identity_method.dart b/lib/jmap/identities/set/set_identity_method.dart index 0fb0d56..3f1af5e 100644 --- a/lib/jmap/identities/set/set_identity_method.dart +++ b/lib/jmap/identities/set/set_identity_method.dart @@ -44,6 +44,7 @@ class SetIdentityMethod extends SetMethod { ?.map((id, update) => SetMethodPropertiesConverter().fromMapIdToJson(id, update.toJson()))); writeNotNull('destroy', destroy ?.map((destroyId) => const IdConverter().toJson(destroyId)).toList()); + writeNotNull('#destroy', referenceDestroy?.toJson()); return val; } diff --git a/lib/jmap/mail/email/set/set_email_method.dart b/lib/jmap/mail/email/set/set_email_method.dart index 185c95b..e5f6cd1 100644 --- a/lib/jmap/mail/email/set/set_email_method.dart +++ b/lib/jmap/mail/email/set/set_email_method.dart @@ -41,6 +41,7 @@ class SetEmailMethod extends SetMethod { writeNotNull('destroy', destroy ?.map((destroyId) => const IdConverter() .toJson(destroyId)).toList()); + writeNotNull('#destroy', referenceDestroy?.toJson()); return val; } diff --git a/lib/jmap/mail/email/submission/set/set_email_submission_method.dart b/lib/jmap/mail/email/submission/set/set_email_submission_method.dart index 7723691..a10649c 100644 --- a/lib/jmap/mail/email/submission/set/set_email_submission_method.dart +++ b/lib/jmap/mail/email/submission/set/set_email_submission_method.dart @@ -53,6 +53,7 @@ class SetEmailSubmissionMethod extends SetMethod with OptionalO writeNotNull('onSuccessDestroyEmail', onSuccessDestroyEmail ?.map((destroyId) => const ReferencesEmailSubmissionIdConverter() .toJson(destroyId)).toList()); + writeNotNull('#destroy', referenceDestroy?.toJson()); return val; } diff --git a/lib/jmap/mail/mailbox/set/set_mailbox_method.dart b/lib/jmap/mail/mailbox/set/set_mailbox_method.dart index bccbefa..22d0e2f 100644 --- a/lib/jmap/mail/mailbox/set/set_mailbox_method.dart +++ b/lib/jmap/mail/mailbox/set/set_mailbox_method.dart @@ -40,6 +40,7 @@ class SetMailboxMethod extends SetMethod with OptionalOnDestroyRemoveEm writeNotNull('destroy', destroy ?.map((destroyId) => const IdConverter().toJson(destroyId)).toList()); writeNotNull('onDestroyRemoveEmails', onDestroyRemoveEmails); + writeNotNull('#destroy', referenceDestroy?.toJson()); return val; } diff --git a/lib/jmap/mail/vacation/set/set_vacation_method.dart b/lib/jmap/mail/vacation/set/set_vacation_method.dart index bd18d34..d191ba4 100644 --- a/lib/jmap/mail/vacation/set/set_vacation_method.dart +++ b/lib/jmap/mail/vacation/set/set_vacation_method.dart @@ -34,6 +34,7 @@ class SetVacationMethod extends SetMethod writeNotNull('ifInState', ifInState?.value); writeNotNull('update', updateSingleton ?.map((id, update) => SetMethodPropertiesConverter().fromMapIdToJson(id, update.toJson()))); + writeNotNull('#destroy', referenceDestroy?.toJson()); return val; }