@chec/react-commercejs-hooks
Version:
ReactJS hooks for using Commerce.js with React projects
31 lines (30 loc) • 1.25 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 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;
;