TF-801 Add data layer for get all vacation

This commit is contained in:
dab246
2022-08-17 17:30:33 +07:00
committed by Dat H. Pham
parent da05650278
commit 8ab4e7bfc0
4 changed files with 39 additions and 0 deletions
@@ -4,6 +4,7 @@ import 'package:forward/forward/tmail_forward.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
import 'package:jmap_dart_client/jmap/identities/identity.dart';
import 'package:jmap_dart_client/jmap/mail/vacation/vacation_response.dart';
import 'package:rule_filter/rule_filter/tmail_rule.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_identity_request.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/delete_email_rule_request.dart';
@@ -33,4 +34,5 @@ abstract class ManageAccountDataSource {
Future<TMailForward> getForward(AccountId accountId);
Future<List<VacationResponse>> getAllVacationResponse(AccountId accountId);
}
@@ -4,6 +4,7 @@ import 'package:forward/forward/tmail_forward.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
import 'package:jmap_dart_client/jmap/identities/identity.dart';
import 'package:jmap_dart_client/jmap/mail/vacation/vacation_response.dart';
import 'package:rule_filter/rule_filter/tmail_rule.dart';
import 'package:tmail_ui_user/features/manage_account/data/datasource/manage_account_datasource.dart';
import 'package:tmail_ui_user/features/manage_account/data/local/language_cache_manager.dart';
@@ -116,4 +117,13 @@ class ManageAccountDataSourceImpl extends ManageAccountDataSource {
throw error;
});
}
@override
Future<List<VacationResponse>> getAllVacationResponse(AccountId accountId) {
return Future.sync(() async {
return await manageAccountAPI.getAllVacationResponse(accountId);
}).catchError((error) {
throw error;
});
}
}
@@ -15,6 +15,9 @@ import 'package:jmap_dart_client/jmap/identities/identity.dart';
import 'package:jmap_dart_client/jmap/identities/set/set_identity_method.dart';
import 'package:jmap_dart_client/jmap/identities/set/set_identity_response.dart';
import 'package:jmap_dart_client/jmap/jmap_request.dart';
import 'package:jmap_dart_client/jmap/mail/vacation/get/get_vacation_method.dart';
import 'package:jmap_dart_client/jmap/mail/vacation/get/get_vacation_response.dart';
import 'package:jmap_dart_client/jmap/mail/vacation/vacation_response.dart';
import 'package:rule_filter/rule_filter/get/get_rule_filter_method.dart';
import 'package:rule_filter/rule_filter/get/get_rule_filter_response.dart';
import 'package:rule_filter/rule_filter/rule_filter_id.dart';
@@ -212,4 +215,22 @@ class ManageAccountAPI {
return tMailForwardResult;
}
Future<List<VacationResponse>> getAllVacationResponse(AccountId accountId) async {
final processingInvocation = ProcessingInvocation();
final requestBuilder = JmapRequestBuilder(_httpClient, processingInvocation);
final getVacationMethod = GetVacationMethod(accountId);
final getVacationInvocation = requestBuilder.invocation(getVacationMethod);
final response = await (requestBuilder
..usings(getVacationMethod.requiredCapabilities))
.build()
.execute();
final resultList = response.parse<GetVacationResponse>(
getVacationInvocation.methodCallId,
GetVacationResponse.deserialize);
return resultList?.list ?? <VacationResponse>[];
}
}
@@ -4,6 +4,7 @@ import 'package:forward/forward/tmail_forward.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
import 'package:jmap_dart_client/jmap/identities/identity.dart';
import 'package:jmap_dart_client/jmap/mail/vacation/vacation_response.dart';
import 'package:rule_filter/rule_filter/tmail_rule.dart';
import 'package:tmail_ui_user/features/manage_account/data/datasource/manage_account_datasource.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_identity_request.dart';
@@ -69,4 +70,9 @@ class ManageAccountRepositoryImpl extends ManageAccountRepository {
Future<TMailForward> getForward(AccountId accountId) {
return dataSource.getForward(accountId);
}
@override
Future<List<VacationResponse>> getAllVacationResponse(AccountId accountId) {
return dataSource.getAllVacationResponse(accountId);
}
}