TF-1118 Create repository and datasource for forwarding

This commit is contained in:
dab246
2022-11-03 13:01:15 +07:00
committed by Dat H. Pham
parent 014faae217
commit 72854bcb6f
19 changed files with 262 additions and 201 deletions
@@ -0,0 +1,52 @@
import 'package:forward/forward/tmail_forward.dart';
import 'package:jmap_dart_client/jmap/account_id.dart';
import 'package:tmail_ui_user/features/manage_account/data/datasource/forwarding_datasource.dart';
import 'package:tmail_ui_user/features/manage_account/data/network/forwarding_api.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/add_recipients_in_forwarding_request.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/delete_recipient_in_forwarding_request.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/edit_local_copy_in_forwarding_request.dart';
import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart';
class ForwardingDataSourceImpl extends ForwardingDataSource {
final ForwardingAPI _forwardingAPI;
final ExceptionThrower _exceptionThrower;
ForwardingDataSourceImpl(this._forwardingAPI, this._exceptionThrower);
@override
Future<TMailForward> getForward(AccountId accountId) {
return Future.sync(() async {
return await _forwardingAPI.getForward(accountId);
}).catchError((error) {
_exceptionThrower.throwException(error);
});
}
@override
Future<TMailForward> deleteRecipientInForwarding(AccountId accountId, DeleteRecipientInForwardingRequest deleteRequest) {
return Future.sync(() async {
return await _forwardingAPI.updateForward(accountId, deleteRequest.newTMailForward);
}).catchError((error) {
_exceptionThrower.throwException(error);
});
}
@override
Future<TMailForward> addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest) {
return Future.sync(() async {
return await _forwardingAPI.updateForward(accountId, addRequest.newTMailForward);
}).catchError((error) {
_exceptionThrower.throwException(error);
});
}
@override
Future<TMailForward> editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest) {
return Future.sync(() async {
return await _forwardingAPI.updateForward(accountId, editRequest.newTMailForward);
}).catchError((error) {
_exceptionThrower.throwException(error);
});
}
}
@@ -1,17 +1,13 @@
import 'dart:ui';
import 'package:forward/forward/tmail_forward.dart';
import 'package:jmap_dart_client/jmap/account_id.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';
import 'package:tmail_ui_user/features/manage_account/data/network/manage_account_api.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/add_recipients_in_forwarding_request.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_email_rule_filter_request.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/delete_email_rule_request.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/delete_recipient_in_forwarding_request.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/edit_email_rule_filter_request.dart';
import 'package:tmail_ui_user/features/manage_account/domain/model/edit_local_copy_in_forwarding_request.dart';
import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart';
class ManageAccountDataSourceImpl extends ManageAccountDataSource {
@@ -23,7 +19,8 @@ class ManageAccountDataSourceImpl extends ManageAccountDataSource {
ManageAccountDataSourceImpl(
this.manageAccountAPI,
this._languageCacheManager,
this._exceptionThrower);
this._exceptionThrower
);
@override
Future<void> persistLanguage(Locale localeCurrent) {
@@ -72,40 +69,4 @@ class ManageAccountDataSourceImpl extends ManageAccountDataSource {
_exceptionThrower.throwException(error);
});
}
@override
Future<TMailForward> getForward(AccountId accountId) {
return Future.sync(() async {
return await manageAccountAPI.getForward(accountId);
}).catchError((error) {
_exceptionThrower.throwException(error);
});
}
@override
Future<TMailForward> deleteRecipientInForwarding(AccountId accountId, DeleteRecipientInForwardingRequest deleteRequest) {
return Future.sync(() async {
return await manageAccountAPI.updateForward(accountId, deleteRequest.newTMailForward);
}).catchError((error) {
_exceptionThrower.throwException(error);
});
}
@override
Future<TMailForward> addRecipientsInForwarding(AccountId accountId, AddRecipientInForwardingRequest addRequest) {
return Future.sync(() async {
return await manageAccountAPI.updateForward(accountId, addRequest.newTMailForward);
}).catchError((error) {
_exceptionThrower.throwException(error);
});
}
@override
Future<TMailForward> editLocalCopyInForwarding(AccountId accountId, EditLocalCopyInForwardingRequest editRequest) {
return Future.sync(() async {
return await manageAccountAPI.updateForward(accountId, editRequest.newTMailForward);
}).catchError((error) {
_exceptionThrower.throwException(error);
});
}
}