File "useDynamicContent.js"
Full path: /home/webcknlt/admissiontell.com/wp-content/plugins/generateblocks/src/extend/dynamic-content/hooks/useDynamicContent.js
File
size: 1.7 B
MIME-type: text/x-java
Charset: utf-8
Download Open Edit Advanced Editor &nnbsp; Back
import { __, sprintf } from '@wordpress/i18n';
import { useEntityProp } from '@wordpress/core-data';
import getContent from '../utils/getContent';
import usePostRecord from './usePostRecord';
function getExtraLoad( contentType, attributes ) {
const load = [];
let loadOptions = {};
if ( contentType.startsWith( 'author-' ) ) {
load.push( 'author' );
}
if ( 'terms' === contentType ) {
load.push( 'terms' );
loadOptions = Object.assign( {}, loadOptions, { taxonomy: attributes.termTaxonomy } );
}
if ( 'comments-number' === contentType ) {
load.push( 'comments' );
}
return { load, loadOptions };
}
export default ( attributes, name ) => {
const { postId, postType } = attributes;
if ( ! postType ) {
return __( 'Post type not selected.', 'generateblocks' );
}
if ( postType && ! postId ) {
return __( 'Post source not selected.', 'generateblocks' );
}
const [ siteFormat ] = useEntityProp( 'root', 'site', 'date_format' );
const { load, loadOptions } = getExtraLoad( attributes.dynamicContentType, attributes );
const { record, isLoading } = usePostRecord( postType, postId, load, loadOptions );
if ( 'generateblocks/image' === name && ! record ) {
return undefined;
}
if ( isLoading ) {
return __( 'Loading…', 'generateblocks' );
}
if ( ! record ) {
return sprintf(
// translators: %1$s: post ID, %2$s: post type.
__( 'Post of id #%1$s and post type %2$s was not found.', 'generateblocks' ),
postId,
postType
);
}
const contentAttributes = Object.assign( {}, attributes, { dateFormat: siteFormat } );
const forceEmptyMessage = 'generateblocks/image' === name;
return getContent( attributes.dynamicContentType, record, contentAttributes, forceEmptyMessage );
};