From d4187eec74974f7968d97f2fe6822a3a6d61f9df Mon Sep 17 00:00:00 2001 From: dab246 Date: Fri, 28 Oct 2022 12:05:53 +0700 Subject: [PATCH] TF-1115 Implement catch exception for EmailDataSource --- .../presentation/composer_bindings.dart | 4 ++- .../destination_picker_bindings.dart | 4 ++- .../email_datasource_impl.dart | 35 ++++++++++--------- .../email/presentation/email_bindings.dart | 4 ++- .../presentation/mailbox_bindings.dart | 4 ++- .../bindings/mailbox_dashboard_bindings.dart | 4 ++- .../thread/presentation/thread_bindings.dart | 4 ++- .../exceptions/cache_exception_thrower.dart | 3 +- .../exceptions/remote_exception_thrower.dart | 2 +- 9 files changed, 39 insertions(+), 25 deletions(-) diff --git a/lib/features/composer/presentation/composer_bindings.dart b/lib/features/composer/presentation/composer_bindings.dart index 0fc285310..216271dfb 100644 --- a/lib/features/composer/presentation/composer_bindings.dart +++ b/lib/features/composer/presentation/composer_bindings.dart @@ -78,7 +78,9 @@ class ComposerBindings extends BaseBindings { Get.lazyPut(() => MailboxCacheDataSourceImpl( Get.find(), Get.find())); - Get.lazyPut(() => EmailDataSourceImpl(Get.find())); + Get.lazyPut(() => EmailDataSourceImpl( + Get.find(), + Get.find())); Get.lazyPut(() => HtmlDataSourceImpl( Get.find(), Get.find() diff --git a/lib/features/destination_picker/presentation/destination_picker_bindings.dart b/lib/features/destination_picker/presentation/destination_picker_bindings.dart index 1e0fd4586..0b6c250cb 100644 --- a/lib/features/destination_picker/presentation/destination_picker_bindings.dart +++ b/lib/features/destination_picker/presentation/destination_picker_bindings.dart @@ -71,7 +71,9 @@ class DestinationPickerBindings extends BaseBindings { Get.find(), Get.find())); Get.lazyPut(() => StateDataSourceImpl(Get.find())); - Get.lazyPut(() => EmailDataSourceImpl(Get.find())); + Get.lazyPut(() => EmailDataSourceImpl( + Get.find(), + Get.find())); Get.lazyPut(() => ThreadDataSourceImpl( Get.find(), Get.find(), diff --git a/lib/features/email/data/datasource_impl/email_datasource_impl.dart b/lib/features/email/data/datasource_impl/email_datasource_impl.dart index 4c5503006..c54042258 100644 --- a/lib/features/email/data/datasource_impl/email_datasource_impl.dart +++ b/lib/features/email/data/datasource_impl/email_datasource_impl.dart @@ -1,11 +1,12 @@ import 'dart:async'; import 'dart:typed_data'; -import 'package:core/core.dart'; +import 'package:core/data/network/download/downloaded_response.dart'; +import 'package:core/presentation/state/failure.dart'; +import 'package:core/presentation/state/success.dart'; import 'package:dartz/dartz.dart'; import 'package:dio/dio.dart'; import 'package:jmap_dart_client/jmap/account_id.dart'; -import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/mail/email/email.dart'; import 'package:model/model.dart'; import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart'; @@ -13,19 +14,21 @@ import 'package:tmail_ui_user/features/email/data/datasource/email_datasource.da import 'package:tmail_ui_user/features/email/data/network/email_api.dart'; import 'package:tmail_ui_user/features/email/domain/model/move_to_mailbox_request.dart'; import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart'; +import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart'; class EmailDataSourceImpl extends EmailDataSource { final EmailAPI emailAPI; + final ExceptionThrower _exceptionThrower; - EmailDataSourceImpl(this.emailAPI); + EmailDataSourceImpl(this.emailAPI, this._exceptionThrower); @override Future getEmailContent(AccountId accountId, EmailId emailId) { return Future.sync(() async { return await emailAPI.getEmailContent(accountId, emailId); }).catchError((error) { - throw error; + _exceptionThrower.throwException(error); }); } @@ -34,7 +37,7 @@ class EmailDataSourceImpl extends EmailDataSource { return Future.sync(() async { return await emailAPI.sendEmail(accountId, emailRequest, mailboxRequest: mailboxRequest); }).catchError((error) { - throw error; + _exceptionThrower.throwException(error); }); } @@ -43,7 +46,7 @@ class EmailDataSourceImpl extends EmailDataSource { return Future.sync(() async { return await emailAPI.markAsRead(accountId, emails, readActions); }).catchError((error) { - throw error; + _exceptionThrower.throwException(error); }); } @@ -57,7 +60,7 @@ class EmailDataSourceImpl extends EmailDataSource { return Future.sync(() async { return await emailAPI.downloadAttachments(attachments, accountId, baseDownloadUrl, accountRequest); }).catchError((error) { - throw error; + _exceptionThrower.throwException(error); }); } @@ -72,7 +75,7 @@ class EmailDataSourceImpl extends EmailDataSource { return Future.sync(() async { return await emailAPI.exportAttachment(attachment, accountId, baseDownloadUrl, accountRequest, cancelToken); }).catchError((error) { - throw error; + _exceptionThrower.throwException(error); }); } @@ -81,7 +84,7 @@ class EmailDataSourceImpl extends EmailDataSource { return Future.sync(() async { return await emailAPI.moveToMailbox(accountId, moveRequest); }).catchError((error) { - throw error; + _exceptionThrower.throwException(error); }); } @@ -90,7 +93,7 @@ class EmailDataSourceImpl extends EmailDataSource { return Future.sync(() async { return await emailAPI.markAsStar(accountId, emails, markStarAction); }).catchError((error) { - throw error; + _exceptionThrower.throwException(error); }); } @@ -99,7 +102,7 @@ class EmailDataSourceImpl extends EmailDataSource { return Future.sync(() async { return await emailAPI.saveEmailAsDrafts(accountId, email); }).catchError((error) { - throw error; + _exceptionThrower.throwException(error); }); } @@ -108,7 +111,7 @@ class EmailDataSourceImpl extends EmailDataSource { return Future.sync(() async { return await emailAPI.removeEmailDrafts(accountId, emailId); }).catchError((error) { - throw error; + _exceptionThrower.throwException(error); }); } @@ -117,7 +120,7 @@ class EmailDataSourceImpl extends EmailDataSource { return Future.sync(() async { return await emailAPI.updateEmailDrafts(accountId, newEmail, oldEmailId); }).catchError((error) { - throw error; + _exceptionThrower.throwException(error); }); } @@ -139,7 +142,7 @@ class EmailDataSourceImpl extends EmailDataSource { accountRequest, onReceiveController); }).catchError((error) { - throw error; + _exceptionThrower.throwException(error); }); } @@ -148,7 +151,7 @@ class EmailDataSourceImpl extends EmailDataSource { return Future.sync(() async { return await emailAPI.deleteMultipleEmailsPermanently(accountId, emailIds); }).catchError((error) { - throw error; + _exceptionThrower.throwException(error); }); } @@ -157,7 +160,7 @@ class EmailDataSourceImpl extends EmailDataSource { return Future.sync(() async { return await emailAPI.deleteEmailPermanently(accountId, emailId); }).catchError((error) { - throw error; + _exceptionThrower.throwException(error); }); } } \ No newline at end of file diff --git a/lib/features/email/presentation/email_bindings.dart b/lib/features/email/presentation/email_bindings.dart index 02a221638..c4f55e798 100644 --- a/lib/features/email/presentation/email_bindings.dart +++ b/lib/features/email/presentation/email_bindings.dart @@ -85,7 +85,9 @@ class EmailBindings extends BaseBindings { Get.lazyPut(() => MailboxCacheDataSourceImpl( Get.find(), Get.find())); - Get.lazyPut(() => EmailDataSourceImpl(Get.find())); + Get.lazyPut(() => EmailDataSourceImpl( + Get.find(), + Get.find())); Get.lazyPut(() => HiveAccountDatasourceImpl(Get.find())); Get.lazyPut(() => HtmlDataSourceImpl( Get.find(), diff --git a/lib/features/mailbox/presentation/mailbox_bindings.dart b/lib/features/mailbox/presentation/mailbox_bindings.dart index 1bac78745..20048c5bc 100644 --- a/lib/features/mailbox/presentation/mailbox_bindings.dart +++ b/lib/features/mailbox/presentation/mailbox_bindings.dart @@ -77,7 +77,9 @@ class MailboxBindings extends BaseBindings { Get.find(), Get.find())); Get.lazyPut(() => StateDataSourceImpl(Get.find())); - Get.lazyPut(() => EmailDataSourceImpl(Get.find())); + Get.lazyPut(() => EmailDataSourceImpl( + Get.find(), + Get.find())); Get.lazyPut(() => ThreadDataSourceImpl( Get.find(), Get.find(), diff --git a/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart b/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart index a1b29c1e3..8777a41a8 100644 --- a/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart +++ b/lib/features/mailbox_dashboard/presentation/bindings/mailbox_dashboard_bindings.dart @@ -145,7 +145,9 @@ class MailboxDashBoardBindings extends BaseBindings { @override void bindingsDataSourceImpl() { - Get.lazyPut(() => EmailDataSourceImpl(Get.find())); + Get.lazyPut(() => EmailDataSourceImpl( + Get.find(), + Get.find())); Get.lazyPut(() => HtmlDataSourceImpl( Get.find(), Get.find() diff --git a/lib/features/thread/presentation/thread_bindings.dart b/lib/features/thread/presentation/thread_bindings.dart index 93f11e73c..1cc8b2634 100644 --- a/lib/features/thread/presentation/thread_bindings.dart +++ b/lib/features/thread/presentation/thread_bindings.dart @@ -92,7 +92,9 @@ class ThreadBindings extends BaseBindings { Get.find())); Get.lazyPut(() => LocalThreadDataSourceImpl(Get.find())); Get.lazyPut(() => StateDataSourceImpl(Get.find())); - Get.lazyPut(() => EmailDataSourceImpl(Get.find())); + Get.lazyPut(() => EmailDataSourceImpl( + Get.find(), + Get.find())); Get.lazyPut(() => HtmlDataSourceImpl( Get.find(), Get.find(), diff --git a/lib/main/exceptions/cache_exception_thrower.dart b/lib/main/exceptions/cache_exception_thrower.dart index 82a63bd28..01e0d18ef 100644 --- a/lib/main/exceptions/cache_exception_thrower.dart +++ b/lib/main/exceptions/cache_exception_thrower.dart @@ -1,10 +1,9 @@ -import 'package:tmail_ui_user/main/exceptions/cache_exception.dart'; import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart'; class CacheExceptionThrower extends ExceptionThrower { @override void throwException(dynamic error) { - throw UnknownCacheError(message: error.toString()); + throw error; } } \ No newline at end of file diff --git a/lib/main/exceptions/remote_exception_thrower.dart b/lib/main/exceptions/remote_exception_thrower.dart index 8790610fc..db8863b83 100644 --- a/lib/main/exceptions/remote_exception_thrower.dart +++ b/lib/main/exceptions/remote_exception_thrower.dart @@ -32,7 +32,7 @@ class RemoteExceptionThrower extends ExceptionThrower { message: errorResponse.description); } } else { - throw UnknownError(message: error.toString()); + throw error; } } } \ No newline at end of file