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/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/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';
|
import 'package:tmail_ui_user/features/sending_queue/domain/model/sending_email.dart';
|
||||||
|
|
||||||
extension EmailRequestExtension on EmailRequest {
|
extension EmailRequestExtension on EmailRequest {
|
||||||
SendingEmail toSendingEmail(String sendingId, {CreateNewMailboxRequest? mailboxRequest}) {
|
SendingEmail toSendingEmail(
|
||||||
|
String sendingId,
|
||||||
|
{
|
||||||
|
CreateNewMailboxRequest? mailboxRequest,
|
||||||
|
SendingState newState = SendingState.waiting
|
||||||
|
}
|
||||||
|
) {
|
||||||
return SendingEmail(
|
return SendingEmail(
|
||||||
sendingId: sendingId,
|
sendingId: sendingId,
|
||||||
email: email,
|
email: email,
|
||||||
@@ -15,7 +22,8 @@ extension EmailRequestExtension on EmailRequest {
|
|||||||
emailIdAnsweredOrForwarded: emailIdAnsweredOrForwarded,
|
emailIdAnsweredOrForwarded: emailIdAnsweredOrForwarded,
|
||||||
identityId: identityId,
|
identityId: identityId,
|
||||||
mailboxNameRequest: mailboxRequest?.newName,
|
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';
|
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/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/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/one_time_work_request.dart';
|
||||||
import 'package:tmail_ui_user/features/offline_mode/work_manager/worker_type.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';
|
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}) {
|
void handleExceptionAction({Failure? failure, Exception? exception}) {
|
||||||
super.handleExceptionAction(failure: failure, exception: exception);
|
super.handleExceptionAction(failure: failure, exception: exception);
|
||||||
if (failure is SendEmailFailure && exception is NoNetworkError) {
|
if (failure is SendEmailFailure && exception is NoNetworkError) {
|
||||||
if (PlatformInfo.isIOS && currentContext != null) {
|
if (PlatformInfo.isIOS) {
|
||||||
_showToastSendMessageFailure(AppLocalizations.of(currentContext!).sendMessageFailure);
|
if (currentContext != null) {
|
||||||
|
_showToastSendMessageFailure(AppLocalizations.of(currentContext!).sendMessageFailure);
|
||||||
|
}
|
||||||
|
_updateSendingStateWhenSendEmailFailureOnIOS(failure);
|
||||||
} else if (PlatformInfo.isAndroid) {
|
} else if (PlatformInfo.isAndroid) {
|
||||||
if (failure.emailRequest.storedSendingId != null) {
|
if (failure.emailRequest.storedSendingId != null) {
|
||||||
_handleStoreSendingEmail(
|
_handleStoreSendingEmail(
|
||||||
@@ -1733,6 +1737,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
|
|
||||||
void _handleSendEmailFailure(SendEmailFailure failure) {
|
void _handleSendEmailFailure(SendEmailFailure failure) {
|
||||||
logError('MailboxDashBoardController::_handleSendEmailFailure():failure: $failure');
|
logError('MailboxDashBoardController::_handleSendEmailFailure():failure: $failure');
|
||||||
|
_updateSendingStateWhenSendEmailFailureOnIOS(failure);
|
||||||
if (currentContext == null) {
|
if (currentContext == null) {
|
||||||
clearState();
|
clearState();
|
||||||
return;
|
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
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
_emailReceiveManager.closeEmailReceiveManagerStream();
|
_emailReceiveManager.closeEmailReceiveManagerStream();
|
||||||
|
|||||||
Reference in New Issue
Block a user