From 5f4b85cab0f06811480decf1cc409396dd162fe2 Mon Sep 17 00:00:00 2001 From: dab246 Date: Mon, 24 Nov 2025 10:20:42 +0700 Subject: [PATCH] TF-4169 Add `Label/get` method --- labels/lib/method/get/get_label_method.dart | 41 ++++ labels/lib/method/get/get_label_response.dart | 31 +++ labels/pubspec.lock | 10 +- labels/pubspec.yaml | 4 + .../method/get/get_label_method_test.dart | 232 ++++++++++++++++++ 5 files changed, 317 insertions(+), 1 deletion(-) create mode 100644 labels/lib/method/get/get_label_method.dart create mode 100644 labels/lib/method/get/get_label_response.dart create mode 100644 labels/test/method/get/get_label_method_test.dart diff --git a/labels/lib/method/get/get_label_method.dart b/labels/lib/method/get/get_label_method.dart new file mode 100644 index 000000000..d65ebcfdb --- /dev/null +++ b/labels/lib/method/get/get_label_method.dart @@ -0,0 +1,41 @@ +import 'package:jmap_dart_client/http/converter/account_id_converter.dart'; +import 'package:jmap_dart_client/http/converter/id_converter.dart'; +import 'package:jmap_dart_client/http/converter/properties_converter.dart'; +import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart'; +import 'package:jmap_dart_client/jmap/core/method/request/get_method.dart'; +import 'package:jmap_dart_client/jmap/core/request/request_invocation.dart'; +import 'package:jmap_dart_client/jmap/core/request/result_reference.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:labels/labels.dart'; + +part 'get_label_method.g.dart'; + +@JsonSerializable( + explicitToJson: true, + converters: [ + IdConverter(), + AccountIdConverter(), + PropertiesConverter(), + ], +) +class GetLabelMethod extends GetMethod { + GetLabelMethod(super.accountId); + + @override + MethodName get methodName => MethodName('Label/get'); + + @override + Set get requiredCapabilities => { + CapabilityIdentifier.jmapCore, + LabelsConstants.labelsCapability, + }; + + @override + List get props => [methodName, accountId, ids, requiredCapabilities]; + + factory GetLabelMethod.fromJson(Map json) => + _$GetLabelMethodFromJson(json); + + @override + Map toJson() => _$GetLabelMethodToJson(this); +} diff --git a/labels/lib/method/get/get_label_response.dart b/labels/lib/method/get/get_label_response.dart new file mode 100644 index 000000000..e24bcc9e3 --- /dev/null +++ b/labels/lib/method/get/get_label_response.dart @@ -0,0 +1,31 @@ +import 'package:jmap_dart_client/http/converter/account_id_converter.dart'; +import 'package:jmap_dart_client/http/converter/id_converter.dart'; +import 'package:jmap_dart_client/http/converter/state_converter.dart'; +import 'package:jmap_dart_client/jmap/core/method/response/get_response.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:labels/labels.dart'; + +part 'get_label_response.g.dart'; + +@JsonSerializable( + converters: [ + StateConverter(), + AccountIdConverter(), + IdConverter(), + ], +) +class GetLabelResponse extends GetResponse