@chec/react-commercejs-hooks
Version:
ReactJS hooks for using Commerce.js with React projects
44 lines (43 loc) • 1.68 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 useCommerce_1 = __importDefault(require("../useCommerce"));
var useCheckout_1 = __importDefault(require("./useCheckout"));
function useShippingOptions(country, region) {
var _a = react_1.useState(null), options = _a[0], setOptions = _a[1];
var checkout = useCheckout_1.default();
var commerce = useCommerce_1.default();
var previousArgs = react_1.useRef(null);
react_1.useEffect(function () {
if (!commerce || !checkout || !country) {
return;
}
if (previousArgs.current) {
var prevCountry = previousArgs.current.country;
var prevRegion = previousArgs.current.region;
if (prevCountry !== country && prevRegion === region) {
setOptions(null);
previousArgs.current = { country: country, region: region };
return;
}
}
previousArgs.current = { country: country, region: region };
commerce.checkout.getShippingOptions(checkout.id, {
country: country,
region: region,
})
.then(setOptions)
.catch(function (_a) {
var statusCode = _a.statusCode;
// If doesnt exist, set to null.
if (statusCode === 404) {
setOptions(null);
}
});
}, [commerce, checkout, country, region]);
return options;
}
exports.default = useShippingOptions;