From 8ab4e7bfc061a4408e0cf09a6c7cc68a29ea205b Mon Sep 17 00:00:00 2001 From: dab246 Date: Wed, 17 Aug 2022 17:30:33 +0700 Subject: [PATCH] TF-801 Add data layer for get all vacation --- .../datasource/manage_account_datasource.dart | 2 ++ .../manage_account_datasource_impl.dart | 10 +++++++++ .../data/network/manage_account_api.dart | 21 +++++++++++++++++++ .../manage_account_repository_impl.dart | 6 ++++++ 4 files changed, 39 insertions(+) diff --git a/lib/features/manage_account/data/datasource/manage_account_datasource.dart b/lib/features/manage_account/data/datasource/manage_account_datasource.dart index 45df74ccf..5da9b1ef7 100644 --- a/lib/features/manage_account/data/datasource/manage_account_datasource.dart +++ b/lib/features/manage_account/data/datasource/manage_account_datasource.dart @@ -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 getForward(AccountId accountId); + Future> getAllVacationResponse(AccountId accountId); } \ No newline at end of file diff --git a/lib/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart b/lib/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart index b099428c3..e231c789f 100644 --- a/lib/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart +++ b/lib/features/manage_account/data/datasource_impl/manage_account_datasource_impl.dart @@ -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> getAllVacationResponse(AccountId accountId) { + return Future.sync(() async { + return await manageAccountAPI.getAllVacationResponse(accountId); + }).catchError((error) { + throw error; + }); + } } \ No newline at end of file diff --git a/lib/features/manage_account/data/network/manage_account_api.dart b/lib/features/manage_account/data/network/manage_account_api.dart index c774a205a..2b1306ea9 100644 --- a/lib/features/manage_account/data/network/manage_account_api.dart +++ b/lib/features/manage_account/data/network/manage_account_api.dart @@ -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> 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( + getVacationInvocation.methodCallId, + GetVacationResponse.deserialize); + + return resultList?.list ?? []; + } } \ No newline at end of file diff --git a/lib/features/manage_account/data/repository/manage_account_repository_impl.dart b/lib/features/manage_account/data/repository/manage_account_repository_impl.dart index ffdc277bf..9f8d38e9c 100644 --- a/lib/features/manage_account/data/repository/manage_account_repository_impl.dart +++ b/lib/features/manage_account/data/repository/manage_account_repository_impl.dart @@ -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 getForward(AccountId accountId) { return dataSource.getForward(accountId); } + + @override + Future> getAllVacationResponse(AccountId accountId) { + return dataSource.getAllVacationResponse(accountId); + } } \ No newline at end of file