TF-657 Show notification message dialog when email has read receipt requested
This commit is contained in:
@@ -15,18 +15,58 @@ mixin MessageDialogActionMixin {
|
||||
BuildContext context,
|
||||
String message,
|
||||
String actionName,
|
||||
Function onConfirmAction,
|
||||
{String? title, bool hasCancelButton = true, Widget? icon}
|
||||
{
|
||||
Function? onConfirmAction,
|
||||
String? title,
|
||||
String? cancelTitle,
|
||||
bool hasCancelButton = true,
|
||||
bool showAsBottomSheet = false,
|
||||
Widget? icon
|
||||
}
|
||||
) {
|
||||
if (_responsiveUtils.isMobile(context)) {
|
||||
(ConfirmationDialogActionSheetBuilder(context)
|
||||
..messageText(message)
|
||||
..styleConfirmButton(const TextStyle(fontSize: 20, fontWeight: FontWeight.normal, color: Colors.black))
|
||||
..onCancelAction(AppLocalizations.of(context).cancel, () => popBack())
|
||||
..onConfirmAction(actionName, () {
|
||||
popBack();
|
||||
onConfirmAction.call();
|
||||
})).show();
|
||||
if (showAsBottomSheet) {
|
||||
showModalBottomSheet(
|
||||
context: context,
|
||||
isScrollControlled: true,
|
||||
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
||||
backgroundColor: Colors.transparent,
|
||||
enableDrag: true,
|
||||
builder: (BuildContext context) => PointerInterceptor(
|
||||
child: (ConfirmDialogBuilder(_imagePaths, showAsBottomSheet: true)
|
||||
..key(const Key('confirm_dialog_action'))
|
||||
..title(title ?? '')
|
||||
..content(message)
|
||||
..addIcon(icon)
|
||||
..margin(const EdgeInsets.symmetric(vertical: 42, horizontal: 16))
|
||||
..widthDialog(_responsiveUtils.getSizeScreenWidth(context))
|
||||
..colorConfirmButton(AppColor.colorTextButton)
|
||||
..colorCancelButton(AppColor.colorCancelButton)
|
||||
..paddingTitle(icon != null ? const EdgeInsets.only(top: 34) : EdgeInsets.zero)
|
||||
..marginIcon(EdgeInsets.zero)
|
||||
..paddingContent(const EdgeInsets.only(left: 44, right: 44, bottom: 24, top: 8))
|
||||
..paddingButton(hasCancelButton ? null : const EdgeInsets.only(bottom: 16, left: 44, right: 44))
|
||||
..styleTitle(const TextStyle(fontSize: 20, fontWeight: FontWeight.bold, color: Colors.black))
|
||||
..styleContent(const TextStyle(fontSize: 14, fontWeight: FontWeight.normal, color: AppColor.colorContentEmail))
|
||||
..styleTextCancelButton(const TextStyle(fontSize: 17, fontWeight: FontWeight.w500, color: AppColor.colorTextButton))
|
||||
..styleTextConfirmButton(const TextStyle(fontSize: 17, fontWeight: FontWeight.w500, color: Colors.white))
|
||||
..onConfirmButtonAction(actionName, () {
|
||||
popBack();
|
||||
onConfirmAction?.call();
|
||||
})
|
||||
..onCancelButtonAction(hasCancelButton ? cancelTitle ?? AppLocalizations.of(context).cancel : '', () => popBack())
|
||||
..onCloseButtonAction(() => popBack()))
|
||||
.build()));
|
||||
} else {
|
||||
(ConfirmationDialogActionSheetBuilder(context)
|
||||
..messageText(message)
|
||||
..styleConfirmButton(const TextStyle(fontSize: 20, fontWeight: FontWeight.normal, color: Colors.black))
|
||||
..onCancelAction(cancelTitle ?? AppLocalizations.of(context).cancel, () => popBack())
|
||||
..onConfirmAction(actionName, () {
|
||||
popBack();
|
||||
onConfirmAction?.call();
|
||||
})).show();
|
||||
}
|
||||
} else {
|
||||
showDialog(
|
||||
context: context,
|
||||
@@ -48,9 +88,9 @@ mixin MessageDialogActionMixin {
|
||||
..styleTextConfirmButton(const TextStyle(fontSize: 17, fontWeight: FontWeight.w500, color: Colors.white))
|
||||
..onConfirmButtonAction(actionName, () {
|
||||
popBack();
|
||||
onConfirmAction.call();
|
||||
onConfirmAction?.call();
|
||||
})
|
||||
..onCancelButtonAction(hasCancelButton ? AppLocalizations.of(context).cancel : '', () => popBack())
|
||||
..onCancelButtonAction(hasCancelButton ? cancelTitle ?? AppLocalizations.of(context).cancel : '', () => popBack())
|
||||
..onCloseButtonAction(() => popBack()))
|
||||
.build()));
|
||||
}
|
||||
|
||||
@@ -637,7 +637,7 @@ class ComposerController extends BaseController {
|
||||
showConfirmDialogAction(context,
|
||||
AppLocalizations.of(context).message_dialog_send_email_without_recipient,
|
||||
AppLocalizations.of(context).add_recipients,
|
||||
() => {},
|
||||
onConfirmAction: () => {},
|
||||
title: AppLocalizations.of(context).sending_failed,
|
||||
icon: SvgPicture.asset(_imagePaths.icSendToastError, fit: BoxFit.fill),
|
||||
hasCancelButton: false);
|
||||
@@ -652,7 +652,7 @@ class ComposerController extends BaseController {
|
||||
showConfirmDialogAction(context,
|
||||
AppLocalizations.of(context).message_dialog_send_email_with_email_address_invalid,
|
||||
AppLocalizations.of(context).fix_email_addresses,
|
||||
() {
|
||||
onConfirmAction: () {
|
||||
toAddressExpandMode.value = ExpandMode.EXPAND;
|
||||
ccAddressExpandMode.value = ExpandMode.EXPAND;
|
||||
bccAddressExpandMode.value = ExpandMode.EXPAND;
|
||||
@@ -667,7 +667,7 @@ class ComposerController extends BaseController {
|
||||
showConfirmDialogAction(context,
|
||||
AppLocalizations.of(context).message_dialog_send_email_without_a_subject,
|
||||
AppLocalizations.of(context).send_anyway,
|
||||
() => _handleSendMessages(context),
|
||||
onConfirmAction: () => _handleSendMessages(context),
|
||||
title: AppLocalizations.of(context).empty_subject,
|
||||
icon: SvgPicture.asset(_imagePaths.icEmpty, fit: BoxFit.fill),
|
||||
);
|
||||
@@ -679,7 +679,7 @@ class ComposerController extends BaseController {
|
||||
context,
|
||||
AppLocalizations.of(context).messageDialogSendEmailUploadingAttachment,
|
||||
AppLocalizations.of(context).got_it,
|
||||
() => {},
|
||||
onConfirmAction: () => {},
|
||||
title: AppLocalizations.of(context).sending_failed,
|
||||
icon: SvgPicture.asset(_imagePaths.icSendToastError, fit: BoxFit.fill),
|
||||
hasCancelButton: false);
|
||||
@@ -692,7 +692,7 @@ class ComposerController extends BaseController {
|
||||
AppLocalizations.of(context).message_dialog_send_email_exceeds_maximum_size(
|
||||
filesize(mailboxDashBoardController.maxSizeAttachmentsPerEmail?.value ?? 0, 0)),
|
||||
AppLocalizations.of(context).got_it,
|
||||
() => {},
|
||||
onConfirmAction: () => {},
|
||||
title: AppLocalizations.of(context).sending_failed,
|
||||
icon: SvgPicture.asset(_imagePaths.icSendToastError, fit: BoxFit.fill),
|
||||
hasCancelButton: false);
|
||||
@@ -707,7 +707,6 @@ class ComposerController extends BaseController {
|
||||
final accountId = mailboxDashBoardController.accountId.value;
|
||||
final sentMailboxId = mailboxDashBoardController.mapDefaultMailboxIdByRole[PresentationMailbox.roleSent];
|
||||
final outboxMailboxId = mailboxDashBoardController.outboxMailbox?.id;
|
||||
log('ComposerController::_handleSendMessages(): outboxMailboxId: $outboxMailboxId');
|
||||
final userProfile = mailboxDashBoardController.userProfile.value;
|
||||
if (arguments != null && accountId != null && userProfile != null) {
|
||||
final email = await _generateEmail(context, userProfile, outboxMailboxId: outboxMailboxId);
|
||||
@@ -842,7 +841,7 @@ class ComposerController extends BaseController {
|
||||
AppLocalizations.of(currentContext!).message_dialog_upload_attachments_exceeds_maximum_size(
|
||||
filesize(mailboxDashBoardController.maxSizeAttachmentsPerEmail?.value ?? 0, 0)),
|
||||
AppLocalizations.of(currentContext!).got_it,
|
||||
() => {},
|
||||
onConfirmAction: () => {},
|
||||
title: AppLocalizations.of(currentContext!).maximum_files_size,
|
||||
hasCancelButton: false);
|
||||
}
|
||||
@@ -1027,7 +1026,7 @@ class ComposerController extends BaseController {
|
||||
AppLocalizations.of(currentContext!).message_dialog_upload_attachments_exceeds_maximum_size(
|
||||
filesize(mailboxDashBoardController.maxSizeAttachmentsPerEmail?.value ?? 0, 0)),
|
||||
AppLocalizations.of(currentContext!).got_it,
|
||||
() => {},
|
||||
onConfirmAction: () => {},
|
||||
title: AppLocalizations.of(currentContext!).maximum_files_size,
|
||||
hasCancelButton: false,
|
||||
);
|
||||
@@ -1038,7 +1037,7 @@ class ComposerController extends BaseController {
|
||||
|
||||
if(arguments.emailContents != null && arguments.emailContents!.isNotEmpty) {
|
||||
_emailContents = arguments.emailContents;
|
||||
emailContentsViewState.value = Right(GetEmailContentSuccess(_emailContents!,[],[]));
|
||||
emailContentsViewState.value = Right(GetEmailContentSuccess(_emailContents!, [], [], false));
|
||||
} else {
|
||||
final baseDownloadUrl = mailboxDashBoardController.sessionCurrent?.getDownloadUrl();
|
||||
final accountId = mailboxDashBoardController.sessionCurrent?.accounts.keys.first;
|
||||
@@ -1339,7 +1338,7 @@ class ComposerController extends BaseController {
|
||||
AppLocalizations.of(currentContext!).message_dialog_upload_attachments_exceeds_maximum_size(
|
||||
filesize(mailboxDashBoardController.maxSizeAttachmentsPerEmail?.value ?? 0, 0)),
|
||||
AppLocalizations.of(currentContext!).got_it,
|
||||
() => {},
|
||||
onConfirmAction: () => {},
|
||||
title: AppLocalizations.of(currentContext!).maximum_files_size,
|
||||
hasCancelButton: false);
|
||||
}
|
||||
|
||||
@@ -215,6 +215,24 @@ class EmailController extends BaseController with AppLoaderMixin {
|
||||
emailContents.value = success.emailContentsDisplayed;
|
||||
initialEmailContents = success.emailContents;
|
||||
attachments.value = success.attachments;
|
||||
|
||||
if (success.readReceiptRequested) {
|
||||
_handleReadReceipt();
|
||||
}
|
||||
}
|
||||
|
||||
void _handleReadReceipt() {
|
||||
if (currentContext != null) {
|
||||
showConfirmDialogAction(currentContext!,
|
||||
AppLocalizations.of(currentContext!).subTitleReadReceiptRequestNotificationMessage,
|
||||
AppLocalizations.of(currentContext!).yes,
|
||||
onConfirmAction: () => {},
|
||||
showAsBottomSheet: true,
|
||||
title: AppLocalizations.of(currentContext!).titleReadReceiptRequestNotificationMessage,
|
||||
cancelTitle: AppLocalizations.of(currentContext!).no,
|
||||
icon: SvgPicture.asset(imagePaths.icReadReceiptMessage, fit: BoxFit.fill),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void _resetToOriginalValue() {
|
||||
|
||||
Reference in New Issue
Block a user