diff --git a/assets/src/dashboard/parts/connected/OptimizationStatus.js b/assets/src/dashboard/parts/connected/OptimizationStatus.js index 55038278..4f037a56 100644 --- a/assets/src/dashboard/parts/connected/OptimizationStatus.js +++ b/assets/src/dashboard/parts/connected/OptimizationStatus.js @@ -1,29 +1,81 @@ -import { Icon } from '@wordpress/components'; +import { Icon, Button } from '@wordpress/components'; import { closeSmall, check } from '@wordpress/icons'; +import { useSelect } from '@wordpress/data'; +import { saveSettings } from '../../utils/api'; + +const OptimizationStatus = ({ settings, setSettings, setCanSave, setTab }) => { + + const { isLoading } = useSelect( select => { + const { isLoading } = select( 'optimole' ); + return { + isLoading: isLoading() + }; + }, []); + + const lazyloadEnabled = 'enabled' === settings?.lazyload; + const imageHandlingEnabled = 'enabled' === settings?.image_replacer; + + const directUpdate = ( option, value ) => { + if ( setCanSave && setSettings ) { + setCanSave( true ); + const data = { ...settings }; + + data[ option ] = value ? 'enabled' : 'disabled'; + + if ( 'scale' === option && data.scale && 'disabled' === data.scale && 'disabled' === data.lazyload ) { + data.lazyload = 'enabled'; + } + + if ( 'lazyload' === option && data.lazyload && 'disabled' === data.lazyload && 'disabled' === data.scale ) { + data.scale = 'enabled'; + } + + setSettings( data ); + + saveSettings( + data, + false, + false, + () => { + setCanSave( false ); + } + ); + } + }; + + const handleSettingsNavigation = ( ) => { + if ( setTab ) { + setTab( 'settings' ); + } + }; + + const { + optimization_status + } = optimoleDashboardApp.strings; -const OptimizationStatus = ({ settings }) => { - const userStatus = optimoleDashboardApp.user_status ? optimoleDashboardApp.user_status : 'inactive'; - const lazyloadEnabled = 'enabled' === settings?.lazyload && 'active' === userStatus ; - const imageHandlingEnabled = 'enabled' === settings?.image_replacer && 'active' === userStatus; const statuses = [ { + settingType: 'image_replacer', active: imageHandlingEnabled, - label: optimoleDashboardApp.strings.optimization_status.statusTitle1, - description: optimoleDashboardApp.strings.optimization_status.statusSubTitle1 + label: optimization_status.statusTitle1, + description: optimization_status.statusSubTitle1, + buttonText: imageHandlingEnabled ? optimization_status.manage : optimization_status.enable }, { - active: lazyloadEnabled, - label: optimoleDashboardApp.strings.optimization_status.statusTitle2, - description: optimoleDashboardApp.strings.optimization_status.statusSubTitle2 + settingType: 'lazyload', + active: lazyloadEnabled && imageHandlingEnabled, + label: optimization_status.statusTitle2, + description: optimization_status.statusSubTitle2, + buttonText: imageHandlingEnabled ? ( lazyloadEnabled ? optimization_status.disable : optimization_status.enable ) : '' }, { - active: lazyloadEnabled && 'disabled' === settings?.scale, - label: optimoleDashboardApp.strings.optimization_status.statusTitle3, - description: optimoleDashboardApp.strings.optimization_status.statusSubTitle3 + settingType: 'scale', + active: ( lazyloadEnabled && 'disabled' === settings?.scale ) && imageHandlingEnabled, + label: optimization_status.statusTitle3, + description: optimization_status.statusSubTitle3, + buttonText: imageHandlingEnabled ? ( ( lazyloadEnabled && 'disabled' === settings?.scale ) ? optimization_status.disable : optimization_status.enable ) : '' } - ].map( el => ({ - ...el, active: imageHandlingEnabled && el.active - }) ); + ]; return (
{status.description}
+{status.description}
+