TF-2189 Update sending state in Sending Queue when send email failure on iOS
Signed-off-by: dab246 <tdvu@linagora.com> (cherry picked from commit 295b19620669f59df872d801a5b5e1a79d5ca520)
This commit is contained in:
@@ -1,10 +1,17 @@
|
||||
|
||||
import 'package:tmail_ui_user/features/composer/domain/model/email_request.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox/domain/model/create_new_mailbox_request.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/model/sending_state.dart';
|
||||
import 'package:tmail_ui_user/features/sending_queue/domain/model/sending_email.dart';
|
||||
|
||||
extension EmailRequestExtension on EmailRequest {
|
||||
SendingEmail toSendingEmail(String sendingId, {CreateNewMailboxRequest? mailboxRequest}) {
|
||||
SendingEmail toSendingEmail(
|
||||
String sendingId,
|
||||
{
|
||||
CreateNewMailboxRequest? mailboxRequest,
|
||||
SendingState newState = SendingState.waiting
|
||||
}
|
||||
) {
|
||||
return SendingEmail(
|
||||
sendingId: sendingId,
|
||||
email: email,
|
||||
@@ -15,7 +22,8 @@ extension EmailRequestExtension on EmailRequest {
|
||||
emailIdAnsweredOrForwarded: emailIdAnsweredOrForwarded,
|
||||
identityId: identityId,
|
||||
mailboxNameRequest: mailboxRequest?.newName,
|
||||
creationIdRequest: mailboxRequest?.creationId
|
||||
creationIdRequest: mailboxRequest?.creationId,
|
||||
sendingState: newState
|
||||
);
|
||||
}
|
||||
}
|
||||
+29
-2
@@ -94,6 +94,7 @@ import 'package:tmail_ui_user/features/network_connection/presentation/network_c
|
||||
if (dart.library.html) 'package:tmail_ui_user/features/network_connection/presentation/web_network_connection_controller.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/config/work_manager_constants.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/controller/work_manager_controller.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/model/sending_state.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/work_manager/one_time_work_request.dart';
|
||||
import 'package:tmail_ui_user/features/offline_mode/work_manager/worker_type.dart';
|
||||
import 'package:tmail_ui_user/features/push_notification/domain/state/get_email_state_to_refresh_state.dart';
|
||||
@@ -375,8 +376,11 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
void handleExceptionAction({Failure? failure, Exception? exception}) {
|
||||
super.handleExceptionAction(failure: failure, exception: exception);
|
||||
if (failure is SendEmailFailure && exception is NoNetworkError) {
|
||||
if (PlatformInfo.isIOS && currentContext != null) {
|
||||
_showToastSendMessageFailure(AppLocalizations.of(currentContext!).sendMessageFailure);
|
||||
if (PlatformInfo.isIOS) {
|
||||
if (currentContext != null) {
|
||||
_showToastSendMessageFailure(AppLocalizations.of(currentContext!).sendMessageFailure);
|
||||
}
|
||||
_updateSendingStateWhenSendEmailFailureOnIOS(failure);
|
||||
} else if (PlatformInfo.isAndroid) {
|
||||
if (failure.emailRequest.storedSendingId != null) {
|
||||
_handleStoreSendingEmail(
|
||||
@@ -1733,6 +1737,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
|
||||
void _handleSendEmailFailure(SendEmailFailure failure) {
|
||||
logError('MailboxDashBoardController::_handleSendEmailFailure():failure: $failure');
|
||||
_updateSendingStateWhenSendEmailFailureOnIOS(failure);
|
||||
if (currentContext == null) {
|
||||
clearState();
|
||||
return;
|
||||
@@ -2129,6 +2134,28 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
}
|
||||
}
|
||||
|
||||
void _updateSendingStateWhenSendEmailFailureOnIOS(SendEmailFailure failure) {
|
||||
log('MailboxDashBoardController::_updateSendingStateWhenSendEmailFailureOnIOS:');
|
||||
if (PlatformInfo.isIOS &&
|
||||
failure.emailRequest.storedSendingId != null &&
|
||||
accountId.value != null &&
|
||||
sessionCurrent != null
|
||||
) {
|
||||
final sendingEmailError = failure.emailRequest.toSendingEmail(
|
||||
failure.emailRequest.storedSendingId!,
|
||||
mailboxRequest: failure.mailboxRequest,
|
||||
newState: SendingState.error
|
||||
);
|
||||
consumeState(
|
||||
_updateSendingEmailInteractor.execute(
|
||||
accountId.value!,
|
||||
sessionCurrent!.username,
|
||||
sendingEmailError
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
_emailReceiveManager.closeEmailReceiveManagerStream();
|
||||
|
||||
Reference in New Issue
Block a user