TF-4383 Handle read only labels

This commit is contained in:
dab246
2026-03-25 18:36:10 +07:00
committed by Dat H. Pham
parent c17782bfd4
commit eb017b54b1
10 changed files with 97 additions and 7 deletions
@@ -10,6 +10,7 @@ import 'package:jmap_dart_client/jmap/core/capability/submission_capability.dart
import 'package:jmap_dart_client/jmap/core/capability/vacation_capability.dart';
import 'package:jmap_dart_client/jmap/core/capability/web_socket_ticket_capability.dart';
import 'package:jmap_dart_client/jmap/core/capability/websocket_capability.dart';
import 'package:labels/model/labels_capability.dart';
import 'package:model/saas/saas_account_capability.dart';
import 'package:model/support/contact_support_capability.dart';
import 'package:scribe/scribe/ai/presentation/model/ai_capability.dart';
@@ -41,6 +42,8 @@ class CapabilityPropertiesConverter {
return properties.toJson();
} else if (properties is AICapability) {
return properties.toJson();
} else if (properties is LabelsCapability) {
return properties.toJson();
} else if (properties is DefaultCapability) {
return properties.properties;
} else if (properties is EmptyCapability) {
@@ -12,6 +12,8 @@ import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart
import 'package:jmap_dart_client/jmap/core/capability/capability_properties.dart';
import 'package:jmap_dart_client/jmap/core/session/session.dart';
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
import 'package:labels/model/labels_capability.dart';
import 'package:labels/utils/labels_constants.dart';
import 'package:model/download_all/download_all_capability.dart';
import 'package:model/mailbox/mailbox_constants.dart';
import 'package:model/model.dart';
@@ -36,6 +38,7 @@ extension SessionExtensions on Session {
capabilityServerSettings: SettingsCapability.deserialize,
linagoraSaaSCapability: SaaSAccountCapability.deserialize,
AiScribeConstants.aiCapability: AICapability.fromJson,
LabelsConstants.labelsCapability: LabelsCapability.fromJson,
};
Map<String, dynamic> toJson() {
@@ -199,4 +202,22 @@ extension SessionExtensions on Session {
return null;
}
}
LabelsCapability? getLabelsCapability(AccountId accountId) {
try {
if (!LabelsConstants.labelsCapability.isSupported(this, accountId)) {
return null;
}
final labelsCapability = getCapabilityProperties<LabelsCapability>(
accountId,
LabelsConstants.labelsCapability,
);
log('SessionExtensions::getLabelsCapability:labelsCapability = $labelsCapability');
return labelsCapability;
} catch (e) {
logWarning('SessionExtensions::getLabelsCapability():[Exception] $e');
return null;
}
}
}