From 128b82b74bb6a2b6653ae7d7c12eb4b6011aa99e Mon Sep 17 00:00:00 2001 From: Dat PHAM HOANG Date: Thu, 11 Jan 2024 00:54:07 +0700 Subject: [PATCH] [Android][Disable work manager] Handle the network issue when sending email with SendEmailExceptionThrower (cherry picked from commit 88328283a7fa4df97dc1284175593de65c760406) --- .../data/datasource_impl/email_datasource_impl.dart | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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 e9a21617d..998ec2183 100644 --- a/lib/features/email/data/datasource_impl/email_datasource_impl.dart +++ b/lib/features/email/data/datasource_impl/email_datasource_impl.dart @@ -8,6 +8,7 @@ import 'package:dartz/dartz.dart'; import 'package:dio/dio.dart'; import 'package:email_recovery/email_recovery/email_recovery_action.dart'; import 'package:email_recovery/email_recovery/email_recovery_action_id.dart'; +import 'package:get/get.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/core/sort/comparator.dart'; @@ -23,11 +24,13 @@ import 'package:tmail_ui_user/features/email/domain/model/restore_deleted_messag import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart'; import 'package:tmail_ui_user/features/sending_queue/domain/model/sending_email.dart'; import 'package:tmail_ui_user/main/exceptions/exception_thrower.dart'; +import 'package:tmail_ui_user/main/exceptions/send_email_exception_thrower.dart'; class EmailDataSourceImpl extends EmailDataSource { final EmailAPI emailAPI; final ExceptionThrower _exceptionThrower; + final ExceptionThrower _sendEmailExceptionThrower = Get.find(); EmailDataSourceImpl(this.emailAPI, this._exceptionThrower); @@ -44,10 +47,12 @@ class EmailDataSourceImpl extends EmailDataSource { AccountId accountId, EmailRequest emailRequest, {CreateNewMailboxRequest? mailboxRequest} - ) { - return Future.sync(() async { + ) async { + try { return await emailAPI.sendEmail(session, accountId, emailRequest, mailboxRequest: mailboxRequest); - }).catchError(_exceptionThrower.throwException); + } catch (error, stackTrace) { + return await _sendEmailExceptionThrower.throwException(error, stackTrace); + } } @override