TF-2100 Add email_recovery objects and capability

(cherry picked from commit b4f53d9da47ad4799ac1fd9aeaba95940fc6a308)
This commit is contained in:
hieubt
2023-12-10 21:38:57 +07:00
committed by Dat H. Pham
parent 409ce0b880
commit 1b8d758455
6 changed files with 156 additions and 0 deletions
@@ -0,0 +1,3 @@
import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart';
final capabilityDeletedMessagesVault = CapabilityIdentifier(Uri.parse('com:linagora:params:jmap:messages:vault'));
@@ -0,0 +1,13 @@
import 'package:email_recovery/email_recovery/email_recovery_action_id.dart';
import 'package:jmap_dart_client/jmap/core/id.dart';
import 'package:json_annotation/json_annotation.dart';
class EmailRecoveryActionIdConverter implements JsonConverter<EmailRecoveryActionId, String> {
const EmailRecoveryActionIdConverter();
@override
EmailRecoveryActionId fromJson(String json) => EmailRecoveryActionId(Id(json));
@override
String toJson(EmailRecoveryActionId object) => object.id.value;
}
@@ -0,0 +1,12 @@
import 'package:email_recovery/email_recovery/status.dart';
import 'package:json_annotation/json_annotation.dart';
class StatusConverter implements JsonConverter<Status, String> {
const StatusConverter();
@override
Status fromJson(String json) => Status(json);
@override
String toJson(Status object) => object.value;
}
@@ -0,0 +1,97 @@
import 'package:email_recovery/email_recovery/converter/status_converter.dart';
import 'package:email_recovery/email_recovery/email_recovery_action_id.dart';
import 'package:email_recovery/email_recovery/status.dart';
import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
import 'package:email_recovery/email_recovery/converter/email_recovery_action_id_converter.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
import 'package:jmap_dart_client/http/converter/utc_date_nullable_converter.dart';
import 'package:jmap_dart_client/http/converter/unsigned_int_nullable_converter.dart';
part 'email_recovery_action.g.dart';
@EmailRecoveryActionIdConverter()
@UTCDateNullableConverter()
@UnsignedIntNullableConverter()
@StatusConverter()
@JsonSerializable(explicitToJson: true, includeIfNull: false)
class EmailRecoveryAction with EquatableMixin {
final EmailRecoveryActionId? id;
final UTCDate? deletedBefore;
final UTCDate? deletedAfter;
final UTCDate? receivedBefore;
final UTCDate? receivedAfter;
final bool? hasAttachment;
final String? subject;
final String? sender;
final List<String>? recipients;
final UnsignedInt? successfulRestoreCount;
final UnsignedInt? errorRestoreCount;
final Status? status;
EmailRecoveryAction({
this.id,
this.deletedBefore,
this.deletedAfter,
this.receivedBefore,
this.receivedAfter,
this.hasAttachment,
this.subject,
this.sender,
this.recipients,
this.successfulRestoreCount,
this.errorRestoreCount,
this.status,
});
factory EmailRecoveryAction.fromJson(Map<String, dynamic> json) =>
_$EmailRecoveryActionFromJson(json);
Map<String, dynamic> toJson() => _$EmailRecoveryActionToJson(this);
EmailRecoveryAction copyWith({
EmailRecoveryActionId? id,
UTCDate? deletedBefore,
UTCDate? deletedAfter,
UTCDate? receivedBefore,
UTCDate? receivedAfter,
bool? hasAttachment,
String? subject,
String? sender,
List<String>? recipients,
UnsignedInt? successfulRestoreCount,
UnsignedInt? errorRestoreCount,
Status? status,
}) {
return EmailRecoveryAction(
id: id ?? this.id,
deletedBefore: deletedBefore ?? this.deletedBefore,
deletedAfter: deletedAfter ?? this.deletedAfter,
receivedBefore: receivedBefore ?? this.receivedBefore,
receivedAfter: receivedAfter ?? this.receivedAfter,
hasAttachment: hasAttachment ?? this.hasAttachment,
subject: subject ?? this.subject,
sender: sender ?? this.sender,
recipients: recipients ?? this.recipients,
successfulRestoreCount: successfulRestoreCount ?? this.successfulRestoreCount,
errorRestoreCount: errorRestoreCount ?? this.errorRestoreCount,
status: status ?? this.status,
);
}
List<Object?> get props => [
id,
deletedBefore,
deletedAfter,
receivedBefore,
receivedAfter,
hasAttachment,
subject,
sender,
recipients,
successfulRestoreCount,
errorRestoreCount,
status,
];
}
@@ -0,0 +1,15 @@
import 'package:email_recovery/email_recovery/converter/email_recovery_action_id_converter.dart';
import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/http/converter/id_converter.dart';
import 'package:jmap_dart_client/jmap/core/id.dart';
@EmailRecoveryActionIdConverter()
@IdConverter()
class EmailRecoveryActionId with EquatableMixin {
final Id id;
EmailRecoveryActionId(this.id);
@override
List<Object?> get props => [id];
}
@@ -0,0 +1,16 @@
import 'package:equatable/equatable.dart';
class Status with EquatableMixin {
static final waiting = Status('waiting');
static final inProgress = Status('inProgress');
static final completed = Status('completed');
static final failed = Status('failed');
static final canceled = Status('canceled');
final String value;
Status(this.value);
@override
List<Object?> get props => [value];
}