From 34aa2fe875b146b39e61564087241b14d53d231b Mon Sep 17 00:00:00 2001 From: dab246 Date: Fri, 28 Oct 2022 12:38:21 +0700 Subject: [PATCH] TF-1115 Implement catch exception for ContactDataSource --- .../composer_datasource_impl.dart | 2 +- .../contact_datasource_impl.dart | 26 +++++++++++++------ .../presentation/composer_bindings.dart | 2 +- .../contact_autocomplete_bindings.dart | 3 ++- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/lib/features/composer/data/datasource_impl/composer_datasource_impl.dart b/lib/features/composer/data/datasource_impl/composer_datasource_impl.dart index f06177022..b85641518 100644 --- a/lib/features/composer/data/datasource_impl/composer_datasource_impl.dart +++ b/lib/features/composer/data/datasource_impl/composer_datasource_impl.dart @@ -22,7 +22,7 @@ class ComposerDataSourceImpl extends ComposerDataSource { } ) { return Future.sync(() async { - return downloadClient.downloadImageAsBase64( + return await downloadClient.downloadImageAsBase64( url, cid, fileInfo.fileExtension, diff --git a/lib/features/composer/data/datasource_impl/contact_datasource_impl.dart b/lib/features/composer/data/datasource_impl/contact_datasource_impl.dart index d878d3f30..1034076c1 100644 --- a/lib/features/composer/data/datasource_impl/contact_datasource_impl.dart +++ b/lib/features/composer/data/datasource_impl/contact_datasource_impl.dart @@ -3,21 +3,31 @@ import 'package:contacts_service/contacts_service.dart' as contact_service; import 'package:get/get.dart'; import 'package:model/model.dart'; import 'package:tmail_ui_user/features/composer/data/datasource/contact_datasource.dart'; +import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart'; class ContactDataSourceImpl extends ContactDataSource { + final ExceptionThrower _exceptionThrower; + + ContactDataSourceImpl(this._exceptionThrower); + @override Future> getContactSuggestions(AutoCompletePattern autoCompletePattern) async { - if (autoCompletePattern.word.isEmpty) { - return []; - } else { - final suggestedList = await contact_service.ContactsService + return Future.sync(() async { + if (autoCompletePattern.word.isEmpty) { + return []; + } else { + final suggestedList = await contact_service.ContactsService .getContactsByEmailOrName(autoCompletePattern.word); - if (suggestedList.isNotEmpty) { - return suggestedList.expand((contact) => _toDeviceContact(contact)).toList(); + if (suggestedList.isNotEmpty) { + return suggestedList.expand((contact) => _toDeviceContact(contact)).toList(); + } else { + return []; + } } - return []; - } + }).catchError((error) { + _exceptionThrower.throwException(error); + }); } List _toDeviceContact(contact_service.Contact contact) { diff --git a/lib/features/composer/presentation/composer_bindings.dart b/lib/features/composer/presentation/composer_bindings.dart index 7615704c9..cc1355502 100644 --- a/lib/features/composer/presentation/composer_bindings.dart +++ b/lib/features/composer/presentation/composer_bindings.dart @@ -70,7 +70,7 @@ class ComposerBindings extends BaseBindings { void bindingsDataSourceImpl() { Get.lazyPut(() => AttachmentUploadDataSourceImpl(Get.find())); Get.lazyPut(() => ComposerDataSourceImpl(Get.find(), Get.find())); - Get.lazyPut(() => ContactDataSourceImpl()); + Get.lazyPut(() => ContactDataSourceImpl(Get.find())); Get.lazyPut(() => MailboxDataSourceImpl( Get.find(), Get.find(), diff --git a/lib/features/mailbox_dashboard/presentation/bindings/contact_autocomplete_bindings.dart b/lib/features/mailbox_dashboard/presentation/bindings/contact_autocomplete_bindings.dart index f5b7703b1..e1a822bd2 100644 --- a/lib/features/mailbox_dashboard/presentation/bindings/contact_autocomplete_bindings.dart +++ b/lib/features/mailbox_dashboard/presentation/bindings/contact_autocomplete_bindings.dart @@ -6,6 +6,7 @@ import 'package:tmail_ui_user/features/composer/data/datasource_impl/contact_dat import 'package:tmail_ui_user/features/composer/data/repository/contact_repository_impl.dart'; import 'package:tmail_ui_user/features/composer/domain/repository/contact_repository.dart'; import 'package:tmail_ui_user/features/composer/domain/usecases/get_device_contact_suggestions_interactor.dart'; +import 'package:tmail_ui_user/main/exceptions/cache_exception_thrower.dart'; class ContactAutoCompleteBindings extends BaseBindings { @@ -19,7 +20,7 @@ class ContactAutoCompleteBindings extends BaseBindings { @override void bindingsDataSourceImpl() { - Get.put(ContactDataSourceImpl()); + Get.put(ContactDataSourceImpl(Get.find())); } @override