/* @jsx jsx */ /* eslint-disable functional/no-return-void */ // WordPress dependencies import { Button, ExternalLink } from '@wordpress/components'; import { useDispatch, useSelect } from '@wordpress/data'; import { _x } from '@wordpress/i18n'; // External dependencies import { css, jsx } from '@emotion/react'; // CONSTANTS const STORE = 'nelio-unlocker-importer/data'; // VIEW export const Actions = (): JSX.Element | null => { const isVisible = useSelect( ( select ): boolean => ! select( STORE ).isExportFilePending() ); const canConvert = useCanConvert(); const resultLink = useSelect( ( select ): string => select( STORE ).getResultLink() || '' ); const isConverting = useSelect( ( select ): boolean => select( STORE ).isConverting() ); const isConversionDone = useSelect( ( select ): boolean => select( STORE ).isConversionDone() ); const isConversionFailed = useSelect( ( select ): boolean => select( STORE ).isConversionFailed() ); const { convert, reset } = useDispatch( STORE ); if ( ! isVisible ) { return null; } //end if if ( isConversionFailed ) { return (
{ _x( 'Error!', 'text', 'nelio-unlocker' ) }
); } //end if if ( isConversionDone ) { return (
{ _x( 'Edit Page', 'text', 'nelio-unlocker' ) }
); } //end if return (
{ isConverting ? : }
); }; const ConversionFeedback = (): JSX.Element => { const logMessage = useLogMessage(); const isConverting = useSelect( ( select ): boolean => select( STORE ).isConverting() ); return
{ isConverting ? logMessage : '' }
; }; const BackButton = (): JSX.Element => { const { reset } = useDispatch( STORE ); return ( ); }; // HOOKS function useCanConvert(): boolean { return useSelect( ( select ): boolean => { const { isExportFileReady, areImportSettingsReady } = select( STORE ); return isExportFileReady() && areImportSettingsReady(); } ); } //end useCanConvert() function useLogMessage(): string { return useSelect( ( select ): string => select( STORE ).getLastLogMessage() || '' ); } //end useLogMessage() // STYLES const BUTTON_GROUP_STYLE = css( { alignItems: 'baseline', display: 'flex', gap: '0.5em', justifyContent: 'space-between', marginTop: '2em', } );