diff --git a/lib/ui/design/edit/design_edit.dart b/lib/ui/design/edit/design_edit.dart index 411c00c26..def1615dc 100644 --- a/lib/ui/design/edit/design_edit.dart +++ b/lib/ui/design/edit/design_edit.dart @@ -10,6 +10,7 @@ import 'package:flutter/services.dart'; // Package imports: import 'package:built_collection/built_collection.dart'; import 'package:flutter_styled_toast/flutter_styled_toast.dart'; +import 'package:invoiceninja_flutter/utils/dialogs.dart'; import 'package:printing/printing.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -500,6 +501,7 @@ class _DesignSettingsState extends State { builder: (context) => _DesignImportDialog()); final viewModel = widget.viewModel; final design = viewModel.design; + widget.onLoadDesign(design.rebuild((b) => b ..design.replace( BuiltMap(jsonDecode(designStr))))); @@ -750,7 +752,26 @@ class __DesignImportDialogState extends State<_DesignImportDialog> { child: Text(localization.cancel.toUpperCase()), ), TextButton( - onPressed: () => Navigator.of(context).pop(_design), + onPressed: () { + final value = _design.trim(); + try { + final Map map = jsonDecode(value); + for (var field in [ + kDesignBody, + kDesignFooter, + kDesignHeader, + kDesignIncludes + ]) { + if (!map.containsKey(field)) { + throw localization.invalidDesign + .replaceFirst(':value', field); + } + } + Navigator.of(context).pop(value); + } catch (error) { + showErrorDialog(context: context, message: '$error'); + } + }, child: Text(localization.done.toUpperCase()), ), ], diff --git a/lib/utils/i18n.dart b/lib/utils/i18n.dart index 09c73f46c..198171720 100644 --- a/lib/utils/i18n.dart +++ b/lib/utils/i18n.dart @@ -18,6 +18,7 @@ mixin LocalizationsProvider on LocaleCodeAware { // STARTER: lang key - do not remove comment 'import_design': 'Import Design', 'imported_design': 'Successfully imported design', + 'invalid_design': 'The design is invalid, the :value section is missing', 'setup_wizard_logo': 'Would you like to upload your logo?', 'upload': 'Upload', 'installed_version': 'Installed Version', @@ -92969,6 +92970,10 @@ mixin LocalizationsProvider on LocaleCodeAware { _localizedValues[localeCode]['imported_design'] ?? _localizedValues['en']['imported_design']; + String get invalidDesign => + _localizedValues[localeCode]['invalid_design'] ?? + _localizedValues['en']['invalid_design']; + // STARTER: lang field - do not remove comment String lookup(String key) {