TF-2667 Store email to sending queue when sending with no connection on mobile
This commit is contained in:
@@ -807,7 +807,7 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
|||||||
cancelToken: cancelToken
|
cancelToken: cancelToken
|
||||||
);
|
);
|
||||||
log('ComposerController::_handleSendMessages: resultState = $resultState');
|
log('ComposerController::_handleSendMessages: resultState = $resultState');
|
||||||
if (resultState is SendEmailSuccess) {
|
if (resultState is SendEmailSuccess || mailboxDashBoardController.validateSendingEmailFailedWhenNetworkIsLostOnMobile(resultState)) {
|
||||||
_sendButtonState = ButtonState.enabled;
|
_sendButtonState = ButtonState.enabled;
|
||||||
_closeComposerAction(result: resultState);
|
_closeComposerAction(result: resultState);
|
||||||
} else if (resultState is SendEmailFailure && resultState.exception is SendingEmailCanceledException) {
|
} else if (resultState is SendEmailFailure && resultState.exception is SendingEmailCanceledException) {
|
||||||
|
|||||||
+18
-4
@@ -392,7 +392,10 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
@override
|
@override
|
||||||
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 &&
|
||||||
|
PlatformInfo.isMobile
|
||||||
|
) {
|
||||||
log('MailboxDashBoardController::handleExceptionAction(): $failure');
|
log('MailboxDashBoardController::handleExceptionAction(): $failure');
|
||||||
_storeSendingEmailInCaseOfSendingFailureInMobile(failure);
|
_storeSendingEmailInCaseOfSendingFailureInMobile(failure);
|
||||||
}
|
}
|
||||||
@@ -1261,6 +1264,8 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
result is SaveEmailAsDraftsSuccess ||
|
result is SaveEmailAsDraftsSuccess ||
|
||||||
result is UpdateEmailDraftsSuccess) {
|
result is UpdateEmailDraftsSuccess) {
|
||||||
consumeState(Stream.value(Right<Failure, Success>(result)));
|
consumeState(Stream.value(Right<Failure, Success>(result)));
|
||||||
|
} else if (validateSendingEmailFailedWhenNetworkIsLostOnMobile(result)) {
|
||||||
|
_storeSendingEmailInCaseOfSendingFailureInMobile(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
await _removeComposerCacheOnWeb();
|
await _removeComposerCacheOnWeb();
|
||||||
@@ -1403,6 +1408,8 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
result is SaveEmailAsDraftsSuccess ||
|
result is SaveEmailAsDraftsSuccess ||
|
||||||
result is UpdateEmailDraftsSuccess) {
|
result is UpdateEmailDraftsSuccess) {
|
||||||
consumeState(Stream.value(Right<Failure, Success>(result)));
|
consumeState(Stream.value(Right<Failure, Success>(result)));
|
||||||
|
} else if (validateSendingEmailFailedWhenNetworkIsLostOnMobile(result)) {
|
||||||
|
_storeSendingEmailInCaseOfSendingFailureInMobile(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
await _removeComposerCacheOnWeb();
|
await _removeComposerCacheOnWeb();
|
||||||
@@ -1813,7 +1820,9 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
|
|
||||||
void _handleSendEmailFailure(SendEmailFailure failure) {
|
void _handleSendEmailFailure(SendEmailFailure failure) {
|
||||||
logError('MailboxDashBoardController::_handleSendEmailFailure():failure: $failure');
|
logError('MailboxDashBoardController::_handleSendEmailFailure():failure: $failure');
|
||||||
_storeSendingEmailInCaseOfSendingFailureInMobile(failure);
|
if (PlatformInfo.isMobile) {
|
||||||
|
_storeSendingEmailInCaseOfSendingFailureInMobile(failure);
|
||||||
|
}
|
||||||
if (currentContext == null) {
|
if (currentContext == null) {
|
||||||
clearState();
|
clearState();
|
||||||
return;
|
return;
|
||||||
@@ -1943,8 +1952,7 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _storeSendingEmailInCaseOfSendingFailureInMobile(SendEmailFailure failure) {
|
void _storeSendingEmailInCaseOfSendingFailureInMobile(SendEmailFailure failure) {
|
||||||
if (PlatformInfo.isMobile &&
|
if (failure.session != null &&
|
||||||
failure.session != null &&
|
|
||||||
failure.accountId != null &&
|
failure.accountId != null &&
|
||||||
failure.emailRequest != null
|
failure.emailRequest != null
|
||||||
) {
|
) {
|
||||||
@@ -2475,6 +2483,12 @@ class MailboxDashBoardController extends ReloadableController {
|
|||||||
await _removeComposerCacheOnWebInteractor.execute();
|
await _removeComposerCacheOnWebInteractor.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool validateSendingEmailFailedWhenNetworkIsLostOnMobile(FeatureFailure failure) {
|
||||||
|
return failure is SendEmailFailure &&
|
||||||
|
failure.exception is NoNetworkError &&
|
||||||
|
PlatformInfo.isMobile;
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
_emailReceiveManager.closeEmailReceiveManagerStream();
|
_emailReceiveManager.closeEmailReceiveManagerStream();
|
||||||
|
|||||||
Reference in New Issue
Block a user