diff --git a/README.md b/README.md
index 9781189b..7c18f4ca 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@ Contributors: alleyinteractive
Tags: alleyinteractive, wp-newsletter-builder
-Stable tag: 0.3.27
+Stable tag: 0.3.28
Requires at least: 6.2
diff --git a/plugin.php b/plugin.php
index acdcf35b..7099b8c8 100644
--- a/plugin.php
+++ b/plugin.php
@@ -3,7 +3,7 @@
* Plugin Name: Newsletter Builder
* Plugin URI: https://github.com/alleyinteractive/wp-newsletter-builder
* Description: Interface to manage email newsletters
- * Version: 0.3.27
+ * Version: 0.3.28
* Author: Alley Interactive
* Author URI: https://github.com/alleyinteractive/wp-newsletter-builder
* Requires at least: 6.2
diff --git a/plugins/newsletter-from-post/components/sent-newsletter.tsx b/plugins/newsletter-from-post/components/sent-newsletter.tsx
deleted file mode 100644
index 5c5adc70..00000000
--- a/plugins/newsletter-from-post/components/sent-newsletter.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * SentNewsletter component
- */
-
-import {
- Button,
- PanelRow,
-} from '@wordpress/components';
-import type { WP_REST_API_Post } from 'wp-types'; // eslint-disable-line camelcase
-
-import { usePost } from '@alleyinteractive/block-editor-tools';
-
-interface SentNewsletterProps {
- postId: number;
-}
-
-interface Post extends WP_REST_API_Post { // eslint-disable-line camelcase
- meta: {
- nb_newsletter_subject?: string;
- };
-}
-
-function SentNewsletter({
- postId,
-}: SentNewsletterProps) {
- const post = usePost(postId, 'nb_newsletter') as Post;
- if (!post) {
- return null;
- }
-
- const {
- meta: {
- nb_newsletter_subject: title = '',
- } = {},
- link = '',
- } = post;
-
- return (
-
- {link && title ? (
-
- {title}
-
- ) : null}
-
- );
-}
-
-export default SentNewsletter;
diff --git a/plugins/newsletter-from-post/email-settings.tsx b/plugins/newsletter-from-post/email-settings.tsx
index 2c1c4ae1..77160da6 100644
--- a/plugins/newsletter-from-post/email-settings.tsx
+++ b/plugins/newsletter-from-post/email-settings.tsx
@@ -1,20 +1,23 @@
/**
* EmailSettings component
*/
-
-import { PluginSidebar } from '@wordpress/edit-post';
+import apiFetch from '@wordpress/api-fetch';
+import { createBlock, parse, serialize } from '@wordpress/blocks';
import { CheckboxControl, PanelBody, TextareaControl } from '@wordpress/components';
-import { __ } from '@wordpress/i18n';
import { useSelect } from '@wordpress/data';
+import { PluginSidebar } from '@wordpress/edit-post';
+import { useCallback, useEffect, useState } from '@wordpress/element';
+import { __ } from '@wordpress/i18n';
import { MultiSelect } from 'react-multi-select-component';
-import { createBlock, parse, serialize } from '@wordpress/blocks';
+// eslint-disable-next-line camelcase
+import { WP_REST_API_Post } from 'wp-types';
+
import NewsletterSpinner from '@/components/newsletterSpinner';
-import useNewsletterMeta from '@/hooks/useNewsletterMeta';
import useEmailLists, { Option } from '@/hooks/useEmailLists';
-import RequiredFields from '@/plugins/newsletter-from-post/components/required-fields';
+import useNewsletterMeta from '@/hooks/useNewsletterMeta';
+import RequiredFields from './components/required-fields';
import EmailTypeSelector from '../../components/emailTypeSelector';
-import SentNewsletter from './components/sent-newsletter';
interface CoreEditor {
getEditedPostAttribute: (attribute: string) => string;
@@ -29,6 +32,7 @@ interface Window {
}
function EmailSettings() {
+ const [fetched, setFetched] = useState(false);
const { meta, setMeta } = useNewsletterMeta();
const { emailListOptions, selectedEmailList } = useEmailLists();
const manualSubject = meta.subject !== '';
@@ -68,7 +72,7 @@ function EmailSettings() {
setMeta({ nb_breaking_list: listIds });
});
- const contentHandler = (html: string) => {
+ const contentHandler = useCallback((html: string) => {
const blocks = parse(html);
const postIndex = blocks.findIndex((block) => block.name === 'wp-newsletter-builder/post');
@@ -78,7 +82,7 @@ function EmailSettings() {
}, blocks[postIndex].innerBlocks);
setMeta({ nb_breaking_content: serialize(blocks) });
- };
+ }, [postId, setMeta]);
const areRequiredFieldsSet = meta.type === ''
|| meta.template === ''
@@ -87,6 +91,23 @@ function EmailSettings() {
|| (meta.preview === '' && postExcerpt === '')
|| meta.list.length === 0;
+ /**
+ * Update the template content when the template is changed.
+ */
+ useEffect(() => {
+ if (!meta.template || fetched) {
+ return;
+ }
+
+ apiFetch({
+ path: `/wp/v2/nb_template/${meta.template}?context=edit`,
+ }).then((response) => {
+ const { content } = response as WP_REST_API_Post; // eslint-disable-line camelcase
+ setFetched(true);
+ contentHandler(content.raw as string);
+ });
+ }, [contentHandler, fetched, meta.template]);
+
return (
- {meta.sentBreakingPostId ? (
-
- {meta.sentBreakingPostId.map((id: number) => (
-
- ))}
-
- ) : null}
);
}
diff --git a/single-nb_newsletter.php b/single-nb_newsletter.php
index 29663531..931732be 100644
--- a/single-nb_newsletter.php
+++ b/single-nb_newsletter.php
@@ -9,7 +9,7 @@
newrelic_disable_autorum();
}
-$wp_newsletter_builder_preview = get_post_meta( get_the_ID(), 'nb_newsletter_preview', true );
+$wp_newsletter_builder_preview = get_post_meta( get_queried_object_id(), 'nb_newsletter_preview', true );
?>
@@ -35,9 +35,16 @@
-
-
-
+
diff --git a/src/class-wp-newsletter-builder.php b/src/class-wp-newsletter-builder.php
index 4cfc0a99..47090e3b 100644
--- a/src/class-wp-newsletter-builder.php
+++ b/src/class-wp-newsletter-builder.php
@@ -161,7 +161,7 @@ public function on_after_insert_post( int $post_id ): void {
// Publish the post, which should kick off the other transition listener to send the email.
$breaking_post_id = wp_insert_post(
[
- 'post_title' => "Breaking News {$post->ID}",
+ 'post_title' => "Breaking News: {$post->post_title}",
// @phpstan-ignore-next-line cast to string is necessary.
'post_content' => (string) get_post_meta( $post->ID, 'nb_breaking_content', true ),
'post_status' => 'publish',