HEX
Server: Apache
System: Linux efa57bbe-abb1-400d-2985-3b056fbc2701.secureserver.net 6.1.147-1.el9.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jul 24 12:33:32 EDT 2025 x86_64
User: root (0)
PHP: 8.0.30.4
Disabled: NONE
Upload Files
File: /var/www/wp-content/plugins/image-optimization/modules/reviews/assets/src/hooks/use-storage.js
import { store as coreDataStore } from '@wordpress/core-data';
import { dispatch, useSelect } from '@wordpress/data';

const useStorage = () => {
	const save = async ( data ) => {
		try {
			return await dispatch( coreDataStore ).saveEntityRecord( 'root', 'site', data );
		} catch ( error ) {
			console.error( 'Storage save error:', error );
			return Promise.resolve();
		}
	};

	// Fetch site data with useSelect and check resolution status
	const get = useSelect(
		( select ) => {
			try {
				const coreDataSelect = select( coreDataStore );
				if ( ! coreDataSelect ) {
					return {
						data: { image_optimizer_review_data: {} },
						hasFinishedResolution: true,
					};
				}

				return {
					data: coreDataSelect.getEntityRecord( 'root', 'site' ) || { image_optimizer_review_data: {} },
					hasFinishedResolution: coreDataSelect.hasFinishedResolution( 'getEntityRecord', [ 'root', 'site' ] ),
				};
			} catch ( error ) {
				console.error( 'Storage get error:', error );
				return {
					data: { image_optimizer_review_data: {} },
					hasFinishedResolution: true,
				};
			}
		},
		[],
	);

	return {
		save,
		get,
	};
};

export default useStorage;