UNPKG

@chec/react-commercejs-hooks

Version:

ReactJS hooks for using Commerce.js with React projects

31 lines (30 loc) 1.25 kB
"use strict"; 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 useLocationFromIp(ipAddress) { if (ipAddress === void 0) { ipAddress = ''; } var commerce = useCommerce_1.default(); var checkout = useCheckout_1.default(); var _a = react_1.useState(null), location = _a[0], setLocation = _a[1]; var previousIpRef = react_1.useRef(); react_1.useEffect(function () { if (!commerce || !checkout) { setLocation(null); return; } // Don't rerun the side effect if the location has already been fetched (and the IP address hasn't changed) if (location && previousIpRef.current === ipAddress) { return; } previousIpRef.current = ipAddress; commerce.checkout.getLocationFromIP(checkout.id, ipAddress).then(setLocation); }, [commerce, checkout, ipAddress]); return location; } exports.default = useLocationFromIp; ;