@chec/react-commercejs-hooks
Version:
ReactJS hooks for using Commerce.js with React projects
33 lines (32 loc) • 1.35 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = require("react");
var get_1 = __importDefault(require("lodash/get"));
var useCommerce_1 = __importDefault(require("./useCommerce"));
function useCommerceSwrFetcher() {
var commerce = useCommerce_1.default();
// [method, ...args]: [string, any[]]
return react_1.useCallback(function (argument) {
if (!commerce || Object.keys(commerce).length === 0) {
return function () { };
}
var method = argument;
var args = [];
if (Array.isArray(argument)) {
method = argument[0], args = argument.slice(1);
}
var feature = method.substring(0, method.lastIndexOf('.'));
if (!feature) {
throw new Error("The given method (" + method + ") is not part of a feature available in Commerce.js");
}
var func = get_1.default(commerce, method).bind(get_1.default(commerce, feature));
if (!func) {
throw new Error("The given method (" + method + ") is not supported by Commerce.js");
}
return func.apply(void 0, args);
}, [commerce]);
}
exports.default = useCommerceSwrFetcher;