Add AI capability

This commit is contained in:
Théo Poizat
2025-12-11 16:29:42 +01:00
committed by Dat H. Pham
parent e7405051d1
commit 8c16bd1fad
3 changed files with 40 additions and 0 deletions
@@ -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:model/ai/ai_capability.dart';
import 'package:model/ai/capability_ai.dart';
import 'package:model/download_all/download_all_capability.dart';
import 'package:model/mailbox/mailbox_constants.dart';
import 'package:model/model.dart';
@@ -33,6 +35,7 @@ extension SessionExtensions on Session {
linagoraDownloadAllCapability: DownloadAllCapability.deserialize,
capabilityServerSettings: SettingsCapability.deserialize,
linagoraSaaSCapability: SaaSAccountCapability.deserialize,
capabilityAI: AICapability.deserialize,
};
Map<String, dynamic> toJson() {
@@ -165,4 +168,18 @@ extension SessionExtensions on Session {
return null;
}
}
AICapability? getAICapability(AccountId accountId) {
try {
final aiCapability = getCapabilityProperties<AICapability>(
accountId,
capabilityAI,
);
log('SessionExtensions::getAICapability:aiCapability = $aiCapability');
return aiCapability;
} catch (e) {
logError('SessionExtensions::getAICapability():[Exception] $e');
return null;
}
}
}
+20
View File
@@ -0,0 +1,20 @@
import 'package:jmap_dart_client/jmap/core/capability/capability_properties.dart';
import 'package:json_annotation/json_annotation.dart';
part 'ai_capability.g.dart';
@JsonSerializable(includeIfNull: false)
class AICapability extends CapabilityProperties {
AICapability({this.scribeEndpoint});
final String? scribeEndpoint;
factory AICapability.fromJson(Map<String, dynamic> json) => _$AICapabilityFromJson(json);
Map<String, dynamic> toJson() => _$AICapabilityToJson(this);
factory AICapability.deserialize(Map<String, dynamic> json) => _$AICapabilityFromJson(json);
@override
List<Object?> get props => [scribeEndpoint];
}
+3
View File
@@ -0,0 +1,3 @@
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
final capabilityAI = CapabilityIdentifier(Uri.parse('com:linagora:params:jmap:aibot'));