Disable outside dismissible confirm dialog in composer
This commit is contained in:
@@ -21,6 +21,7 @@ mixin MessageDialogActionMixin {
|
||||
bool hasCancelButton = true,
|
||||
bool showAsBottomSheet = false,
|
||||
bool alignCenter = false,
|
||||
bool outsideDismissible = true,
|
||||
List<TextSpan>? listTextSpan,
|
||||
Widget? icon,
|
||||
TextStyle? titleStyle,
|
||||
@@ -72,6 +73,7 @@ mixin MessageDialogActionMixin {
|
||||
).build()
|
||||
),
|
||||
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
||||
barrierDismissible: outsideDismissible
|
||||
);
|
||||
} else {
|
||||
if (responsiveUtils.isMobile(context)) {
|
||||
@@ -120,6 +122,7 @@ mixin MessageDialogActionMixin {
|
||||
isScrollControlled: true,
|
||||
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
||||
backgroundColor: Colors.transparent,
|
||||
isDismissible: outsideDismissible,
|
||||
enableDrag: true,
|
||||
ignoreSafeArea: false,
|
||||
shape: const RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(18))),
|
||||
@@ -178,6 +181,7 @@ mixin MessageDialogActionMixin {
|
||||
.build()
|
||||
),
|
||||
barrierColor: AppColor.colorDefaultCupertinoActionSheet,
|
||||
barrierDismissible: outsideDismissible
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1178,7 +1178,7 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
||||
resultState is GenerateEmailFailure) &&
|
||||
context.mounted
|
||||
) {
|
||||
_showConfirmDialogWhenSaveMessageToDraftsFailure(
|
||||
await _showConfirmDialogWhenSaveMessageToDraftsFailure(
|
||||
context: context,
|
||||
failure: resultState,
|
||||
onConfirmAction: () {
|
||||
@@ -1875,8 +1875,9 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
||||
|
||||
_closeComposerButtonState = ButtonState.disabled;
|
||||
|
||||
if (composerArguments.value == null) {
|
||||
log('ComposerController::handleClickCloseComposer: ARGUMENTS is NULL');
|
||||
if (composerArguments.value == null || !_isEmailBodyLoaded) {
|
||||
log('ComposerController::handleClickCloseComposer: ARGUMENTS is NULL or EMAIL NOT LOADED');
|
||||
_closeComposerButtonState = ButtonState.enabled;
|
||||
clearFocus(context);
|
||||
_closeComposerAction();
|
||||
return;
|
||||
@@ -1891,15 +1892,7 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
||||
|
||||
if (isChanged && context.mounted) {
|
||||
clearFocus(context);
|
||||
_showConfirmDialogSaveMessage(context);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!_isEmailBodyLoaded && context.mounted) {
|
||||
log('ComposerController::handleClickCloseComposer: EDITOR NOT LOADED');
|
||||
_closeComposerButtonState = ButtonState.enabled;
|
||||
clearFocus(context);
|
||||
_closeComposerAction();
|
||||
await _showConfirmDialogSaveMessage(context);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1910,14 +1903,15 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
||||
}
|
||||
}
|
||||
|
||||
void _showConfirmDialogSaveMessage(BuildContext context) {
|
||||
showConfirmDialogAction(
|
||||
Future<void> _showConfirmDialogSaveMessage(BuildContext context) async {
|
||||
await showConfirmDialogAction(
|
||||
context,
|
||||
title: AppLocalizations.of(context).saveMessage.capitalizeFirstEach,
|
||||
AppLocalizations.of(context).warningMessageWhenClickCloseComposer,
|
||||
AppLocalizations.of(context).save,
|
||||
cancelTitle: AppLocalizations.of(context).discardChanges,
|
||||
alignCenter: true,
|
||||
outsideDismissible: false,
|
||||
onConfirmAction: () async => await Future.delayed(
|
||||
const Duration(milliseconds: 100),
|
||||
() => _handleSaveMessageToDraft(context)
|
||||
@@ -2038,7 +2032,7 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
||||
resultState is GenerateEmailFailure) &&
|
||||
context.mounted
|
||||
) {
|
||||
_showConfirmDialogWhenSaveMessageToDraftsFailure(
|
||||
await _showConfirmDialogWhenSaveMessageToDraftsFailure(
|
||||
context: context,
|
||||
failure: resultState
|
||||
);
|
||||
@@ -2106,19 +2100,20 @@ class ComposerController extends BaseController with DragDropFileMixin {
|
||||
cancelToken?.cancel([SavingEmailToDraftsCanceledException()]);
|
||||
}
|
||||
|
||||
void _showConfirmDialogWhenSaveMessageToDraftsFailure({
|
||||
Future<void> _showConfirmDialogWhenSaveMessageToDraftsFailure({
|
||||
required BuildContext context,
|
||||
required FeatureFailure failure,
|
||||
VoidCallback? onConfirmAction,
|
||||
VoidCallback? onCancelAction,
|
||||
}) {
|
||||
showConfirmDialogAction(
|
||||
}) async {
|
||||
await showConfirmDialogAction(
|
||||
context,
|
||||
title: '',
|
||||
AppLocalizations.of(context).warningMessageWhenSaveEmailToDraftsFailure,
|
||||
AppLocalizations.of(context).edit,
|
||||
cancelTitle: AppLocalizations.of(context).closeAnyway,
|
||||
alignCenter: true,
|
||||
outsideDismissible: false,
|
||||
onConfirmAction: onConfirmAction ?? () {
|
||||
_closeComposerButtonState = ButtonState.enabled;
|
||||
_autoFocusFieldWhenLauncher();
|
||||
|
||||
Reference in New Issue
Block a user