TF-3985 Add JMAP SaaS capability com:linagora:params:saas
This commit is contained in:
@@ -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/vacation_capability.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/capability/web_socket_ticket_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:jmap_dart_client/jmap/core/capability/websocket_capability.dart';
|
||||||
|
import 'package:model/saas/saas_account_capability.dart';
|
||||||
import 'package:model/support/contact_support_capability.dart';
|
import 'package:model/support/contact_support_capability.dart';
|
||||||
|
|
||||||
class CapabilityPropertiesConverter {
|
class CapabilityPropertiesConverter {
|
||||||
@@ -35,6 +36,8 @@ class CapabilityPropertiesConverter {
|
|||||||
return properties.toJson();
|
return properties.toJson();
|
||||||
} else if (properties is ContactSupportCapability) {
|
} else if (properties is ContactSupportCapability) {
|
||||||
return properties.toJson();
|
return properties.toJson();
|
||||||
|
} else if (properties is SaaSAccountCapability) {
|
||||||
|
return properties.toJson();
|
||||||
} else if (properties is DefaultCapability) {
|
} else if (properties is DefaultCapability) {
|
||||||
return properties.properties;
|
return properties.properties;
|
||||||
} else if (properties is EmptyCapability) {
|
} else if (properties is EmptyCapability) {
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import 'package:tmail_ui_user/main/error/capability_validator.dart';
|
|||||||
extension SessionExtensions on Session {
|
extension SessionExtensions on Session {
|
||||||
static final CapabilityIdentifier linagoraContactSupportCapability = CapabilityIdentifier(Uri.parse('com:linagora:params:jmap:contact:support'));
|
static final CapabilityIdentifier linagoraContactSupportCapability = CapabilityIdentifier(Uri.parse('com:linagora:params:jmap:contact:support'));
|
||||||
static final CapabilityIdentifier linagoraDownloadAllCapability = CapabilityIdentifier(Uri.parse('com:linagora:params:downloadAll'));
|
static final CapabilityIdentifier linagoraDownloadAllCapability = CapabilityIdentifier(Uri.parse('com:linagora:params:downloadAll'));
|
||||||
|
static final CapabilityIdentifier linagoraSaaSCapability = CapabilityIdentifier(Uri.parse('com:linagora:params:saas'));
|
||||||
|
|
||||||
static final Map<CapabilityIdentifier, CapabilityProperties Function(Map<String, dynamic>)> customMapCapabilitiesConverter = {
|
static final Map<CapabilityIdentifier, CapabilityProperties Function(Map<String, dynamic>)> customMapCapabilitiesConverter = {
|
||||||
linagoraContactSupportCapability: ContactSupportCapability.deserialize,
|
linagoraContactSupportCapability: ContactSupportCapability.deserialize,
|
||||||
@@ -149,4 +150,18 @@ extension SessionExtensions on Session {
|
|||||||
);
|
);
|
||||||
return settingsCapability?.readOnlyProperties?.contains('language') == true;
|
return settingsCapability?.readOnlyProperties?.contains('language') == true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SaaSAccountCapability? getSaaSAccountCapability(AccountId accountId) {
|
||||||
|
try {
|
||||||
|
final saaSAccountCapability = getCapabilityProperties<SaaSAccountCapability>(
|
||||||
|
accountId,
|
||||||
|
linagoraSaaSCapability,
|
||||||
|
);
|
||||||
|
log('SessionExtensions::getSaaSAccountCapability:saaSAccountCapability = $saaSAccountCapability');
|
||||||
|
return saaSAccountCapability;
|
||||||
|
} catch (e) {
|
||||||
|
logError('SessionExtensions::getSaaSAccountCapability():[Exception] $e');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -22,6 +22,7 @@ import 'package:model/principals/capability_principals.dart';
|
|||||||
import 'package:uri/uri.dart';
|
import 'package:uri/uri.dart';
|
||||||
|
|
||||||
extension SessionExtension on Session {
|
extension SessionExtension on Session {
|
||||||
|
static const String saaSCapabilityProperties = 'com:linagora:params:saas';
|
||||||
|
|
||||||
String getDownloadUrl({String? jmapUrl}) {
|
String getDownloadUrl({String? jmapUrl}) {
|
||||||
final Uri downloadUrlValid;
|
final Uri downloadUrlValid;
|
||||||
|
|||||||
@@ -85,3 +85,5 @@ export 'upload/file_info.dart';
|
|||||||
export 'upload/upload_response.dart';
|
export 'upload/upload_response.dart';
|
||||||
// Support
|
// Support
|
||||||
export 'support/contact_support_capability.dart';
|
export 'support/contact_support_capability.dart';
|
||||||
|
// SaaS
|
||||||
|
export 'saas/saas_account_capability.dart';
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
import 'package:jmap_dart_client/jmap/core/capability/capability_properties.dart';
|
||||||
|
import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
|
part 'saas_account_capability.g.dart';
|
||||||
|
|
||||||
|
@JsonSerializable(explicitToJson: true, includeIfNull: false)
|
||||||
|
class SaaSAccountCapability extends CapabilityProperties {
|
||||||
|
final bool isPaying;
|
||||||
|
final bool canUpgrade;
|
||||||
|
|
||||||
|
SaaSAccountCapability({this.isPaying = false, this.canUpgrade = false});
|
||||||
|
|
||||||
|
factory SaaSAccountCapability.fromJson(Map<String, dynamic> json) =>
|
||||||
|
_$SaaSAccountCapabilityFromJson(json);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => _$SaaSAccountCapabilityToJson(this);
|
||||||
|
|
||||||
|
static SaaSAccountCapability deserialize(Map<String, dynamic> json) {
|
||||||
|
return SaaSAccountCapability.fromJson(json);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [isPaying, canUpgrade];
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user