HEX
Server: Apache/2.4.65 (Ubuntu)
System: Linux ielts-store-v2 6.8.0-1036-gcp #38~22.04.1-Ubuntu SMP Thu Aug 14 01:19:18 UTC 2025 x86_64
User: root (0)
PHP: 7.2.34-54+ubuntu20.04.1+deb.sury.org+1
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Upload Files
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;