@woocommerce/data
Version:
WooCommerce Admin data store and utilities
32 lines (31 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useSelectWithRefresh = void 0;
/**
* External dependencies
*/
const element_1 = require("@wordpress/element");
const data_1 = require("@wordpress/data");
const useInterval = (callback, interval) => {
const savedCallback = (0, element_1.useRef)();
(0, element_1.useEffect)(() => {
savedCallback.current = callback;
}, [callback]);
(0, element_1.useEffect)(() => {
const handler = (...args) => {
if (savedCallback.current) {
savedCallback.current(...args);
}
};
if (interval !== null) {
const id = setInterval(handler, interval);
return () => clearInterval(id);
}
}, [interval]);
};
const useSelectWithRefresh = (mapSelectToProps, invalidationCallback, interval, dependencies) => {
const result = (0, data_1.useSelect)(mapSelectToProps, dependencies);
useInterval(invalidationCallback, interval);
return result;
};
exports.useSelectWithRefresh = useSelectWithRefresh;