/**
* WordPress dependencies
*/
import { Button, Dashicon } from '@safe-wordpress/components';
import { useSelect, useDispatch } from '@safe-wordpress/data';
/**
* Internal dependencies
*/
import './style.scss';
import { QualityAnalysisSummary } from '../summary';
import { QualityCheck } from './quality-check';
import { store as NC_EDIT_POST } from '../../../store';
export type QualityAnalysisProps = {
readonly isMetabox?: boolean;
};
export const QualityAnalysis = ( {
isMetabox,
}: QualityAnalysisProps ): JSX.Element => {
const [ areDetailsVisible ] = useDetailsControl();
const qualityCheckTypes = useQualityCheckTypes();
return (
{ areDetailsVisible && (
{ qualityCheckTypes.map( ( { name, icon } ) => (
) ) }
) }
);
};
const MetaboxControls = ( { enabled }: { enabled: boolean } ) => {
const isFullyIntegrated = useIsFullyIntegrated();
const [ areDetailsVisible, showDetails ] = useDetailsControl();
if ( ! enabled ) {
return null;
}
return (
{ isFullyIntegrated && (
) }
);
};
// =====
// HOOKS
// =====
const useIsFullyIntegrated = () =>
useSelect(
( select ) => select( NC_EDIT_POST ).isQualityAnalysisFullyIntegrated(),
[]
);
const useQualityCheckTypes = () =>
useSelect(
( select ) => select( NC_EDIT_POST ).getQualityCheckTypes(),
[]
);
const useDetailsControl = () => {
const panelName = 'post-quality-analysis';
const isFullyIntegrated = useIsFullyIntegrated();
const isQualityPanelOpen = useSelect(
( select ) => select( NC_EDIT_POST ).isPanelOpen( panelName ),
[ panelName ]
);
const visible = ! isFullyIntegrated || isQualityPanelOpen;
const { togglePanel } = useDispatch( NC_EDIT_POST );
const show = ( v: boolean ) => togglePanel( panelName, v );
return [ visible, show ] as const;
};