diff --git a/lib/ui/app/invoice/invoice_email_view.dart b/lib/ui/app/invoice/invoice_email_view.dart index e3c372c04..ae5643f54 100644 --- a/lib/ui/app/invoice/invoice_email_view.dart +++ b/lib/ui/app/invoice/invoice_email_view.dart @@ -148,12 +148,15 @@ class _InvoiceEmailViewState extends State _subjectPreview = subject.trim(); _bodyPreview = body.trim(); _emailPreview = email.trim(); - _rawBodyPreview = rawBody.trim(); - final company = widget.viewModel.state.company; - if (company.markdownEmailEnabled && - _rawBodyPreview.startsWith('

')) { - _rawBodyPreview = html2md.convert(_rawBodyPreview); + if (_rawBodyPreview.isEmpty) { + _rawBodyPreview = rawBody.trim(); + + final company = widget.viewModel.state.company; + if (company.markdownEmailEnabled && + _rawBodyPreview.startsWith('

')) { + _rawBodyPreview = html2md.convert(_rawBodyPreview); + } } if (origSubject.isEmpty && origBody.isEmpty) { @@ -197,6 +200,7 @@ class _InvoiceEmailViewState extends State setState(() { _subjectController.text = ''; _bodyController.text = ''; + _rawBodyPreview = ''; selectedTemplate = template; _loadTemplate(); }); @@ -258,7 +262,7 @@ class _InvoiceEmailViewState extends State body: _emailPreview, ) else - AbsorbPointer( + IgnorePointer( child: ExampleEditor( value: html2md.convert(_bodyPreview), ), @@ -297,7 +301,7 @@ class _InvoiceEmailViewState extends State ? Colors.white : null, child: Padding( - padding: const EdgeInsets.only(left: 24, right: 10), + padding: const EdgeInsets.only(left: 24, right: 10, bottom: 16), child: DecoratedFormField( controller: _subjectController, label: localization.subject, diff --git a/lib/utils/super_editor/super_editor.dart b/lib/utils/super_editor/super_editor.dart index 6db83d585..11c87f719 100644 --- a/lib/utils/super_editor/super_editor.dart +++ b/lib/utils/super_editor/super_editor.dart @@ -63,16 +63,20 @@ class _ExampleEditorState extends State { super.didUpdateWidget(oldWidget); if (widget.value != oldWidget.value) { - _doc.removeListener(_hideOrShowToolbar); - _doc.removeListener(_onChanged); - _doc = deserializeMarkdownToDocument(widget.value) - ..addListener(_hideOrShowToolbar) - ..addListener(_onChanged); - _docEditor = DocumentEditor(document: _doc as MutableDocument); - _editorFocusNode = FocusNode(); + _setValue(widget.value); } } + void _setValue(String value) { + _doc.removeListener(_hideOrShowToolbar); + _doc.removeListener(_onChanged); + _doc = deserializeMarkdownToDocument(value) + ..addListener(_hideOrShowToolbar) + ..addListener(_onChanged); + _docEditor = DocumentEditor(document: _doc as MutableDocument); + _editorFocusNode = FocusNode(); + } + @override void dispose() { if (_textFormatBarOverlayEntry != null) { @@ -91,8 +95,10 @@ class _ExampleEditorState extends State { } void _onChanged() { - final value = serializeDocumentToMarkdown(_docEditor.document); - widget.onChanged(value); + if (widget.onChanged != null) { + final value = serializeDocumentToMarkdown(_docEditor.document); + widget.onChanged(value); + } } void _hideOrShowToolbar() {