[Android][Disable work manager] Handle the network issue when sending email with SendEmailExceptionThrower

(cherry picked from commit 88328283a7fa4df97dc1284175593de65c760406)
This commit is contained in:
Dat PHAM HOANG
2024-01-11 00:54:07 +07:00
committed by Dat H. Pham
parent 4066582414
commit 128b82b74b
@@ -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<SendEmailExceptionThrower>();
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