File: /var/www/html/ielts-store/wp-content/plugins/automatewoo/admin/assets/src/presets/index.js
/**
* External dependencies
*/
import { useDispatch, useSelect } from '@wordpress/data';
import { __, sprintf } from '@wordpress/i18n';
import { Card } from '@wordpress/components';
/**
* Internal dependencies
*/
import { PRESETS_STORE_NAME } from '../data';
import './index.scss';
import PresetsList from './list';
import PresetsListPlaceholder from './list-placeholder';
import ListLoadError from './list-load-error';
import { getWorkflowEditUrl } from '../base/utils';
const PresetsTab = () => {
const {
presets,
getPresetsError,
getPresetsIsRequesting,
createWorkflowIsRequesting,
didCreateWorkflow,
} = useSelect( ( select ) => {
const presetsSelect = select( PRESETS_STORE_NAME );
return {
getPresetsError: presetsSelect.getError( 'getPresets' ),
getPresetsIsRequesting: presetsSelect.isRequesting( 'getPresets' ),
presets: presetsSelect.getPresets(),
createWorkflowIsRequesting: presetsSelect.isRequesting(
'createWorkflow'
),
didCreateWorkflow: presetsSelect.didCreateWorkflow(),
};
}, [] );
const { createWorkflow: createWorkflowAction } = useDispatch(
PRESETS_STORE_NAME
);
const { createNotice } = useDispatch( 'core/notices' );
let cardBody;
const createWorkflow = async ( presetName ) => {
try {
const workflowId = await createWorkflowAction( presetName );
// Redirect to workflow edit screen after workflow is created
// Append origin parameter too
window.location.href = getWorkflowEditUrl( workflowId, 'preset' );
} catch ( error ) {
createNotice(
'error',
__( "Error: The workflow couldn't be created." )
);
}
};
if ( getPresetsError ) {
const message = getPresetsError.message
? sprintf(
// translators: %s: The error message.
__( 'Error: %s', 'automatewoo' ),
getPresetsError.message
)
: null;
cardBody = <ListLoadError message={ message } />;
} else if ( getPresetsIsRequesting ) {
cardBody = <PresetsListPlaceholder />;
} else {
cardBody = (
<PresetsList
presets={ presets }
createWorkflow={ createWorkflow }
createWorkflowIsRequesting={
// Use didCreateWorkflow to keep buttons disabled while redirect is happening
createWorkflowIsRequesting || didCreateWorkflow
}
/>
);
}
return (
<Card size="medium" className="automatewoo-presets-list-card">
{ cardBody }
</Card>
);
};
export default PresetsTab;