diff --git a/projects/packages/publicize/_inc/hooks/use-connection-preview-data/index.ts b/projects/packages/publicize/_inc/hooks/use-connection-preview-data/index.ts index 9d5be8c9d41..d90e4c4bc52 100644 --- a/projects/packages/publicize/_inc/hooks/use-connection-preview-data/index.ts +++ b/projects/packages/publicize/_inc/hooks/use-connection-preview-data/index.ts @@ -103,17 +103,28 @@ export function useConnectionPreviewData( connection: Connection ) { return useMemo( () => { const useRendered = templatesEnabled && typeof rendered === 'string'; - const baseMessage = isPerNetworkMode - ? ( connection.message ?? globalMessage ).trim() - : globalMessage.trim(); + const hasConnectionMessage = connection.message !== undefined && connection.message !== ''; + let baseMessage: string; + if ( isPerNetworkMode ) { + if ( hasConnectionMessage ) { + baseMessage = connection.message ?? ''; + } else if ( templatesEnabled && connection.template ) { + baseMessage = connection.template; + } else { + baseMessage = globalMessage; + } + } else { + baseMessage = globalMessage; + } return { ...postData, - message: useRendered ? rendered : baseMessage, + message: useRendered ? rendered : baseMessage.trim(), media, }; }, [ connection.message, + connection.template, globalMessage, isPerNetworkMode, media, diff --git a/projects/packages/publicize/_inc/hooks/use-per-network-customization/index.ts b/projects/packages/publicize/_inc/hooks/use-per-network-customization/index.ts index c8c101f6662..da80548541c 100644 --- a/projects/packages/publicize/_inc/hooks/use-per-network-customization/index.ts +++ b/projects/packages/publicize/_inc/hooks/use-per-network-customization/index.ts @@ -50,11 +50,20 @@ export function usePerNetworkCustomization() { featuredImageMime, } ); - customizeConnectionById( connection.connection_id, { - message: postMeta.shareMessage || '', + /* + * Skip writing `message` when the connection has its own template — leaving + * `connection.message` undefined lets the editor and preview fall back to the + * connection template instead of overwriting it with the global share message. + */ + const updates: Parameters< typeof customizeConnectionById >[ 1 ] = { attached_media: attachedMedia, media_source: effectiveSource, - } ); + }; + if ( ! connection.template ) { + updates.message = postMeta.shareMessage || ''; + } + + customizeConnectionById( connection.connection_id, updates ); } } ); }, [ diff --git a/projects/packages/publicize/_inc/hooks/use-render-message-items/index.ts b/projects/packages/publicize/_inc/hooks/use-render-message-items/index.ts index 275769bb927..44a3f397f50 100644 --- a/projects/packages/publicize/_inc/hooks/use-render-message-items/index.ts +++ b/projects/packages/publicize/_inc/hooks/use-render-message-items/index.ts @@ -118,11 +118,19 @@ export function useRenderMessageItems(): RenderItem[] { const items = useMemo< RenderItem[] >( () => { return connections.map( connection => { - const message = ( connection.message ?? globalMessage ?? '' ).trim(); + const hasConnectionMessage = connection.message !== undefined && connection.message !== ''; + let raw: string; + if ( hasConnectionMessage ) { + raw = connection.message ?? ''; + } else if ( ctx.isPerNetworkMode ) { + raw = connection.template ?? globalMessage ?? ''; + } else { + raw = globalMessage ?? ''; + } return { id: connection.connection_id, network: connection.service_name ?? '', - message, + message: raw.trim(), is_social_post: connectionHasMedia( connection, ctx ), }; } ); diff --git a/projects/packages/publicize/changelog/social-453-per-network-template-render b/projects/packages/publicize/changelog/social-453-per-network-template-render new file mode 100644 index 00000000000..f00de0c0b04 --- /dev/null +++ b/projects/packages/publicize/changelog/social-453-per-network-template-render @@ -0,0 +1,4 @@ +Significance: patch +Type: fixed + +Social: honor per-connection message templates in the per-network preview pipeline and stop overwriting them when toggling per-network mode.