@@ -16,8 +16,9 @@ import NewsletterSpinner from '@/components/newsletterSpinner';
16
16
import useEmailLists , { Option } from '@/hooks/useEmailLists' ;
17
17
import useNewsletterMeta from '@/hooks/useNewsletterMeta' ;
18
18
19
- import RequiredFields from './components/required-fields' ;
20
19
import EmailTypeSelector from '../../components/emailTypeSelector' ;
20
+ import InvalidTemplate from './components/invalid-template' ;
21
+ import RequiredFields from './components/required-fields' ;
21
22
22
23
interface CoreEditor {
23
24
getEditedPostAttribute : ( attribute : string ) => string ;
@@ -33,7 +34,8 @@ interface Window {
33
34
34
35
function EmailSettings ( ) {
35
36
const [ fetched , setFetched ] = useState ( false ) ;
36
- const { meta, setMeta } = useNewsletterMeta ( ) ;
37
+ const [ invalidTemplate , setInvalidTemplate ] = useState ( false ) ;
38
+ const { meta, resetTemplate, setMeta } = useNewsletterMeta ( ) ;
37
39
const { emailListOptions, selectedEmailList } = useEmailLists ( ) ;
38
40
const manualSubject = meta . subject !== '' ;
39
41
const manualPreview = meta . preview !== '' ;
@@ -76,13 +78,20 @@ function EmailSettings() {
76
78
const blocks = parse ( html ) ;
77
79
const postIndex = blocks . findIndex ( ( block ) => block . name === 'wp-newsletter-builder/post' ) ;
78
80
81
+ if ( postIndex === - 1 ) {
82
+ resetTemplate ( ) ;
83
+ setInvalidTemplate ( true ) ;
84
+ return ;
85
+ }
86
+
79
87
blocks [ postIndex ] = createBlock ( 'wp-newsletter-builder/post' , {
80
88
...blocks [ postIndex ] . attributes ,
81
89
postId,
82
90
} , blocks [ postIndex ] . innerBlocks ) ;
83
91
92
+ setInvalidTemplate ( false ) ;
84
93
setMeta ( { nb_breaking_content : serialize ( blocks ) } ) ;
85
- } , [ postId , setMeta ] ) ;
94
+ } , [ postId , resetTemplate , setMeta ] ) ;
86
95
87
96
const areRequiredFieldsSet = meta . type === ''
88
97
|| meta . template === ''
@@ -120,7 +129,12 @@ function EmailSettings() {
120
129
>
121
130
< EmailTypeSelector
122
131
contentHandler = { contentHandler }
123
- typeHandler = { ( newType ) => { setMeta ( { nb_breaking_email_type : newType } ) ; } }
132
+ typeHandler = {
133
+ ( newType ) => {
134
+ setMeta ( { nb_breaking_email_type : newType } ) ;
135
+ setInvalidTemplate ( false ) ;
136
+ }
137
+ }
124
138
imageHandler = { ( newImage ) => { setMeta ( { nb_breaking_header_img : newImage } ) ; } }
125
139
typeValue = { meta . type }
126
140
templateHandler = { ( newTemplate ) => { setMeta ( { nb_breaking_template : newTemplate } ) ; } }
@@ -181,7 +195,11 @@ function EmailSettings() {
181
195
onChange = { ( value ) => { setMeta ( { nb_breaking_should_send : value } ) ; } }
182
196
disabled = { areRequiredFieldsSet }
183
197
/>
198
+ </ div >
199
+ < div >
200
+ < h2 className = "components-panel__body-title" > { __ ( 'Newsletter Validation' , 'wp-newsletter-builder' ) } </ h2 >
184
201
< RequiredFields meta = { meta } postTitle = { postTitle } postExcerpt = { postExcerpt } />
202
+ < InvalidTemplate invalid = { invalidTemplate } />
185
203
</ div >
186
204
</ PanelBody >
187
205
</ PluginSidebar >
0 commit comments