TF-2667 Prevent close sending/saving dialog when click system back on mobile

This commit is contained in:
dab246
2024-03-22 11:20:53 +07:00
committed by Dat H. Pham
parent a16e4ff485
commit 5d502736d8
2 changed files with 74 additions and 60 deletions
@@ -826,39 +826,44 @@ class ComposerController extends BaseController with DragDropFileMixin {
required String emailContent, required String emailContent,
CancelToken? cancelToken CancelToken? cancelToken
}) { }) {
return Get.dialog( final childWidget = PointerInterceptor(
PointerInterceptor( child: SendingMessageDialogView(
child: SendingMessageDialogView( createEmailRequest: CreateEmailRequest(
createEmailRequest: CreateEmailRequest( session: mailboxDashBoardController.sessionCurrent!,
session: mailboxDashBoardController.sessionCurrent!, accountId: mailboxDashBoardController.accountId.value!,
accountId: mailboxDashBoardController.accountId.value!, emailActionType: composerArguments.value!.emailActionType,
emailActionType: composerArguments.value!.emailActionType, subject: subjectEmail.value ?? '',
subject: subjectEmail.value ?? '', emailContent: emailContent,
emailContent: emailContent, fromSender: composerArguments.value!.presentationEmail?.from ?? {},
fromSender: composerArguments.value!.presentationEmail?.from ?? {}, toRecipients: listToEmailAddress.toSet(),
toRecipients: listToEmailAddress.toSet(), ccRecipients: listCcEmailAddress.toSet(),
ccRecipients: listCcEmailAddress.toSet(), bccRecipients: listBccEmailAddress.toSet(),
bccRecipients: listBccEmailAddress.toSet(), isRequestReadReceipt: hasRequestReadReceipt.value,
isRequestReadReceipt: hasRequestReadReceipt.value, identity: identitySelected.value,
identity: identitySelected.value, attachments: uploadController.attachmentsUploaded,
attachments: uploadController.attachmentsUploaded, inlineAttachments: uploadController.mapInlineAttachments,
inlineAttachments: uploadController.mapInlineAttachments, outboxMailboxId: mailboxDashBoardController.outboxMailbox?.mailboxId,
outboxMailboxId: mailboxDashBoardController.outboxMailbox?.mailboxId, sentMailboxId: mailboxDashBoardController.mapDefaultMailboxIdByRole[PresentationMailbox.roleSent],
sentMailboxId: mailboxDashBoardController.mapDefaultMailboxIdByRole[PresentationMailbox.roleSent], draftsEmailId: composerArguments.value!.emailActionType == EmailActionType.editDraft
draftsEmailId: composerArguments.value!.emailActionType == EmailActionType.editDraft ? composerArguments.value!.presentationEmail?.id
? composerArguments.value!.presentationEmail?.id : null,
: null, answerForwardEmailId: composerArguments.value!.presentationEmail?.id,
answerForwardEmailId: composerArguments.value!.presentationEmail?.id, unsubscribeEmailId: composerArguments.value!.previousEmailId,
unsubscribeEmailId: composerArguments.value!.previousEmailId, messageId: composerArguments.value!.messageId,
messageId: composerArguments.value!.messageId, references: composerArguments.value!.references,
references: composerArguments.value!.references, emailSendingQueue: composerArguments.value!.sendingEmail
emailSendingQueue: composerArguments.value!.sendingEmail
),
createNewAndSendEmailInteractor: _createNewAndSendEmailInteractor,
onCancelSendingEmailAction: _handleCancelSendingMessage,
cancelToken: cancelToken,
), ),
createNewAndSendEmailInteractor: _createNewAndSendEmailInteractor,
onCancelSendingEmailAction: _handleCancelSendingMessage,
cancelToken: cancelToken,
), ),
);
return Get.dialog(
PlatformInfo.isMobile
? PopScope(canPop: false, child: childWidget)
: childWidget,
barrierDismissible: false,
barrierColor: AppColor.colorDefaultCupertinoActionSheet, barrierColor: AppColor.colorDefaultCupertinoActionSheet,
); );
} }
@@ -2035,37 +2040,41 @@ class ComposerController extends BaseController with DragDropFileMixin {
EmailId? draftEmailId, EmailId? draftEmailId,
CancelToken? cancelToken, CancelToken? cancelToken,
}) { }) {
return Get.dialog( final childWidget = PointerInterceptor(
PointerInterceptor( child: SavingMessageDialogView(
child: SavingMessageDialogView( createEmailRequest: CreateEmailRequest(
createEmailRequest: CreateEmailRequest( session: mailboxDashBoardController.sessionCurrent!,
session: mailboxDashBoardController.sessionCurrent!, accountId: mailboxDashBoardController.accountId.value!,
accountId: mailboxDashBoardController.accountId.value!, emailActionType: composerArguments.value!.emailActionType,
emailActionType: composerArguments.value!.emailActionType, subject: subjectEmail.value ?? '',
subject: subjectEmail.value ?? '', emailContent: emailContent,
emailContent: emailContent, fromSender: composerArguments.value!.presentationEmail?.from ?? {},
fromSender: composerArguments.value!.presentationEmail?.from ?? {}, toRecipients: listToEmailAddress.toSet(),
toRecipients: listToEmailAddress.toSet(), ccRecipients: listCcEmailAddress.toSet(),
ccRecipients: listCcEmailAddress.toSet(), bccRecipients: listBccEmailAddress.toSet(),
bccRecipients: listBccEmailAddress.toSet(), isRequestReadReceipt: hasRequestReadReceipt.value,
isRequestReadReceipt: hasRequestReadReceipt.value, identity: identitySelected.value,
identity: identitySelected.value, attachments: uploadController.attachmentsUploaded,
attachments: uploadController.attachmentsUploaded, inlineAttachments: uploadController.mapInlineAttachments,
inlineAttachments: uploadController.mapInlineAttachments, sentMailboxId: mailboxDashBoardController.mapDefaultMailboxIdByRole[PresentationMailbox.roleSent],
sentMailboxId: mailboxDashBoardController.mapDefaultMailboxIdByRole[PresentationMailbox.roleSent], draftsMailboxId: mailboxDashBoardController.mapDefaultMailboxIdByRole[PresentationMailbox.roleDrafts],
draftsMailboxId: mailboxDashBoardController.mapDefaultMailboxIdByRole[PresentationMailbox.roleDrafts], draftsEmailId: draftEmailId,
draftsEmailId: draftEmailId, answerForwardEmailId: composerArguments.value!.presentationEmail?.id,
answerForwardEmailId: composerArguments.value!.presentationEmail?.id, unsubscribeEmailId: composerArguments.value!.previousEmailId,
unsubscribeEmailId: composerArguments.value!.previousEmailId, messageId: composerArguments.value!.messageId,
messageId: composerArguments.value!.messageId, references: composerArguments.value!.references,
references: composerArguments.value!.references, emailSendingQueue: composerArguments.value!.sendingEmail
emailSendingQueue: composerArguments.value!.sendingEmail
),
createNewAndSaveEmailToDraftsInteractor: _createNewAndSaveEmailToDraftsInteractor,
onCancelSavingEmailToDraftsAction: _handleCancelSavingMessageToDrafts,
cancelToken: cancelToken,
), ),
createNewAndSaveEmailToDraftsInteractor: _createNewAndSaveEmailToDraftsInteractor,
onCancelSavingEmailToDraftsAction: _handleCancelSavingMessageToDrafts,
cancelToken: cancelToken,
), ),
);
return Get.dialog(
PlatformInfo.isMobile
? PopScope(canPop: false, child: childWidget)
: childWidget,
barrierDismissible: false,
barrierColor: AppColor.colorDefaultCupertinoActionSheet, barrierColor: AppColor.colorDefaultCupertinoActionSheet,
); );
} }
@@ -1391,7 +1391,12 @@ class MailboxDashBoardController extends ReloadableController {
openComposerOverlay(arguments); openComposerOverlay(arguments);
} }
} else { } else {
BackButtonInterceptor.removeByName(AppRoutes.dashboard);
final result = await push(AppRoutes.composer, arguments: arguments); final result = await push(AppRoutes.composer, arguments: arguments);
BackButtonInterceptor.add(_onBackButtonInterceptor, name: AppRoutes.dashboard);
if (result is SendingEmailArguments) { if (result is SendingEmailArguments) {
handleSendEmailAction(result); handleSendEmailAction(result);
} else if (result is SendEmailSuccess || } else if (result is SendEmailSuccess ||